IRONSOFTWAREHOME

Comment valider les sommes de contrôle des codes QR et appliquer la tolérance aux défauts en C#

Curtis Chau
Curtis Chau
Updated: 6 mars 2026

Les pipelines de codes QR qui traitent des entrées du monde réel, notamment des étiquettes imprimées, des captures d'écran d'appareils photo ou des documents numérisés, rencontreront des symboles trop endommagés pour être décodés et des résultats qui réussissent le calcul de la somme de contrôle mais échouent à la validation métier.

La correction d'erreurs Reed-Solomon prend automatiquement en charge les dommages physiques survenant lors du décodage. Si un symbole ne peut pas être récupéré, la collection de résultats est vide plutôt que partielle. La validation au niveau de l'application est distincte et consiste à vérifier que la valeur décodée n'est pas vide, correspond au format attendu ou contient un URI valide avant tout traitement ultérieur.

Ce guide explique comment valider les sommes de contrôle des codes QR et appliquer des vérifications de tolérance aux pannes avec la bibliothèque IronQR.

Démarrage rapide : Valider les sommes de contrôle des codes QR

Lisez un code QR et vérifiez si le décodage a réussi : un résultat non vide signifie que la somme de contrôle Reed-Solomon a été validée.

  1. 1Install IronQR with NuGet Package Manager

    PM > Install-Package IronQR

  2. 2Copiez et exécutez cet extrait de code.

    using IronQr;
    using IronSoftware.Drawing;
    
    var reader = new QrReader();
    IEnumerable<QrResult> results = reader.Read(new QrImageInput("label.png"));
    
    if (!results.Any())
    {
        Console.WriteLine("No QR code detected or decoding failed.");
        return;
    }
    
    Console.WriteLine(results.First().Value);
    C#
  3. 3Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronQR dans votre projet dès aujourd'hui avec un essai gratuit
    arrow pointer

Validation des sommes de contrôle des codes QR

Les codes QR utilisent la correction d'erreurs Reed-Solomon pour détecter et réparer les dommages aux données encodées. Le niveau de correction (faible à 7 %, moyen à 15 %, quartile à 25 % ou élevé à 30 %) détermine le pourcentage de mots de code qui peuvent être perdus et être récupérés.

Du côté de la lecture, la validation de la somme de contrôle s'effectue en interne lors du décodage. La classe QrResult n'expose pas de propriété de confiance; Si un résultat existe dans la collection, la somme de contrôle a réussi. Si le décodage échoue, la collection est vide.

Entrée

Une étiquette produit code QR encodant https://ironsoftware.com/, générée avec une correction d'erreur moyenne, représentant une étiquette qui a pu être manipulée ou légèrement rayée pendant le transport.

Encodage du code QR (https://ironsoftware.com) utilisé comme entrée pour la validation de la somme de contrôle
using IronQr;
using IronSoftware.Drawing;

var reader = new QrReader();
IEnumerable<QrResult> results = reader.Read(new QrImageInput(AnyBitmap.FromFile("damaged-label.png")));

// Reed-Solomon decoding is pass/fail — presence in results means valid checksum
if (!results.Any())
{
    // Decoding failed entirely — damage exceeded the error correction capacity
    Console.WriteLine("QR code could not be decoded. Consider re-scanning or using a higher error correction level at generation time.");
    return;
}

foreach (QrResult result in results)
{
    // Decoded successfully — validate the content matches expected format
    if (string.IsNullOrWhiteSpace(result.Value))
    {
        Console.WriteLine("QR decoded but produced an empty value.");
        continue;
    }

    Console.WriteLine($"Valid QR: {result.Value}");
}
C#

Sortie

La console affiche la valeur décodée https://ironsoftware.com/, confirmant que le décodage Reed-Solomon a réussi et que le contenu a été récupéré intact.

Sortie du terminal affichant le code QR décodé : https://ironsoftware.com

Pour une meilleure résistance aux dommages physiques, générez des codes QR avec un niveau de correction d'erreur plus élevé. Le niveau élevé permet de récupérer jusqu'à 30 % de pertes de données au prix d'un symbole plus grand.


Gestion de la prise en compte du format lors de la lecture des codes QR

IronQR prend en charge trois formats d'encodage QR : QR standard, Micro QR et Micro QR rectangulaire. Le scanner détecte automatiquement le format pendant la lecture. Après le passage au scanner, le champ QrResult.QrType fournit le format détecté sous forme de valeur énumérée.

Pour les PDF, utilisez QrPdfInput au lieu de QrImageInput. Le mode de numérisation détermine l'équilibre entre rapidité et précision : Auto combine la détection par apprentissage automatique avec une numérisation classique, OnlyDetectionModel utilise uniquement le modèle ML pour un traitement plus rapide, et OnlyBasicScan n'utilise pas du tout le ML pour les images prétraitées de haute qualité.

Entrée

Une étiquette de produit PNG (à gauche) et une capture d'écran JPEG (à droite), démontrant la lecture prenant en compte le format sur deux types d'entrée courants.

QR code product-label.png utilisé comme entrée pour une lecture sensible au format

Étiquette du produit (PNG)

QR code JPEG camera-capture.jpg simulant une capture par appareil photo

Capture d'écran (JPEG)

using IronQr;
using IronSoftware.Drawing;
using IronQr.Enum;

// Read from an image file with ML + classic scan (default)
var reader = new QrReader();
IEnumerable<QrResult> results = reader.Read(new QrImageInput(AnyBitmap.FromFile("product-label.png")));

foreach (QrResult result in results)
{
    // Inspect the detected QR format
    Console.WriteLine($"Format: {result.QrType}");   // QRCode, MicroQRCode, or RMQRCode
    Console.WriteLine($"Value:  {result.Value}");

    // Url is non-null only if Value is a valid URI
    if (result.Url != null)
    {
        Console.WriteLine($"URI:    {result.Url.AbsoluteUri}");
    }

    // Corner coordinates for positional context
    Console.WriteLine($"Corners: {result.Points.Length} points detected");
}

// Read from a bitmap with ML-only mode for faster throughput
var bitmap = AnyBitmap.FromFile("camera-capture.jpg");
var fastResults = reader.Read(new QrImageInput(bitmap, QrScanMode.OnlyDetectionModel));
C#

Sortie

La console affiche le format détecté, la valeur décodée, l'URI résolue et le nombre de coins de l'étiquette du produit, suivis du nombre de résultats de l'analyse rapide pour la capture de la caméra.

Sortie du terminal affichant : Format : QRCode, Valeur : https://ironsoftware.com/product, URI, et Coins : 4 points détectés

Le champ QrType est utile lorsque l'application nécessite un format spécifique. Par exemple, un système d'entrepôt qui ne produit que des codes QR standard peut filtrer les détections inattendues de Micro QR ou de Micro QR rectangulaires, qui peuvent indiquer du bruit ou des étiquettes non pertinentes. Chaque format possède des caractéristiques de capacité distinctes : le QR standard prend en charge jusqu'à 7 089 caractères numériques, le Micro QR jusqu'à 35 et le Micro QR rectangulaire offre un format rectangulaire pour un espace d'étiquette limité.


Application de contrôles de valeurs nulles aux résultats des codes QR

QrReader.Read renvoie une collection vide si aucun code QR n'est trouvé; il ne renvoie jamais null. Toutefois, les propriétés individuelles des résultats nécessitent toujours une validation. Par exemple, Value peut être vide, et Url renvoie null si la chaîne décodée n'est pas un URI valide.

Un modèle de validation robuste vérifie trois aspects : le nombre de collections, l'intégrité des valeurs et la validité du type ou de l'URI avant de transmettre les données à un autre système.

Entrée

Une image blanche vierge sans code QR, représentant une page de document dans un lot mixte où certaines pages ne comportent aucune étiquette lisible par machine.

Image blanche vierge sans code QR utilisée comme entrée pour la démonstration de vérification de valeur nulle
using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using System.Collections.Generic;
using System.Linq;

public static class QrValidator
{
    public static List<QrResult> GetValidResults(
        string imagePath,
        QrEncoding? expectedFormat = null)
    {
        var reader = new QrReader();
        IEnumerable<QrResult> results = reader.Read(new QrImageInput(AnyBitmap.FromFile(imagePath)));

        // Guard: no QR codes detected
        if (!results.Any())
            return new List<QrResult>();

        return results
            .Where(r => !string.IsNullOrWhiteSpace(r.Value))
            .Where(r => expectedFormat == null || r.QrType == expectedFormat)
            .ToList();
    }
}

// Usage — only accept standard QR codes with non-empty values
var validated = QrValidator.GetValidResults(
    "shipping-manifest.png",
    expectedFormat: QrEncoding.QRCode);

if (validated.Count == 0)
{
    Console.WriteLine("No valid QR codes found for processing.");
    return;
}

foreach (var qr in validated)
{
    // Safe for downstream: value is non-empty, format is verified
    SendToInventoryApi(qr.Value, qr.Url?.AbsoluteUri);
}
C#

Sortie

La console affiche la réponse de validation vide : aucun code QR n'a été détecté, la collection est donc vide et aucune donnée n'est transmise au traitement ultérieur.

Affichage du terminal : " Aucun code QR valide n'a été trouvé pour le traitement. "

Le validateur renvoie une liste vide (jamais null), éliminant le besoin de vérifier la nullité à l'appel. Le paramètre optionnel expectedFormat agit comme un filtre de format, permettant au code appelant de recevoir uniquement les résultats qui correspondent au type de format attendu. La propriété Url utilise l'opérateur null-conditional pour traiter en toute sécurité les charges utiles URI et non-URI.

Pour les flux de travail asynchrones, appliquez les mêmes modèles de validation à ReadAsync : attendez l'appel et utilisez des vérifications identiques sur la collection résultante.


Lecture supplémentaire

Consultez les options de licence lorsque vous serez prêt pour la production.

Cliquez ici pour télécharger le projet complet d'application console ChecksumFaultToleranceTest.

Questions Fréquemment Posées

Quel est le but de valider les sommes de contrôle des codes QR en C# ?

La validation des sommes de contrôle des codes QR en C# garantit l'intégrité des données en vérifiant que les données encodées dans le code QR sont exactes et n'ont pas été corrompues durant la transmission ou la lecture. IronQR peut aider dans ce processus en fournissant une vérification de somme de contrôle fiable.

Comment IronQR gère-t-il la détection du format des codes QR ?

IronQR offre des capacités robustes pour détecter divers formats de codes QR, assurant la compatibilité avec un large éventail de normes de codes QR. Cette fonctionnalité aide les développeurs à gérer efficacement les codes QR dans leurs applications C#.

Quel rôle joue la correction d'erreur de Reed-Solomon dans la validation des codes QR ?

La correction d'erreur Reed-Solomon est une méthode utilisée dans les codes QR pour corriger les erreurs qui se produisent durant la lecture. IronQR utilise cette technique pour améliorer la tolérance aux pannes, lui permettant de lire et de valider avec précision les codes QR même avec un certain niveau de distorsion ou de dommage.

IronQR peut-il appliquer des modèles sans danger pour les valeurs nulles lors du travail avec des codes QR ?

Oui, IronQR peut appliquer des modèles sans danger pour les valeurs nulles, ce qui aide à prévenir les erreurs de référence nulles lors du traitement des données de code QR. Cela garantit que votre application peut traiter les codes QR de manière plus fiable et efficace.

Pourquoi la tolérance aux pannes est-elle importante dans le traitement des codes QR ?

La tolérance aux pannes est cruciale car elle permet aux systèmes de traitement des codes QR de gérer les erreurs et les écarts sans défaillir. Les capacités de tolérance aux pannes d'IronQR garantissent que même les codes QR partiellement endommagés ou obscurcis peuvent être lus avec précision.

Quels sont les avantages d'utiliser IronQR pour la validation des codes QR en C# ?

IronQR offre plusieurs avantages pour la validation des codes QR, y compris une haute précision, le support de plusieurs formats de codes QR et des mécanismes de correction des erreurs intégrés, ce qui en fait un choix idéal pour les développeurs travaillant avec des codes QR en C#.

Comment IronQR améliore-t-il la précision de la lecture de code QR ?

IronQR améliore la précision de la lecture en utilisant des algorithmes avancés pour détecter et décoder les codes QR, ainsi qu'en appliquant des méthodes de correction des erreurs comme Reed-Solomon pour gérer toute corruption de données lors de la lecture.

What is the role of the `QrResult` class in IronQR?

The `QrResult` class in IronQR represents decoded results from QR code reading. It provides properties like the decoded value, detected QR type, and optionally, a URI if the value is a valid URL.

How does IronQR handle physical damage to QR codes?

IronQR uses Reed-Solomon error correction to automatically correct minor damages in QR codes during decoding, making it more resilient to physical damage and ensuring data integrity.

Can IronQR validate QR codes asynchronously?

Yes, IronQR supports asynchronous workflows. You can use `ReadAsync` to perform non-blocking QR code reading while applying similar validation patterns on the results.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Prêt à commencer?

Nuget Downloads 74,386Version :2026.9vient de sortir

Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise
Bibliothèque C# NuGet pour PDF
Installer avec NuGet

Version : 2026.9

PM > Install-Package IronQR
nuget.org/packages/IronQR/
  1. Dans l'explorateur de solutions, faites un clic droit sur Références, Gestion des packages NuGet
  2. Sélectionnez Parcourir et recherchez « IronQR »
  3. Sélectionnez le package et installez
C# PDF DLL
Télécharger DLL

Version : 2026.9

  1. Téléchargez et décompressez IronQR à un emplacement tel que ~/Libs dans votre répertoire de Solution
  2. Dans Visual Studio Solution Explorer, cliquez avec le bouton droit sur Références. Sélectionnez Parcourir, « IronQR.dll »

Licences à partir de 749 $

Vous avez une question ? Contactez notre équipe de développement.

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise