Wie man Barcode-Prüfsummen validiert und formatbewusstes Lesen in C# verwendet

This article was translated from English: Does it need improvement?
Translated
View the article in English

Barcode-Prüfsummen helfen, Substitutionsfehler zu erkennen. Beispielsweise kann eine einzige vertauschte Ziffer in einem EAN-13-Etikett dazu führen, dass ein Paket im falschen Lager landet. Formatbewusstes Lesen bietet eine zusätzliche Validierungsebene, indem der Decoder auf erwartete Symbologien beschränkt wird. Dieser Ansatz reduziert Fehlalarme durch Hintergrundrauschen und verkürzt die Scanzeit, indem unnötige Formatdetektoren übersprungen werden.

IronBarcode führt während der Dekodierung automatisch eine Prüfsummenverifizierung durch. Der Prüfziffernalgorithmus jeder Symbologie wird standardmäßig ausgeführt, und fehlerhafte Barcodes werden verworfen, bevor Ergebnisse zurückgegeben werden. Die Eigenschaft BarcodeReaderOptions.ExpectBarcodeTypes beschränkt die Lesevorgänge auf bestimmte Formate, während RemoveFalsePositive einen zweiten Scan für mehrdeutige Lesevorgänge hinzufügt.

Dieser Leitfaden erklärt, wie man Barcode-Prüfsummen validiert, Lesevorgänge auf erwartete Formate beschränkt und beide Techniken mithilfe von BarcodeReaderOptions zu einem mehrschichtigen Qualitätsgate kombiniert.

Schnellstart: Barcodes mit Prüfsummen- und Formatbeschränkungen validieren

Konfigurieren Sie BarcodeReaderOptions mit ExpectBarcodeTypes und RemoveFalsePositive, um Lesevorgänge auf erwartete Symbologien mit automatischer Prüfsummenverifizierung zu beschränken.

:path=/static-assets/barcode/content-code-examples/how-to/checksum-and-format-validation/quickstart.cs
using IronBarCode;

// Format-constrained read with false-positive removal.
// Limit the decoder to EAN-13 and Code128; checksums are
// validated automatically and failures are silently discarded.
var options = new BarcodeReaderOptions
{
    ExpectBarcodeTypes  = BarcodeEncoding.EAN13 | BarcodeEncoding.Code128,
    RemoveFalsePositive = true,
    Speed               = ReadingSpeed.Balanced
};

BarcodeResults results = BarcodeReader.Read("label.png", options);
Imports IronBarCode

' Format-constrained read with false-positive removal.
' Limit the decoder to EAN-13 and Code128; checksums are
' validated automatically and failures are silently discarded.
Dim options As New BarcodeReaderOptions With {
    .ExpectBarcodeTypes = BarcodeEncoding.EAN13 Or BarcodeEncoding.Code128,
    .RemoveFalsePositive = True,
    .Speed = ReadingSpeed.Balanced
}

Dim results As BarcodeResults = BarcodeReader.Read("label.png", options)
$vbLabelText   $csharpLabel

Wie validiert man Barcode-Prüfsummen?

IronBarcode validiert Prüfsummen während der Dekodierung gemäß der Spezifikation jeder Symbologie. Beim Lesen eines EAN-13-Barcodes wird beispielsweise die Mod10-Prüfziffer aus den ersten 12 Ziffern berechnet und mit der 13. Ziffer verglichen. Stimmen die Ziffern nicht überein, wird der Barcode stillschweigend zurückgewiesen und erscheint nicht in der Sammlung BarcodeResults. Dieser Ansatz gilt für alle Formate mit obligatorischer Prüfziffer, einschließlich UPC-A, UPC-E, EAN-8, Code128, ITF und andere.

Dieses implizite Modell unterscheidet sich von Bibliotheken, die eine explizite Umschaltung ermöglichen. Die folgende Tabelle vergleicht die beiden Ansätze:

Vergleich von Prüfsummenvalidierungsmodellen: IronBarcode vs. Aspose.BarCode
AspektIronBarcodeAspose.BarCode
ValidierungsauslöserAutomatisch; wird bei jeder Dekodierung ausgeführt.Explizit: PrüfsummeValidation.On / Off / Default
Entwickleraktion erforderlichKeine; ungültige Barcodes werden von den Ergebnissen ausgeschlossen.Setzen Sie BarcodeSettings.PrüfsummeValidation vor dem Lesen.
Prüfsumme deaktiviertNicht offengelegt; Prüfsummen werden für obligatorische Formate immer erzwungen.Ja; PrüfsummeValidation.Off überspringt die Überprüfung.
Optionale Prüfsummenformate (Code39)Verwendet Confidence + RemoveFalsePositive , um minderwertige Lesevorgänge herauszufiltern.Aktivieren Sie die Prüfsummeme explizit mit EnablePrüfsumme.Ja
AusfallverhaltenBarcode wurde stillschweigend aus den Ergebnissen entfernt.Der Barcode kann mit einer separaten Prüfsumme zur manuellen Überprüfung angezeigt werden.

Bei Symbologien mit optionalen Prüfsummen, wie z. B. Code39, verwendet die Bibliothek eine Konfidenzbewertung und RemoveFalsePositive anstelle eines Prüfsummen-Umschalters.

Eingabe

Ein Code128-Lagerregaletikett (Erfolgspfad) und ein leeres Bild ohne Barcode (Fehlerpfad).

Code128 barcode encoding RACK-A1-LOT-7382 used as the warehouse rack scan input

warehouse-rack.png (Erfolgspfad)

Blank white image with no barcode to trigger the empty result path

blank-no-barcode.png (Fehlerpfad – kein Barcode vorhanden)

:path=/static-assets/barcode/content-code-examples/how-to/checksum-and-format-validation/checksum-confidence.cs
using IronBarCode;

// Constrain reads to 1D formats and enable secondary verification.
// ConfidenceThreshold rejects decodes where the ML detector falls below 85%,
// acting as a quality gate for optional-checksum symbologies like Code39.
var options = new BarcodeReaderOptions
{
    ExpectBarcodeTypes  = BarcodeEncoding.AllOneDimensional,
    RemoveFalsePositive = true,
    ConfidenceThreshold = 0.85,
    Speed               = ReadingSpeed.Detailed
};

BarcodeResults results = BarcodeReader.Read("warehouse-rack.png", options);

foreach (BarcodeResult result in results)
{
    // Each result has passed checksum validation (mandatory formats)
    // and the 85% confidence threshold, so no additional filtering is needed.
    Console.WriteLine($"[{result.BarcodeType}] {result.Value}  page={result.PageNumber}");
}

if (results.Count == 0)
{
    Console.Error.WriteLine("No valid barcodes found. Possible causes:");
    Console.Error.WriteLine("  - Check digit mismatch (barcode silently rejected)");
    Console.Error.WriteLine("  - Confidence below 85% threshold");
    Console.Error.WriteLine("  - Format not in ExpectBarcodeTypes");
}
Imports IronBarCode

' Constrain reads to 1D formats and enable secondary verification.
' ConfidenceThreshold rejects decodes where the ML detector falls below 85%,
' acting as a quality gate for optional-checksum symbologies like Code39.
Dim options As New BarcodeReaderOptions With {
    .ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional,
    .RemoveFalsePositive = True,
    .ConfidenceThreshold = 0.85,
    .Speed = ReadingSpeed.Detailed
}

Dim results As BarcodeResults = BarcodeReader.Read("warehouse-rack.png", options)

For Each result As BarcodeResult In results
    ' Each result has passed checksum validation (mandatory formats)
    ' and the 85% confidence threshold, so no additional filtering is needed.
    Console.WriteLine($"[{result.BarcodeType}] {result.Value}  page={result.PageNumber}")
Next

If results.Count = 0 Then
    Console.Error.WriteLine("No valid barcodes found. Possible causes:")
    Console.Error.WriteLine("  - Check digit mismatch (barcode silently rejected)")
    Console.Error.WriteLine("  - Confidence below 85% threshold")
    Console.Error.WriteLine("  - Format not in ExpectBarcodeTypes")
End If
$vbLabelText   $csharpLabel

Ausgabe

Erfolgsweg

Konsolenausgabe mit der Meldung, dass Code128 RACK-A1-LOT-7382 oberhalb des Konfidenzschwellenwerts dekodiert wurde.

Der Barcode des Lagerregals wurde auf Seite 0 als RACK-A1-LOT-7382 zurückgegeben. Er überschritt die 85%-Konfidenzschwelle und bestand die Prüfsummenvalidierung, daher wird er in BarcodeResults angezeigt.

Fehlerpfad

Konsolenausgabe mit der Meldung: WARNUNG: Für die Eingabe

Durch die Erhöhung des Wertes von ConfidenceThreshold über den Standardwert von 0,7 wird diese Barriere für optionale Prüfsummensymbologien wie Code39 weiter verschärft.

Nachdem die Prüfsummenvalidierung abgedeckt ist, besteht der nächste Schritt darin, den Leser auf die Barcode-Formate zu beschränken, die Ihre Pipeline erwartet.


Wie verwendet man formatbasiertes Barcode-Lesen?

Der Enum-Typ BarcodeEncoding ist ein Flag-Typ, der es ermöglicht, mehrere Formate mithilfe des bitweisen OR-Operators zu kombinieren. Die Einstellung ExpectBarcodeTypes beschränkt den Reader auf diese Formate und überspringt die Erkennung anderer Formate.

Gängige Barcode-Codierungswerte
WertKategorieBeschreibungPrüfsumme
BarcodeEncoding.AllMetaAlle unterstützten Formate (Standardverhalten)Pro Format
BarcodeEncoding.AllOneDimensionalMetaAlle linearen (1D) Formate einschließlich gestapelterPro Format
BarcodeEncoding.AllTwoDimensionalMetaAlle Matrix-/Gitterformate (2D)Pro Format
BarcodeEncoding.Code1281DHochdichte alphanumerische Zeichen (Logistik, Versand)Pflicht (gewichtetes Mod103)
BarcodeEncoding.EAN131DProduktkennzeichnung im Einzelhandel, 13 ZiffernObligatorisch (Mod10)
BarcodeEncoding.QRCode2DHochleistungsmatrix (URLs, strukturierte Daten)Reed-Solomon ECC
BarcodeEncoding.Code391DAlphanumerisch (Verteidigung, Automobilindustrie)Optional (Mod43)
BarcodeEncoding.UPCA1DNordamerikanischer Einzelhandel, 12-stelligObligatorisch (Mod10)
BarcodeEncoding.DataMatrix2DKompaktmatrix (Elektronik, Pharma)Reed-Solomon ECC
BarcodeEncoding.PDF4172DGestapelt (Ausweise, Transport)Reed-Solomon ECC

Neben der Geschwindigkeit dient die Beschränkung des Formatsets als Validierungsgatter: Barcodes jeglicher nicht aufgeführter Symbolik werden von den Ergebnissen ausgeschlossen, selbst wenn sie physisch im Bild vorhanden sind.

Eingabe

Ein Code128-Versandetikett (Erfolgspfad) und ein QR-Code, der nicht der Code128-Beschränkung entspricht (Fehlerpfad).

Code128 barcode encoding SHIP-2024-00438 used as the shipping label input

shipping-label.png (Erfolgspfad — Code128 entspricht der Bedingung)

QR code used as the format-mismatch failure path for the Code128-only constrained read

qr-format-mismatch.png (Fehlerpfad – QR-Code wird vom Code128-Filter abgelehnt)

:path=/static-assets/barcode/content-code-examples/how-to/checksum-and-format-validation/format-constrained.cs
using IronBarCode;

// Constrained read: only Code128 barcodes are returned.
// Faster because the reader skips all other format detectors.
var constrainedOptions = new BarcodeReaderOptions
{
    ExpectBarcodeTypes     = BarcodeEncoding.Code128,
    Speed                  = ReadingSpeed.Faster,
    ExpectMultipleBarcodes = false
};

// Broad read: all supported formats are scanned.
// Useful for verification or when the image format is unknown.
var broadOptions = new BarcodeReaderOptions
{
    ExpectBarcodeTypes     = BarcodeEncoding.All,
    Speed                  = ReadingSpeed.Detailed,
    ExpectMultipleBarcodes = true
};

string imagePath = "shipping-label.png";

BarcodeResults constrained = BarcodeReader.Read(imagePath, constrainedOptions);
Console.WriteLine($"Constrained: {constrained.Count} Code128 barcode(s) found");

BarcodeResults broad = BarcodeReader.Read(imagePath, broadOptions);
Console.WriteLine($"Broad: {broad.Count} barcode(s) found across all formats");

foreach (BarcodeResult result in broad)
{
    Console.WriteLine($"  [{result.BarcodeType}] {result.Value}");
}
Imports IronBarCode

' Constrained read: only Code128 barcodes are returned.
' Faster because the reader skips all other format detectors.
Dim constrainedOptions As New BarcodeReaderOptions With {
    .ExpectBarcodeTypes = BarcodeEncoding.Code128,
    .Speed = ReadingSpeed.Faster,
    .ExpectMultipleBarcodes = False
}

' Broad read: all supported formats are scanned.
' Useful for verification or when the image format is unknown.
Dim broadOptions As New BarcodeReaderOptions With {
    .ExpectBarcodeTypes = BarcodeEncoding.All,
    .Speed = ReadingSpeed.Detailed,
    .ExpectMultipleBarcodes = True
}

Dim imagePath As String = "shipping-label.png"

Dim constrained As BarcodeResults = BarcodeReader.Read(imagePath, constrainedOptions)
Console.WriteLine($"Constrained: {constrained.Count} Code128 barcode(s) found")

Dim broad As BarcodeResults = BarcodeReader.Read(imagePath, broadOptions)
Console.WriteLine($"Broad: {broad.Count} barcode(s) found across all formats")

For Each result As BarcodeResult In broad
    Console.WriteLine($"  [{result.BarcodeType}] {result.Value}")
Next
$vbLabelText   $csharpLabel

Ausgabe

Erfolgsweg

Konsolenausgabe mit eingeschränktem Lesevorgang, der einen Code128-Barcode findet, und breiter Lesevorgang, der dies bestätigt.

Das Versandetikett hat den Wert SHIP-2024-00438. Die eingeschränkte Lesefunktion erkennt es sofort, da der Filter Code128 erwartet, und die umfassende Lesefunktion bestätigt dasselbe Ergebnis über alle Formate hinweg.

Fehlerpfad

Konsolenausgabe, die anzeigt, dass ein eingeschränkter Lesevorgang für ein QR-Code-Bild 0 Ergebnisse liefert.

Leere Ergebnisse bei einem eingeschränkten Lesevorgang sind ein Validierungssignal, kein Fehler; Die Abweichung zur Überprüfung protokollieren.

Bei Pipelines, die verschiedene Barcode-Typen mischen (z. B. ein Lieferschein mit EAN-13-Produktcode und Code128-Trackingnummer), kombinieren Sie die erwarteten Formate:

:path=/static-assets/barcode/content-code-examples/how-to/checksum-and-format-validation/multi-format-combine.cs
using IronBarCode;

// Combine multiple format flags with | to scan for more than one symbology
// in a single pass. Each BarcodeResult.BarcodeType identifies which format
// was decoded, enabling downstream routing logic per symbology.
var options = new BarcodeReaderOptions
{
    ExpectBarcodeTypes     = BarcodeEncoding.EAN13 | BarcodeEncoding.Code128,
    ExpectMultipleBarcodes = true
};
Imports IronBarCode

' Combine multiple format flags with Or to scan for more than one symbology
' in a single pass. Each BarcodeResult.BarcodeType identifies which format
' was decoded, enabling downstream routing logic per symbology.
Dim options As New BarcodeReaderOptions With {
    .ExpectBarcodeTypes = BarcodeEncoding.EAN13 Or BarcodeEncoding.Code128,
    .ExpectMultipleBarcodes = True
}
$vbLabelText   $csharpLabel

Jeder zurückgegebene Code BarcodeResult.BarcodeType identifiziert das dekodierte Format und ermöglicht so das Downstream-Routing.

Welche Symbologien unterstützen die Prüfsummenvalidierung?

Nicht alle Barcode-Formate verwenden Prüfsummen auf die gleiche Weise. Die folgende Tabelle ordnet gängigen Symbologien ihre Fehlererkennungseigenschaften zu und gibt Aufschluss darüber, wie aggressiv ConfidenceThreshold und RemoveFalsePositive für jedes Format eingestellt werden sollten:

Prüfsummenmerkmale nach Symbolik
SymbolikPrüfsummentypObligatorisch?Empfehlung
EAN-13 / EAN-8Mod10JaStandardeinstellungen ausreichend; Prüfsumme wird immer erzwungen.
UPC-A / UPC-EMod10JaStandardeinstellungen ausreichend; Prüfziffer wird beim Schreiben automatisch korrigiert.
Code128Gewichtetes Mod103JaStandardeinstellungen ausreichend; gemäß Spezifikation obligatorisch.
Code39Mod43OptionalErhöhen Sie ConfidenceThreshold auf 0,8+ und aktivieren Sie RemoveFalsePositive
CodabarMod16OptionalWie bei Code 39; Vertrauen als Qualitätskriterium verwenden.
ITFMod10OptionalAktivieren Sie RemoveFalsePositive für verschachtelte Formate.
QR-Code / DataMatrixReed-Solomon ECCStetsStrukturelle Fehlerkorrektur; keine zusätzliche Konfiguration erforderlich
PDF417Reed-Solomon ECCStetsWie bei QR/DataMatrix; Fehlerkorrektur ist inhärent.

Bei 2D-Symbologien wie QR, DataMatrix und PDF417 ist die Fehlerkorrektur in die Kodierungsstruktur integriert. Diese Formate können Teilschäden wiederherstellen, ohne auf eine einfache Prüfziffer angewiesen zu sein. Der Code ConfidenceThreshold gilt weiterhin während der ML-Erkennungsphase, während der Dekodierungsschritt von der in der Symbolik integrierten Redundanz profitiert.

Nachdem wir nun beide Techniken verstanden haben, kombinieren wir sie zu einem einzigen, produktionsreifen Validierungsmuster.


Wie lassen sich Prüfsummen mit Formatbeschränkungen kombinieren?

Das produktionsfertige Muster setzt ExpectBarcodeTypes, RemoveFalsePositive, ConfidenceThreshold und Speed in einem einzigen BarcodeReaderOptions Objekt. Zusammen bilden sie ein mehrschichtiges Kontrollsystem: Formatbeschränkungen verengen den Suchraum, die Prüfsummenvalidierung gewährleistet die Datenintegrität, die Konfidenzschwellenwertfilterung filtert Randdekodierungen und die Entfernung von Fehlalarmen fügt einen zweiten Verifizierungsdurchgang hinzu.

Eingabe

Drei POS-Scan-Barcodes aus dem Verzeichnis pos-scans/, die als Erfolgspfad verwendet wurden: zwei EAN-13 und ein UPC-A. Als Fehlerpfad wird ein Code128-Lagerregaletikett verwendet – die EAN-13/UPC-A-Beschränkung weist es zurück und protokolliert eine REJECT-Zeile.

EAN-13 barcode encoding 5901234123471 used as POS scan input 1

pos-scan-1.png (Erfolg)

EAN-13 barcode encoding 4006381333931 used as POS scan input 2

pos-scan-2.png (Erfolg)

UPC-A barcode encoding 012345678905 used as POS scan input 3

pos-scan-3.png (Erfolg)

Code128 barcode encoding RACK-A1-LOT-7382 used as the combined-validation failure path input

warehouse-rack.png (Fehler – Code128 abgelehnt)

:path=/static-assets/barcode/content-code-examples/how-to/checksum-and-format-validation/combined-validation.cs
using IronBarCode;

// Layered validation for retail POS: EAN-13, UPC-A, and UPC-E only.
// Each property adds a distinct filter to the read pipeline.
var options = new BarcodeReaderOptions
{
    // Layer 1: format constraint, accept only retail symbologies
    ExpectBarcodeTypes = BarcodeEncoding.EAN13 | BarcodeEncoding.UPCA | BarcodeEncoding.UPCE,

    // Layer 2: confidence threshold, reject decodes below 80%
    ConfidenceThreshold = 0.8,

    // Layer 3: false-positive removal, runs a secondary verification pass
    RemoveFalsePositive = true,

    Speed                  = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = false,

    // Require 3 agreeing scan lines to reduce phantom reads from noisy images
    MinScanLines = 3
};

string[] scanFiles = Directory.GetFiles("pos-scans/", "*.png");

foreach (string file in scanFiles)
{
    BarcodeResults results = BarcodeReader.Read(file, options);

    if (results.Count == 0)
    {
        // No barcode passed all validation layers
        Console.Error.WriteLine($"REJECT {Path.GetFileName(file)}: "
            + "no valid EAN-13/UPC barcode (checksum, confidence, or format mismatch)");
        continue;
    }

    BarcodeResult primary = results.First();

    // Post-read assertion: verify the decoded format matches expectations.
    // ExpectBarcodeTypes already constrains the reader; this check documents
    // intent and surfaces unexpected results during future changes.
    if (primary.BarcodeType != BarcodeEncoding.EAN13
        && primary.BarcodeType != BarcodeEncoding.UPCA
        && primary.BarcodeType != BarcodeEncoding.UPCE)
    {
        Console.Error.WriteLine($"UNEXPECTED FORMAT {Path.GetFileName(file)}: "
            + $"got {primary.BarcodeType}, expected EAN-13/UPC");
        continue;
    }

    Console.WriteLine($"OK {Path.GetFileName(file)}: [{primary.BarcodeType}] {primary.Value}");
}
Imports IronBarCode
Imports System.IO

' Layered validation for retail POS: EAN-13, UPC-A, and UPC-E only.
' Each property adds a distinct filter to the read pipeline.
Dim options As New BarcodeReaderOptions With {
    ' Layer 1: format constraint, accept only retail symbologies
    .ExpectBarcodeTypes = BarcodeEncoding.EAN13 Or BarcodeEncoding.UPCA Or BarcodeEncoding.UPCE,

    ' Layer 2: confidence threshold, reject decodes below 80%
    .ConfidenceThreshold = 0.8,

    ' Layer 3: false-positive removal, runs a secondary verification pass
    .RemoveFalsePositive = True,

    .Speed = ReadingSpeed.Balanced,
    .ExpectMultipleBarcodes = False,

    ' Require 3 agreeing scan lines to reduce phantom reads from noisy images
    .MinScanLines = 3
}

Dim scanFiles As String() = Directory.GetFiles("pos-scans/", "*.png")

For Each file As String In scanFiles
    Dim results As BarcodeResults = BarcodeReader.Read(file, options)

    If results.Count = 0 Then
        ' No barcode passed all validation layers
        Console.Error.WriteLine($"REJECT {Path.GetFileName(file)}: " &
            "no valid EAN-13/UPC barcode (checksum, confidence, or format mismatch)")
        Continue For
    End If

    Dim primary As BarcodeResult = results.First()

    ' Post-read assertion: verify the decoded format matches expectations.
    ' ExpectBarcodeTypes already constrains the reader; this check documents
    ' intent and surfaces unexpected results during future changes.
    If primary.BarcodeType <> BarcodeEncoding.EAN13 AndAlso
       primary.BarcodeType <> BarcodeEncoding.UPCA AndAlso
       primary.BarcodeType <> BarcodeEncoding.UPCE Then
        Console.Error.WriteLine($"UNEXPECTED FORMAT {Path.GetFileName(file)}: " &
            $"got {primary.BarcodeType}, expected EAN-13/UPC")
        Continue For
    End If

    Console.WriteLine($"OK {Path.GetFileName(file)}: [{primary.BarcodeType}] {primary.Value}")
Next
$vbLabelText   $csharpLabel

Ausgabe

Erfolgsweg

Konsolenausgabe mit Anzeige, dass alle 3 POS-Scan-Barcodes mit dem Status

Alle drei POS-Scanbilder wurden erfolgreich übertragen. Der Reader gab die Werte 5901234123471, 4006381333931 und 012345678905 zurück. Jedes einzelne entsprach dem EAN13-Code. | UPCA | Der UPCE`-Filter wies eine gültige Mod10-Prüfsumme auf, und das Konfidenzintervall lag über 0,8.

Fehlerpfad

Konsolenausgabe mit der Meldung, dass der Code128-Barcode des Lagerregals vom EAN-13/UPC-A-Filter abgelehnt wurde.

Durch Setzen von MinScanLines auf 3 erhöht sich die Mindestanzahl übereinstimmender Scanzeilen, die für die Gültigkeit eines 1D-Barcodes erforderlich sind; Der Standardwert ist 2. Durch Erhöhen dieses Wertes wird das Risiko von Phantom-Lesevorgängen aufgrund verrauschter Scanzeilen verringert, es kann jedoch dazu führen, dass dünne oder teilweise beschädigte Barcodes nicht erkannt werden. In Einzelhandels-POS-Umgebungen mit sauber gedruckten Etiketten ist ein Wert von 3 eine konservative Wahl, die die Validierung stärkt, ohne den Durchsatz zu beeinträchtigen.

Die nach dem Lesen durchgeführte Assertion BarcodeType dient der mehrstufigen Verteidigung: ExpectBarcodeTypes filtert bereits, aber die explizite Prüfung dokumentiert die Absicht und erkennt Konfigurationsabweichungen ohne Laufzeitkosten. Zur Geschwindigkeitsoptimierung eignet sich ReadingSpeed.Faster für saubere, maschinell gedruckte Etiketten; Detailed und ExtremeDetail können beschädigte oder schlecht beleuchtete Barcodes wiederherstellen, allerdings auf Kosten längerer Scanzeiten.


Was sind meine nächsten Schritte?

Dieser Artikel behandelte das implizite Prüfsummenvalidierungsmodell von IronBarcode, die BarcodeEncoding Flags-Enumeration für formatbeschränkte Lesevorgänge und ein kombiniertes Validierungsmuster, das ExpectBarcodeTypes, ConfidenceThreshold, RemoveFalsePositive und MinScanLines als geschichtete Qualitätsgates verwendet.

Für weiterführende Informationen konsultieren Sie bitte diese Ressourcen:

Sichern Sie sich eine kostenlose Testlizenz, um alle Funktionen in einer Live-Umgebung zu testen, oder informieren Sie sich über die Lizenzoptionen, sobald die Pipeline produktionsbereit ist.

Häufig gestellte Fragen

Was ist Barcode-Prüfsummenvalidierung?

Die Prüfsummenvalidierung von Barcodes ist ein Verfahren, das die Genauigkeit der Barcode-Daten sicherstellt, indem die berechnete Prüfsumme mit dem im Barcode kodierten Wert verglichen wird. Dies hilft, Fehler beim Scannen zu erkennen.

Wie handhabt IronBarcode die Prüfsummenvalidierung?

IronBarcode übernimmt die Prüfsummenvalidierung implizit, indem es die Prüfsumme für die Barcodedaten berechnet und sie mit der codierten Prüfsumme vergleicht. Dadurch wird die Datenintegrität während des Scanvorgangs sichergestellt.

Was sind BarcodeEncoding-Filter?

Mit den BarcodeEncoding-Filtern in IronBarcode können Sie festlegen, welche Barcode-Formate beim Scannen gelesen oder ignoriert werden sollen. Dies ermöglicht eine genauere und effizientere Barcode-Verarbeitung, indem der Fokus auf bestimmte Barcode-Typen gelegt wird.

Kann IronBarcode eine kombinierte Validierung durchführen?

Ja, IronBarcode kann eine kombinierte Validierung durchführen, indem es während des Scanvorgangs sowohl die Prüfsumme als auch das Format der Barcodes überprüft und so sicherstellt, dass nur gültige und korrekt formatierte Barcodes verarbeitet werden.

Ist es mit IronBarcode in C# möglich, Barcode-Lesevorgänge nach Format einzuschränken?

Ja, IronBarcode ermöglicht es Ihnen, Barcode-Lesevorgänge einzuschränken, indem Sie die Formate angeben, die ein- oder ausgeschlossen werden sollen, und so sicherzustellen, dass Ihre Anwendung nur relevante Barcode-Typen verarbeitet.

Warum ist formatbewusstes Lesen bei der Barcode-Verarbeitung wichtig?

Formatbewusstes Lesen ist wichtig, weil es Ihrer Anwendung ermöglicht, nur bestimmte Barcode-Typen zu verarbeiten, wodurch Geschwindigkeit und Genauigkeit verbessert werden, indem irrelevante oder nicht unterstützte Barcode-Formate ignoriert werden.

Wie implementiere ich formatbewusstes Lesen in IronBarcode?

Um formatabhängiges Lesen in IronBarcode zu implementieren, verwenden Sie BarcodeEncoding-Filter, um die zu lesenden Barcode-Formate festzulegen. Dies erfolgt über die API der Bibliothek, die eine präzise Steuerung der Anforderungen an das Barcode-Scannen ermöglicht.

Welche Vorteile bietet die Verwendung von IronBarcode zur Barcode-Validierung?

IronBarcode bietet zahlreiche Vorteile für die Barcode-Validierung, darunter eine robuste Prüfsummenverifizierung, formatbewusstes Lesen und die Fähigkeit, eine breite Palette von Barcode-Standards zu verarbeiten, wodurch eine hohe Genauigkeit und Flexibilität bei der Barcode-Verarbeitung gewährleistet wird.

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'name'

Filename: sections/author_component.php

Line Number: 18

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 18
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

D

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'title'

Filename: sections/author_component.php

Line Number: 38

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 38
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

D

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'comment'

Filename: sections/author_component.php

Line Number: 48

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 48
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

D
Bereit anzufangen?
Nuget Downloads 2,143,620 | Version: 2026.4 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package BarCode
Führen Sie ein Beispiel aus und beobachten Sie, wie Ihre Zeichenkette zu einem BarCode wird.