IRONSOFTWAREHOME

Wie man QR-Code-Prüfsummen validiert und Fehlertoleranz in C# anwendet

Curtis Chau
Curtis Chau
Updated: 6. März 2026

Bei der Verarbeitung von QR-Code-Pipelines, die reale Eingaben wie gedruckte Etiketten, Kameraaufnahmen oder gescannte Dokumente verarbeiten, stoßen wir auf Symbole, die zu beschädigt sind, um dekodiert zu werden, und auf Ergebnisse, die zwar die Prüfsumme bestehen, aber die geschäftliche Validierung nicht bestehen.

Die Reed-Solomon-Fehlerkorrektur behebt automatisch physikalische Schäden während der Dekodierung. Kann ein Symbol nicht wiederhergestellt werden, ist die Ergebnismenge leer und nicht nur teilweise. Die Validierung auf Anwendungsebene ist separat und beinhaltet die Prüfung, ob der dekodierte Wert nicht leer ist, dem erwarteten Format entspricht oder eine gültige URI enthält, bevor er weiterverarbeitet wird.

Dieser Leitfaden erklärt, wie man QR-Code-Prüfsummen validiert und Fehlerüberprüfungsvorgänge mit der IronQR-Bibliothek durchführt.

Schnellstart: QR-Code-Prüfsummen validieren

Lesen Sie einen QR-Code und prüfen Sie, ob die Dekodierung erfolgreich war: Ein nicht leeres Ergebnis bedeutet, dass die Reed-Solomon-Prüfsumme bestanden wurde.

  1. 1Install IronQR with NuGet Package Manager

    PM > Install-Package IronQR

  2. 2Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    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. 3Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute, IronQR in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion
    arrow pointer

Validierung von QR-Code-Prüfsummen

QR-Codes verwenden die Reed-Solomon-Fehlerkorrektur, um Schäden an den codierten Daten zu erkennen und zu beheben. Der Korrekturgrad (Niedrig bei 7 %, Mittel bei 15 %, Quartil bei 25 % oder Hoch bei 30 %) bestimmt den Prozentsatz der Codewörter, die verloren gehen und dennoch wiederhergestellt werden können.

Auf der Leseseite erfolgt die Prüfsummenvalidierung intern während der Dekodierung. Die QrResult-Klasse stellt keine Eigenschaft für das Vertrauen bereit; Wenn in der Sammlung ein Ergebnis vorhanden ist, wurde die Prüfsumme erfolgreich berechnet. Schlägt die Dekodierung fehl, ist die Sammlung leer.

Eingabe

Ein QR-Code-Produktetikett kodiert https://ironsoftware.com/, erzeugt mit mittlerer Fehlerkorrektur und repräsentiert ein Etikett, das möglicherweise im Transport behandelt oder leicht zerkratzt wurde.

QR-Code-Codierung (https://ironsoftware.com) als Eingabe für die Prüfsummenvalidierung verwendet
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#

Ausgabe

Die Konsole zeigt den dekodierten Wert https://ironsoftware.com/ an, was bestätigt, dass die Reed-Solomon-Dekodierung erfolgreich war und die Nutzlast intakt wiederhergestellt wurde.

Terminalausgabe mit dem dekodierten QR-Code: https://ironsoftware.com

Um eine höhere Widerstandsfähigkeit gegenüber physischen Beschädigungen zu erzielen, sollten QR-Codes mit einem höheren Fehlerkorrekturniveau generiert werden. Die hohe Auflösung gleicht Datenverluste von bis zu 30 % aus, erfordert jedoch ein größeres Symbol.


Umgang mit Formatbewusstsein beim Lesen von QR-Codes

IronQR unterstützt drei QR-Codierungsformate: Standard-QR, Micro-QR und Rechteckiger Micro-QR. Der Scanner erkennt das Format automatisch während des Lesevorgangs. Nach dem Scannen liefert das QrResult.QrType-Feld das erkannte Format als einen Enum-Wert.

Für PDFs verwenden Sie QrPdfInput anstelle von QrImageInput. Der Scanmodus bestimmt das Gleichgewicht zwischen Geschwindigkeit und Genauigkeit: Auto kombiniert maschinelles Lernen zur Erkennung mit einem klassischen Scan, OnlyDetectionModel verwendet nur das ML-Modell für eine schnellere Verarbeitung und OnlyBasicScan überspringt ML vollständig für hochwertige vorverarbeitete Bilder.

Eingabe

Ein PNG-Produktetikett (links) und eine JPEG-Kameraaufnahme (rechts) demonstrieren das formatbewusste Lesen zweier gängiger Eingabetypen.

product-label.png QR-Code, der als Eingabe für formatbewusstes Lesen verwendet wird

Produktetikett (PNG)

camera-capture.jpg JPEG-QR-Code, der eine Kameraaufnahme simuliert

Kameraaufnahme (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#

Ausgabe

Die Konsole zeigt das erkannte Format, den dekodierten Wert, die aufgelöste URI und die Eckpunktzahl für das Produktetikett an, gefolgt von der Anzahl der Schnellscan-Ergebnisse für die Kameraaufnahme.

Terminalausgabe mit folgenden Angaben: Format: QR-Code, Wert: https://ironsoftware.com/product, URI, Ecken: 4 erkannt

Das QrType-Feld ist hilfreich, wenn die Anwendung ein bestimmtes Format erfordert. Ein Lagersystem, das beispielsweise nur Standard-QR-Codes erzeugt, kann unerwartete Micro-QR- oder Rectangular-Micro-QR-Erkennungen herausfiltern, die auf Störungen oder nicht zugehörige Etiketten hinweisen könnten. Jedes Format hat unterschiedliche Kapazitätseigenschaften: Standard-QR unterstützt bis zu 7.089 numerische Zeichen, Micro-QR bis zu 35, und Rectangular Micro QR bietet einen rechteckigen Formfaktor für begrenzten Etikettenplatz.


Anwenden von Nullprüfungen auf QR-Code-Ergebnisse

QrReader.Read gibt eine leere Sammlung zurück, wenn keine QR-Codes gefunden werden; es gibt niemals null zurück. Die einzelnen Ergebniseigenschaften bedürfen jedoch noch der Validierung. Zum Beispiel kann Value leer sein, und Url gibt null zurück, wenn der dekodierte String kein gültiger URI ist.

Ein robustes Validierungsmuster prüft drei Aspekte: die Anzahl der Datensätze, die Integrität der Werte und die Gültigkeit des Datentyps oder der URI, bevor die Daten an ein anderes System weitergegeben werden.

Eingabe

Ein leeres weißes Bild ohne QR-Code, das eine Dokumentenseite in einem gemischten Stapel darstellt, bei dem einige Seiten keine maschinenlesbare Kennzeichnung tragen.

Ein leeres weißes Bild ohne QR-Code wird als Eingabe für eine Nullprüfungsdemonstration verwendet.
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#

Ausgabe

In der Konsole wird die leere Ergebnisantwort des Validators angezeigt: Es wurden keine QR-Codes erkannt, daher ist die Sammlung leer und es werden keine Daten zur Weiterverarbeitung weitergeleitet.

Terminalausgabe mit der Meldung: Es wurden keine gültigen QR-Codes zur Verarbeitung gefunden.

Der Validator gibt eine leere Liste (niemals null) zurück, was die Notwendigkeit einer Null-Prüfung an der Aufrufstelle eliminiert. Der optionale expectedFormat-Parameter fungiert als Format-Gate, sodass der aufgerufene Code nur Ergebnisse erhält, die dem erwarteten Format-Typ entsprechen. Die Url-Eigenschaft verwendet den null-bedingten Operator, um sowohl URI- als auch Nicht-URI-Nutzlasten sicher zu verarbeiten.

Für asynchrone Workflows wenden Sie die gleichen Validierungsmuster auf ReadAsync an: warten Sie den Aufruf ab und verwenden Sie identische Überprüfungen für die resultierende Sammlung.


Weiterführende Literatur

Lizenzoptionen können Sie einsehen , sobald Sie bereit für die Produktion sind.

Klicken Sie hier, um das vollständige Konsolenanwendungsprojekt ChecksumFaultToleranceTest herunterzuladen .

Häufig gestellte Fragen

Was ist der Zweck der Validierung von QR-Code-Prüfsummen in C#?

Die Validierung von QR-Code-Prüfsummen in C# stellt die Datenintegrität sicher, indem überprüft wird, dass die im QR-Code codierten Daten korrekt sind und während der Übertragung oder des Scanns nicht beschädigt wurden. IronQR kann diesen Prozess unterstützen, indem es zuverlässige Prüfsummen-Verifikation bereitstellt.

Wie erkennt IronQR QR-Code-Formate?

IronQR bietet robuste Fähigkeiten zur Erkennung verschiedener QR-Code-Formate und stellt die Kompatibilität mit einer Vielzahl von QR-Code-Standards sicher. Diese Funktion hilft Entwicklern, QR-Codes effizient in ihren C#-Anwendungen zu verarbeiten.

Welche Rolle spielt die Reed-Solomon-Fehlerkorrektur bei der QR-Code-Validierung?

Die Reed-Solomon-Fehlerkorrektur ist eine Methode, die in QR-Codes verwendet wird, um während des Scannens auftretende Fehler zu korrigieren. IronQR nutzt diese Technik, um die Fehlertoleranz zu verbessern und ermöglicht es so, QR-Codes selbst bei Verformungen oder Beschädigungen genau zu lesen und zu validieren.

Kann IronQR nullsichere Muster anwenden, wenn es mit QR-Codes arbeitet?

Ja, IronQR kann nullsichere Muster anwenden, was hilft, Nullreferenzfehler bei der Verarbeitung von QR-Code-Daten zu verhindern. Dies stellt sicher, dass Ihre Anwendung QR-Codes zuverlässiger und effizienter verarbeiten kann.

Warum ist Fehlertoleranz bei der QR-Code-Verarbeitung wichtig?

Fehlertoleranz ist entscheidend, da sie es QR-Code-Verarbeitungssystemen ermöglicht, Fehler und Abweichungen zu handhaben, ohne zu versagen. Die Fehlertoleranzfähigkeiten von IronQR stellen sicher, dass selbst teilweise beschädigte oder verdeckte QR-Codes genau gelesen werden können.

Welche Vorteile bietet die Verwendung von IronQR zur QR-Code-Validierung in C#?

IronQR bietet mehrere Vorteile für die QR-Code-Validierung, einschließlich hoher Genauigkeit, Unterstützung für mehrere QR-Code-Formate und integrierte Fehlerkorrekturmechanismen, die es zu einer idealen Wahl für Entwickler machen, die mit QR-Codes in C# arbeiten.

Wie verbessert IronQR die QR-Code-Lesegenauigkeit?

IronQR verbessert die Lesegenauigkeit, indem es fortschrittliche Algorithmen zur Erkennung und Dekodierung von QR-Codes verwendet sowie Fehlerkorrekturmethoden wie Reed-Solomon anwendet, um Datenbeschädigungen während des Scannens zu bewältigen.

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
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.

...
Weiterlesen

Bereit anzufangen?

Nuget Downloads 74,386Version:2026.9gerade veröffentlicht

Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.
C# NuGet-Bibliothek für PDF
Installation mit NuGet

Version: 2026.9

PM > Install-Package IronQR
nuget.org/packages/IronQR/
  1. Rechtsklick auf Referenzen, NuGet-Pakete verwalten
  2. Durchsuchen und nach 'IronQR' suchen
  3. Paket auswählen und installieren
C# PDF DLL
Download DLL

Version: 2026.9

  1. Laden Sie IronQR herunter und entpacken Sie es an einem Ort wie ~/Libs in Ihrem Solution-Verzeichnis
  2. Klicken Sie im Visual Studio Lösungsexplorer mit der rechten Maustaste auf Referenzen. Wählen Sie Durchsuchen, "IronQR.dll"

Lizenzen ab $999

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
AWS-Logo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Azure (WebApps, Funktionen v3)
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Azure (WebApps, Funktionen v3)
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.