Jak weryfikować sumy kontrolne BarCode'ów i korzystać z odczytu z uwzględnieniem formatu w języku C

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

Sumy kontrolne BarCode pomagają wykrywać błędy zastąpienia. Na przykład jedna zamieniona cyfra w etykiecie EAN-13 może spowodować wysłanie paczki do niewłaściwego magazynu. Odczyt uwzględniający format zapewnia dodatkową warstwę walidacji poprzez ograniczenie dekodera do oczekiwanych symboli. Takie podejście ogranicza liczbę fałszywych alarmów spowodowanych szumem tła i skraca czas skanowania poprzez pomijanie zbędnych detektorów formatów.

IronBarcode automatycznie weryfikuje sumę kontrolną podczas dekodowania. Algorytm cyfr kontrolnych każdej symboliki działa domyślnie, a BARCODES, które nie przejdą weryfikacji, są odrzucane przed zwróceniem wyników. Właściwość BarcodeReaderOptions.ExpectBarcodeTypes ogranicza odczyty do konkretnych formatów, podczas gdy RemoveFalsePositive dodaje dodatkowe skanowanie dla niejednoznacznych odczytów.

Ten przewodnik wyjaśnia, jak walidować sumy kontrolne kodów kreskowych, ograniczać odczyty do oczekiwanych formatów i łączyć obie techniki w warstwę bramki jakości przy użyciu BarcodeReaderOptions.

Szybki start: Sprawdzanie poprawności BarCodes za pomocą sum kontrolnych i ograniczeń formatowych

Skonfiguruj BarcodeReaderOptions z ExpectBarcodeTypes i RemoveFalsePositive, aby ograniczyć odczyty do oczekiwanych symbologii z automatyczną weryfikacją sum kontrolnych.

: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

Jak zweryfikować sumy kontrolne BarCode'ów?

IronBarcode weryfikuje sumy kontrolne podczas dekodowania zgodnie ze specyfikacją danej symboliki. Na przykład podczas odczytu barcodu EAN-13 cyfra kontrolna Mod10 jest obliczana na podstawie pierwszych 12 cyfr i porównywana z 13. Jeśli cyfry nie pasują, kod kreskowy jest cicho odrzucany i nie pojawia się w kolekcji BarcodeResults. Podejście to ma zastosowanie do wszystkich formatów z obowiązkową cyfrą kontrolną, w tym UPC-A, UPC-E, EAN-8, Code128, ITF i innych.

Ten model domyślny różni się od bibliotek, które udostępniają wyraźny przełącznik. Poniższa tabela przedstawia porównanie tych dwóch podejść:

Porównanie modeli weryfikacji sum kontrolnych: IronBarcode vs. Aspose.BarCode
AspektIronBarcodeAspose.BarCode
Wyzwalacz walidacjiAutomatyczne; uruchamia się podczas każdego dekodowaniaWyraźne: Suma kontrolnaValidation.On / Off / Default
Wymagane działanie programistyBrak; nieprawidłowe BarCodes są wykluczane z wynikówPrzed odczytem należy ustawić BarcodeSettings.Suma kontrolnaValidation
Wyłącz sumę kontrolnąNieujawnione; sumy kontrolne są zawsze egzekwowane dla formatów obowiązkowychTak; Suma kontrolnaValidation.Off pomija weryfikację
Opcjonalne formaty sum kontrolnych (Code39)Wykorzystuje Confidence + RemoveFalsePositive do filtrowania odczytów niskiej jakościWyraźnie włącz za pomocą EnableSuma kontrolna.Tak
Zachowanie w przypadku niepowodzeniaBarCode został pominięty w wynikachBarCode może pojawić się z oddzielną wartością sumy kontrolnej do ręcznej weryfikacji

Dla symbologii z opcjonalnymi sumami kontrolnymi, takich jak Code39, biblioteka wykorzystuje ocenianie pewności i RemoveFalsePositive zamiast przełącznika sumy kontrolnej.

Dane wejściowe

Etykieta magazynowa Code128 (scenariusz poprawny) oraz pusty obraz bez BARCODE (scenariusz nieprawidłowy).

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

warehouse-rack.png (ścieżka sukcesu)

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

blank-no-BarCode.png (ścieżka błędu — brak BarCode)

: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

Wynik

Droga do sukcesu

Wynik konsoli pokazujący dekodowany kod Code128 RACK-A1-LOT-7382 powyżej progu pewności

Kod kreskowy z regału magazynowego zwrócił się jako RACK-A1-LOT-7382 na stronie 0. Przekroczył próg pewności 85% i przeszedł walidację sumy kontrolnej, więc pojawia się w BarcodeResults.

Ścieżka błędu

Wynik konsoli pokazujący komunikat WARN: nie znaleziono prawidłowych BARCODE-ów dla pustego obrazu wprowadzonego jako dane wejściowe

Podniesienie ConfidenceThreshold ponad jego domyślną wartość 0,7 jeszcze bardziej zaostrza tę bramkę dla symbologii z opcjonalnymi sumami kontrolnymi, takich jak Code39.

Po sprawdzeniu sum kontrolnych następnym krokiem jest ograniczenie czytnika do formatów BARCODE, których oczekuje Twój system.


Jak korzystać z funkcji odczytu BarCodes z uwzględnieniem formatowania?

Enum BarcodeEncoding jest typem flag, pozwalającym na łączenie wielu formatów przy użyciu operatora bitowego OR. Ustawienie ExpectBarcodeTypes ogranicza czytnik do tych formatów i pomija wykrywanie dla innych.

Typowe wartości kodowania kodów kreskowych
WartośćKategoriaOpisSuma kontrolna
BarcodeEncoding.AllMetaWszystkie obsługiwane formaty (domyślne zachowanie)W zależności od formatu
BarcodeEncoding.AllOneDimensionalMetaWszystkie formaty liniowe (1D), w tym ułożone w stosW zależności od formatu
BarcodeEncoding.AllTwoDimensionalMetaWszystkie formaty matrycowe/siatkowe (2D)W zależności od formatu
BarcodeEncoding.Code1281DAlfanumeryczne o dużej gęstości (logistyka, wysyłka)Obowiązkowe (waga Mod103)
BarcodeEncoding.EAN131DIdentyfikacja produktow detalicznych, 13 cyfrObowiazkowe (Mod10)
BarcodeEncoding.QRCode2DMacierz o duzej pojemnosci (URL-e, dane strukturalne)Reed-Solomon ECC
BarcodeEncoding.Code391DAlfanumeryczny (obrona, motoryzacja)Opcjonalne (Mod43)
BarcodeEncoding.UPCA1DHandel detaliczny w Ameryce Polnocnej, 12 cyfrObowiazkowe (Mod10)
BarcodeEncoding.DataMatrix2DKompaktowa macierz (elektronika, farmacja)Reed-Solomon ECC
BarcodeEncoding.PDF4172DStosy (karty ID, transport)Reed-Solomon ECC

Poza szybkością, ograniczenie zbioru formatów działa jako bramka walidacyjna: kody kreskowe dowolnej nieumieszczonej symbologii są wykluczane z wyników, nawet jeśli fizycznie występują w obrazie.

Dane wejściowe

Etykieta wysyłkowa Code128 (ścieżka sukcesu) i kod QR, który nie pasuje do ograniczenia tylko dla Code128 (ścieżka porażki).

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

shipping-label.png (ścieżka sukcesu — Code128 pasuje do ograniczenia)

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

qr-format-mismatch.png (ścieżka porażki — QR odrzucony przez filtr tylko-dla-Code128)

: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

Wynik

Droga do sukcesu

Wyjście z konsoli pokazujące ograniczony odczyt znajdujący 1 kod kreskowy Code128 i szeroki odczyt potwierdzający go

Etykieta wysyłkowa ma wartość SHIP-2024-00438. Ograniczony odczyt zbiera go natychmiast, ponieważ Code128 jest tym, co oczekuje filtr, a szeroki odczyt potwierdza ten sam wynik we wszystkich formatach.

Ścieżka błędu

Wyjście z konsoli pokazujące ograniczony odczyt zwracający 0 wyników dla obrazu kodu QR

Puste wyniki z ograniczonego odczytu to sygnał walidacji, nie błąd; zaloguj rozbieżność do przeglądu.

Dla pul, które mieszają formaty kodów kreskowych (np. list przewozowy z zarówno kodem produktu EAN-13, jak i numerem śledzenia Code128), połącz oczekiwane formaty:

: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

Każdy zwrócony BarcodeResult.BarcodeType identyfikuje, który format został zdekodowany, umożliwiając dalsze trasowanie.

Jakie Symbologie Obsługują Walidację Sum Kontrolnych?

Nie wszystkie formaty kodow kreskowych używają sum kontrolnych w ten sam sposób. Następująca tabela mapuje powszechne symbologie do ich cech detekcji błędów, co informuje, jak agresywnie ustawić ConfidenceThreshold i RemoveFalsePositive dla każdego formatu:

Charakterystyka sum kontrolnych według symbologii
SymbologiaTyp sumy kontrolnejObowiązkowe?Zalecenie
EAN-13 / EAN-8Mod10TakDomyślne ustawienia wystarczające; suma kontrolna zawsze egzekwowana
UPC-A / UPC-EMod10TakDomyślne ustawienia wystarczające; cyfra kontrolna automatycznie poprawiana podczas zapisu
Code128Wazona Mod103TakDomyślne ustawienia wystarczające; obowiązkowe zgodnie ze specyfikacją
Code39Mod43OpcjonalnePodnieś ConfidenceThreshold do 0.8+ i włącz RemoveFalsePositive
CodabarMod16OpcjonalneJak w przypadku Code39; użyj oceniania pewności jako bramki jakości
ITFMod10OpcjonalneWłącz RemoveFalsePositive dla formatów przeplatanych
QRCode / DataMatrixReed-Solomon ECCZawszeStrukturalna korekcja błędów; dodatkowa konfiguracja nie jest potrzebna
PDF417Reed-Solomon ECCZawszeJak QR/DataMatrix; korekcja błędów jest wbudowana

Dla symbologii 2D, takich jak QR, DataMatrix i PDF417, korekcja błędów jest zintegrowana ze strukturą kodu. Te formaty mogą odzyskać się z częściowych uszkodzeń bez polegania na prostej cyfrze kontrolnej. ConfidenceThreshold nadal ma zastosowanie podczas fazy detekcji ML, podczas gdy krok dekodowania korzysta z wbudowanej redundancji symbologii.

Teraz, gdy obie techniki sa zrozumiane, polaczmy je w jeden, gotowy do produkcji wzorzec walidacyjny.


Jak Połączyć Sumy Kontrolne z Ograniczeniami Formatów?

Gotowy do produkcji wzorzec ustawia ExpectBarcodeTypes, RemoveFalsePositive, ConfidenceThreshold i Speed w jednym obiekcie BarcodeReaderOptions. Razem tworzą warstwową bramkę: ograniczenia formatów zawężają przestrzeń wyszukiwania, walidacja sumy kontrolnej zapewnia integralność danych, ocenianie pewności filtruje marginalne dekodowania, a usuwanie wyników fałszywie pozytywnych dodaje dodatkowe sprawdzenie.

Dane wejściowe

Trzy kody kreskowe skanow POS z katalogu pos-scans/ używane jako ścieżka sukcesu: dwa EAN-13 i jeden UPC-A. Etykieta regału magazynowego Code128 użyta jako ścieżka porażki — ograniczenie EAN-13/UPC-A odrzuca go i rejestruje linie REJECT.

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

pos-scan-1.png (sukces)

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

pos-scan-2.png (sukces)

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

pos-scan-3.png (sukces)

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

warehouse-rack.png (porażka — Code128 odrzucony)

: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

Wynik

Droga do sukcesu

Wyjście z konsoli pokazujące, że wszystkie 3 kody kreskowe skanów POS zostały zaakceptowane ze statusem OK i zdekodowanymi wartościami

Wszystkie trzy obrazy skanow POS przeszly. Czytnik zwrócił wartości 5901234123471, 4006381333931 i 012345678905. Każdy z nich pasował do filtru EAN13|UPCA|UPCE, miał ważną sumę kontrolną Mod10, a pewność była powyżej 0.8.

Ścieżka błędu

Wyjście z konsoli pokazujące, że kod kreskowy Code128 regału magazynowego został odrzucony przez filtr EAN-13/UPC-A

Ustawienie MinScanLines na 3 zwiększa minimalną liczbę zgodnych linii skanowania wymaganych, aby kod kreskowy 1D był ważny; domyślnie jest to 2. Podniesienie tej wartości zmniejsza ryzyko duchowych odczytów z hałaśliwych linii skanowania, ale może powodować, że cienkie lub częściowo uszkodzone kody kreskowe mogą być pomijane. W środowiskach detalicznych POS z czystymi wydrukowanymi etykietami wartość 3 jest konserwatywnym wyborem, który wzmacnia walidację bez wpływu na przepustowość.

Podstawowe twierdzenie BarcodeType jest obroną w głąb: ExpectBarcodeTypes już filtruje, ale jawne sprawdzenie dokumentuje intencje i wychwytuje rozbieżności konfiguracji bez kosztów runtime. Dla dostrojenia szybkości, ReadingSpeed.Faster pasuje do czystych etykiet maszynowo drukowanych; Detailed i ExtremeDetail odzyskują uszkodzone lub słabo oświetlone kody kreskowe kosztem dłuższych czasów skanowania.


Jakie są moje kolejne kroki?

Ten artykuł omówił model walidacji sumy kontrolnej IronBarcode, enum flag BarcodeEncoding dla odczytów z ograniczeniami formatowymi oraz połączony wzorzec walidacyjny z użyciem ExpectBarcodeTypes, ConfidenceThreshold, RemoveFalsePositive i MinScanLines jako warstwowe bramki jakości.

Dla dalszej lektury, zobacz te zasoby:

Pobierz bezpłatną licencję próbną, aby przetestować wszystkie funkcje w środowisku na żywo, lub zobacz opcje licencjonowania, gdy potok jest gotowy do produkcji.

Często Zadawane Pytania

Co to jest walidacja sumy kontrolnej kodu kreskowego?

Walidacja sumy kontrolnej kodu kreskowego to proces, który zapewnia dokładność danych kodu kreskowego poprzez weryfikację obliczonej sumy kontrolnej z wartością zakodowaną w kodzie kreskowym. Pomaga to w wykrywaniu błędów w procesie skanowania.

Jak IronBarcode obsługuje walidację sumy kontrolnej?

IronBarcode automatycznie obsługuje walidację sumy kontrolnej, obliczając sumę kontrolną dla danych kodu kreskowego i weryfikując ją z zakodowaną sumą kontrolną, zapewniając integralność danych podczas procesu skanowania.

Czym są filtry BarcodeEncoding?

Filtry BarcodeEncoding w IronBarcode pozwalają określić, które formaty kodów kreskowych odczytywać lub ignorować podczas skanowania, umożliwiając bardziej dokładne i efektywne przetwarzanie kodów kreskowych poprzez skupienie się na konkretnych typach kodów.

Czy IronBarcode może wykonać złożoną walidację?

Tak, IronBarcode może wykonać złożoną walidację, sprawdzając zarówno sumę kontrolną, jak i format kodów kreskowych podczas procesu skanowania, zapewniając, że tylko prawidłowe i poprawnie sformatowane kody kreskowe są przetwarzane.

Czy można ograniczyć odczyty kodów kreskowych według formatu w C# za pomocą IronBarcode?

Tak, IronBarcode pozwala ograniczyć odczyty kodów kreskowych poprzez określenie formatów, które chcesz uwzględnić lub wykluczyć, zapewniając, że twoja aplikacja przetwarza tylko istotne typy kodów kreskowych.

Dlaczego świadome formatu czytanie jest ważne w przetwarzaniu kodów kreskowych?

Świadome formatu czytanie jest ważne, ponieważ pozwala twojej aplikacji przetwarzać tylko określone typy kodów kreskowych, poprawiając szybkość i dokładność poprzez ignorowanie nieistotnych lub nieobsługiwanych formatów kodów kreskowych.

Jak zaimplementować świadome formatu czytanie w IronBarcode?

Aby zaimplementować świadome formatu czytanie w IronBarcode, użyj filtrów BarcodeEncoding, aby określić formaty kodów kreskowych, które chcesz odczytać. Można to zrobić za pośrednictwem API biblioteki, co pozwala na precyzyjną kontrolę nad wymaganiami dotyczącymi skanowania kodów kreskowych.

Jakie są korzyści z użycia IronBarcode do walidacji kodów kreskowych?

IronBarcode oferuje kilka korzyści dla walidacji kodów kreskowych, w tym solidną weryfikację sum kontrolnych, świadome formatu czytanie oraz możliwość obsługi szerokiego zakresu standardów kodów kreskowych, zapewniając wysoką dokładność i elastyczność w przetwarzaniu kodów kreskowych.

Darrius Serrant
Full Stack Software Engineer (WebOps)

Darrius Serrant posiada tytuł licencjata z informatyki z Uniwersytetu Miami i pracuje jako Full Stack WebOps Marketing Engineer w Iron Software. Już od młodych lat zainteresował się kodowaniem, postrzegając informatykę jako zarówno tajemniczą, jak i dostępną, co czyni ją doskonałym medium dla kreatywności ...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 2,145,441 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package BarCode
uruchom przykład zobacz, jak twoje ciągi zamieniają się w kody kreskowe.