Barkod Çekirdeklerini Doğrulama ve Biçim Bilinçli Okuma Nasıl Yapılır C

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

Barkod çekirdekleri, yer değiştirme hatalarını tespit etmeye yardımcı olur. Örneğin, EAN-13 etiketindeki tek bir yer değiştirmiş rakam paketi yanlış bir depoya gönderebilir. Biçim farkındalıklı okuma, kod çözücüyü beklenen sembolojiyle sınırlandırarak ek bir doğrulama katmanı sağlar. Bu yaklaşım, arka plan gürültüsünden kaynaklanan yanlış pozitifleri azaltır ve gereksiz format dedektörlerini atlayarak tarama süresini kısaltır.

IronBarcode, çözümleme sırasında otomatik olarak çekirdek doğrulaması gerçekleştirir. Her sembolojinin kontrol basamak algoritması varsayılan olarak çalışır ve başarısız olan barkodlar sonuçlar döndürülmeden önce elenir. Bu özellikler, okumayı belirli formatlarla sınırlar; RemoveFalsePositive ise belirsiz okumalar için ikincil bir tarama ekler.

Bu kılavuz, barkod kontrol toplamını doğrulamanın, okumayı beklenen formatlarla sınırlamanın ve her iki tekniği de BarcodeReaderOptions kullanarak katmanlı bir kalite kapısı haline getirme yöntemlerini açıklar.

Hızlı Başlangıç: Çekirdek ve Format Kısıtlamaları ile Barkodları Doğrulayın

Okumaları otomatik kontrol toplamı doğrulamasıyla beklenen semboloji ile sınırlamak için BarcodeReaderOptions'u ExpectBarcodeTypes ve RemoveFalsePositive ile ayarlayın.

: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

Barkod Çekirdekleri Nasıl Doğrulanır?

IronBarcode, her sembolojinin spesifikasyonuna göre çözümleme sırasında çekirdekleri doğrular. Örneğin, EAN-13 barkodunu okurken, Mod10 kontrol basamağı ilk 12 rakamdan hesaplanır ve 13. rakamla karşılaştırılır. Rakamlar eşleşmiyorsa, barkod sessizce reddedilir ve BarcodeResults koleksiyonunda görünmez. Bu yaklaşım, UPC-A, UPC-E, EAN-8, Code128, ITF ve diğerleri gibi zorunlu kontrol basamak olan tüm formatlara uygulanır.

Bu örtülü model, açık bir anahtar sunan kütüphanelerden farklıdır. Aşağıdaki tablo iki yaklaşımı karşılaştırır:

Çekirdek Doğrulama Modeli Karşılaştırması: IronBarcode vs. Aspose.BarCode
AspektIronBarcodeAspose.BarCode
Doğrulama tetikleyicisiOtomatik; her çözümleme sırasında çalışırBelirgin: Kontrol ToplamıValidation.On / Off / Default
Geliştirici eylemi gerekliYok; geçersiz barkodlar sonuçlardan hariç tutulurOkuma öncesinde BarcodeSettings.Kontrol ToplamıValidation ayarlayın
Çekirdek devre dışı bırakmaGöz önünde değil; kontrol basamakları zorunlu formatlar için her zaman uygulanırEvet; Kontrol ToplamıValidation.Off doğrulamayı atlar
İsteğe bağlı çekirdek formatlar (Code39)Confidence + RemoveFalsePositive kullanarak düşük kaliteli okumaları filtrelerEnableKontrol Toplamı.Evet ile açıkça etkinleştirin
Başarısızlık davranışıBarkod sessizce sonuçlardan hariç tutulurBarkod manuel inceleme için ayrı bir çekirdek değeriyle görünebilir

Code39 gibi isteğe bağlı kontrol toplamına sahip sembolojiler için kütüphane, kontrol toplamı açma/kapama seçeneği yerine güven skoru ve RemoveFalsePositive kullanır.

Girdi

Bir Code128 depo raf etiketi (başarı yolu) ve barkod içermeyen boş bir görüntü (başarısızlık yolu).

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

warehouse-rack.png (başarı yolu)

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

blank-no-barcode.png (başarısızlık yolu — barkod yok)

: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

Çıktı

Başarı Yolu

Konsol çıktısı, güven eşiğinin üzerinde Code128 RACK-A1-LOT-7382'nin çözüldüğünü gösteriyor

Depo raf barkodu, sayfa 0'da RACK-A1-LOT-7382 olarak çözümlendi. %85 güven sınırını geçti ve kontrol toplamı doğrulamasından geçti; bu nedenle BarcodeResults içinde görünüyor.

Başarısızlık Yolu

Konsol çıktısı, boş görüntü girişi için geçerli barkodlar bulunamadığını gösteren WARN gösteriyor

ConfidenceThreshold'u varsayılan değeri olan 0.7'nin üzerine artırmak, Code39 gibi isteğe bağlı kontrol toplamına sahip sembolojiler için bu kapıyı daha da sıkılaştırır.

Kontrol toplamı doğrulaması kapsandığında, bir sonraki adım, okuyucuyu veri hattınızın beklediği barkod formatlarıyla sınırlamaktır.


Format Farkındalıklı Barkod Okuma Nasıl Kullanılır?

BarcodeEncoding enumu bayrak türündedir; bitwise OR operatörünü kullanarak birden fazla formatı birleştirmeye izin verir. ExpectBarcodeTypes ayarlandığında okuma bu formatlarla sınırlanır ve diğerleri tespit edilmez.

Yaygın Barkod Kodlama Değerleri
DeğerKategoriAçıklamaKontrol Toplamı
BarcodeEncoding.AllMetaDesteklenen tüm formatlar (varsayılan davranış)Format başına
BarcodeEncoding.AllOneDimensionalMetaYığılmış dahil tüm lineer (1D) formatlarFormat başına
BarcodeEncoding.AllTwoDimensionalMetaTüm matris/ızgara (2D) formatlarıFormat başına
BarcodeEncoding.Code1281DYüksek yoğunluklu alfanümerik (lojistik, nakliye)Zorunlu (ağırlıklı Mod103)
BarcodeEncoding.EAN131DPerakende ürün tanımlaması, 13 basamakZorunlu (Mod10)
BarcodeEncoding.QRCode2DYüksek kapasiteli matris (URL'ler, yapılandırılmış veriler)Reed-Solomon Hata Düzeltmesi
BarcodeEncoding.Code391DAlfanümerik (savunma, otomotiv)İsteğe bağlı (Mod43)
BarcodeEncoding.UPCA1DKuzey Amerika mağaza, 12 basamakZorunlu (Mod10)
BarcodeEncoding.DataMatrix2DKompakt matris (elektronik, farmasötik)Reed-Solomon Hata Düzeltmesi
BarcodeEncoding.PDF4172DYığılmış (kimlik kartları, ulaşım)Reed-Solomon Hata Düzeltmesi

Hızın ötesinde, format setini sınırlamak bir doğrulama kapısı gibi işlev görür: resimde fiziksel olarak bulunsa bile listelenmemiş herhangi bir simgecilik barkodu sonuçlardan çıkarılır.

Girdi

Code128 nakliye etiketi (başarı yolu) ve Code128-sadece kısıtlamasını karşılamayan bir QR kodu (başarısızlık yolu).

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

shipping-label.png (başarı yolu — Code128 kısıtlamasını karşılıyor)

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

qr-format-mismatch.png (başarısızlık yolu — QR Code128-sadece filtre tarafından reddedildi)

: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

Çıktı

Başarı Yolu

Konsol çıktısı kısıtlanmış okumada 1 Code128 barkodu bulduğunu ve geniş okumanın bunu doğruladığını gösteriyor

Gönderi etiketi @@--CODE-286--@@ değerine sahiptir. Kısıtlanmış okuma bunu hemen alır; çünkü Code128, filtrenin beklediği formattır ve geniş okuma tüm formatlarda aynı sonucu teyit eder.

Başarısızlık Yolu

Konsol çıktısı, bir QR kodu görüntüsü için kısıtlanmış okumanın 0 sonuç döndürdüğünü gösteriyor

Kısıtlanmış okumadan gelen boş sonuçlar bir doğrulama sinyali olup, hata değildir; çelişkiyi inceleme için kaydedin.

Barkod türlerini karıştıran veri hatları için (örneğin, hem EAN-13 ürün kodu hem de Code128 takip numarasına sahip bir ambalaj kaydı), beklenen formatları birleştirin:

: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

Her dönen BarcodeResult.BarcodeType, hangi formatın çözümlenebildiğini belirler; bu da aşağı yönlendirme yapılmasına olanak tanır.

Hangi Sembolojiler Kontrol Toplamı Doğrulamasını Destekler?

Tüm barkod formatları kontrol toplamlarını aynı şekilde kullanmaz. Aşağıdaki tablo, yaygın semboloji hata tespit özelliklerini gösterir ve her format için ConfidenceThreshold ile RemoveFalsePositive'i ne kadar agresif ayarlayacağınıza yol gösterir:

Sembolojiye Göre Kontrol Toplamı Özellikleri
SimgeKontrol Toplamı TürüZorunlu mu?Öneri
EAN-13 / EAN-8Mod10EvetVarsayılan ayarlar yeterlidir; kontrol toplamı her zaman zorlanır
UPC-A / UPC-EMod10EvetVarsayılan ayarlar yeterlidir; yazarken kontrol basamağı otomatik olarak düzeltilir
Code128Ağırlıklı Mod103EvetVarsayılan ayarlar yeterlidir; belirliğe göre zorunludur
Code39Mod43İsteğe bağlıConfidenceThreshold'u 0.8+ seviyesine yükseltin ve RemoveFalsePositive'i etkinleştirin
CodabarMod16İsteğe bağlıCode39 ile aynı; kalite kapısı olarak güveni kullanın
ITFMod10İsteğe bağlıAralıklı formatlar için RemoveFalsePositive'i etkinleştirin
QRCode / DataMatrixReed-Solomon Hata DüzeltmesiHer zamanYapısal hata düzeltme; ek yapılandırma gerekli değil
PDF417Reed-Solomon Hata DüzeltmesiHer zamanQR/DataMatrix ile aynı; hata düzeltme içselleştirilmiştir

QR, DataMatrix ve PDF417 gibi 2D sembolojiler için hata düzeltme, kodlama yapısına entegredir. Bu formatlar, basit bir kontrol basamağına bağlı kalmaksızın kısmi hasardan kurtulabilir. ML tespit aşamasında ConfidenceThreshold hâlâ geçerliyken, çözümleme adımı semboloji için yerleşik fazlalıktan faydalanır.

Artık her iki teknik de anlaşıldı, bunları tek bir üretime hazır doğrulama düzeninde birleştirelim.


Kontrol Toplamlarını Format Kısıtlamalarıyla Nasıl Birleştiririz?

Üretime hazır model, tek bir BarcodeReaderOptions nesnesi içinde ExpectBarcodeTypes, RemoveFalsePositive, ConfidenceThreshold ve Speed'i ayarlar. Birlikte katmanlı bir kapı oluştururlar: format kısıtlamaları arama alanını daraltır, kontrol toplamı doğrulaması veri bütünlüğünü sağlar, güven eşiği marjinal çözümlemeleri filtreler ve yanlış pozitifleri kaldırma ikincil bir doğrulama geçişi ekler.

Girdi

pos-scans/ dizininden üç POS tarama barkodu başarı yolları olarak kullanılıyor: iki EAN-13 ve bir UPC-A. Başarısızlık yolu olarak bir Code128 depo raf etiketi kullanılıyor — EAN-13/UPC-A kısıtlaması bunu reddeder ve REJECT satırını günlüğe kaydeder.

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

pos-scan-1.png (başarı)

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

pos-scan-2.png (başarı)

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

pos-scan-3.png (başarı)

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

warehouse-rack.png (başarısızlık — Code128 reddedildi)

: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

Çıktı

Başarı Yolu

Konsol çıktısı, 3 POS tarayıcı barkodlarının tümünün OK statüsüyle kabul edildiğini ve çözülmüş değerleri gösteriyor

Üç POS tarayıcı görüntüsünün tümü geçti. Çözümleyici @@--CODE-298--@@, 4006381333931 ve 012345678905 değerlerini döndürdü. Her biri EAN13|UPCA|UPCE filtresini karşıladı, geçerli bir Mod10 sağlama toplamına sahipti ve güven oranı 0.8'in üzerindeydi.

Başarısızlık Yolu

Konsol çıktısı, EAN-13/UPC-A filtresi tarafından reddedilen depo-raf Code128 barkodunu gösteriyor

MinScanLines'u 3'e ayarlamak, bir 1D barkodunun geçerli olması için gereken en az sayıda uyumlu tarama hattı sayısını artırır; varsayılan 2'dir. Bu değeri yükseltmek, gürültülü tarama hatlarından gelen hayalet okuma riskini azaltır ancak ince veya kısmen hasarlı barkodların kaçırılmasına neden olabilir. Temiz basılmış etiketlere sahip perakende POS ortamlarında, 3 değeri performansı etkilemeden doğrulamayı güçlendiren muhafazakar bir seçimdir.

Okuma sonrası BarcodeType doğrulaması kaba bir savunmadır: ExpectBarcodeTypes zaten filtreler, ancak açık diğer kontrol, niyeti belgeler ve çalışma zamanı maliyeti olmadan yapılandırma kaymasını yakalar. Hız ayarlaması için, ReadingSpeed.Faster temiz makineye yazılmış etiketler için uygun bir seçenektir; Detailed ve ExtremeDetail hasar görmüş veya kötü aydınlatılmış barkodları kurtarır, ancak daha uzun tarama süresi pahasına.


Sonraki Adımlarım Neler?

Bu makale, IronBarcode'un bağımsız sağlama toplamı doğrulama modelini, format sınırlı okumalar için BarcodeEncoding bayrak enumunu ve ExpectBarcodeTypes, ConfidenceThreshold, RemoveFalsePositive ve MinScanLines'ı katmanlı kalite kapıları olarak kullanan kombine doğrulama desenini ele aldı.

Daha fazla okumak için, şu kaynakları keşfedin:

Canlı ortamda tüm özellikleri test etmek için ücretsiz deneme lisansı alın veya lisanslama seçeneklerine göz atın hattınız üretim için hazır olduğunda.

Sıkça Sorulan Sorular

Barkod kontrol toplamı doğrulaması nedir?

Barkod kontrol toplamı doğrulaması, tarama sürecindeki hataları tespit etmeye yardımcı olarak, hesaplanan kontrol toplamını barkodun içinde kodlanmış değerle karşılaştırıp doğruluk sağlamak için bir süreçtir.

IronBarcode kontrol toplamı doğrulamayı nasıl ele alır?

IronBarcode, tarama sürecinde veri bütünlüğünü sağlamak için barkod verileri için kontrol toplamını hesaplayarak ve kodlanmış kontrol toplamına karşı doğrulama yaparak kontrol toplamı doğrulamasını dolaylı olarak ele alır.

BarcodeEncoding filtreleri nelerdir?

IronBarcode'daki BarcodeEncoding filtreleri, tarama sırasında hangi barkod formatlarını okuma veya görmezden gelme istediğini belirtmenize olanak sağlar, belirli barkod türlerine odaklanarak barkod işlemlerinin doğruluğunu ve verimliliğini artırır.

IronBarcode birleşik doğrulama gerçekleştirebilir mi?

Evet, IronBarcode, tarama işlemi sırasında barkodların hem kontrol toplamını hem de formatını kontrol ederek birleşik doğrulama gerçekleştirebilir, böylece yalnızca geçerli ve düzgün formatlanmış barkodların işlenmesini sağlar.

IronBarcode ile C# dilinde formatına göre barkod okuma kısıtlaması uygulamak mümkün mü?

Evet, IronBarcode, işlem yapmak istediğiniz veya istemediğiniz formatları belirterek barkod okumasını kısıtlama olanağı sağlar, böylece uygulamanızın yalnızca ilgili barkod türlerini işlemesini sağlar.

Barkod işleminde format bilincine sahip okuma neden önemlidir?

Format bilincine sahip okuma önemlidir çünkü uygulamanızın yalnızca belirli barkod türlerini işlemesini sağlar, ilgisiz veya desteklenmeyen barkod formatlarını görmezden gelerek hızı ve doğruluğu artırır.

IronBarcode'da format bilincine sahip okumayı nasıl uygularım?

IronBarcode'da format bilincine sahip okumayı uygulamak için, okumak istediğiniz barkod formatlarını belirtmek üzere BarcodeEncoding filtrelerini kullanın. Bu, kütüphanenin API'si aracılığıyla yapılabilir ve barkod tarama gereksinimlerinizi hassas bir şekilde kontrol etmenizi sağlar.

Barkod doğrulama için IronBarcode kullanmanın faydaları nelerdir?

IronBarcode, sağlam kontrol toplamı doğrulaması, format bilincine sahip okuma ve geniş bir barkod standartlarını ele alma yeteneği gibi birkaç fayda sunar, bu da barkod işlemlerinde yüksek doğruluk ve esneklik sağlar.

Darrius Serrant
Tam Yığın Yazılım Mühendisi (WebOps)

Darrius Serrant, Miami Üniversitesi'nden Bilgisayar Bilimleri lisans derecesine sahiptir ve Iron Software'de Tam Yığın WebOps Pazarlama Mühendisi olarak çalışmaktadır. Küçük yaşlardan itibaren kodlamaya ilgi duyan Darrius, bilişimi hem gizemli hem de erişilebilir buldu ve onu yaratıcılık ve problem çö...

Daha Fazlasını Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 2,169,908 | Sürüm: 2026.4 just released
Still Scrolling Icon

Hala Kaydiriyor musunuz?

Hızlı bir kanit mi istiyorsunuz? PM > Install-Package BarCode
bir örnek çalıştırın dize barkod haline geldiğini görün.