C# ile Birden Fazla Barkod Nasıl Tek Seferde Okunur

C#'ta Birden Fazla Barkodu Aynı Anda Nasıl Okurum

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

IronBarcode, lojistik, perakende ve envanter yönetimi uygulamaları için veri işleme sürecini kolaylaştırarak, görsellerden ve PDF'lerden aynı anda birden fazla barkodun okunmasını ExpectMultipleBarcodes = true ayarlayarak sağlar. İster depo sistemleri, perakende satış noktası uygulamaları veya belge işleme çözümleri oluşturuyor olun, IronBarcode'un gelişmiş okuma yetenekleri ihtiyaçınız olan güvenilirliği ve performansı sağlar.

Hızlı Başlangıç: Bir Görüntüden Tüm Barkodları Kolayca Okuyun

Bu örnek, IronBarcode'un bir görseli içerdiği tüm barkodları hızlı bir şekilde taramak için nasıl kullanılacağını gösterir. Sadece istediginiz barkod türleri ile birlikte ExpectMultipleBarcodes = true ayarlayın—hazır şablon yok, zahmet yok.

  1. NuGet Paket Yöneticisi ile https://www.nuget.org/packages/BarCode yükleyin

    PM > Install-Package BarCode
  2. Bu kod parçasını kopyalayıp çalıştırın.

    var results = IronBarCode.BarcodeReader.Read("image.png", new IronBarCode.BarcodeReaderOptions { ExpectMultipleBarcodes = true, ExpectBarcodeTypes = IronBarCode.BarcodeEncoding.AllOneDimensional });
  3. Canlı ortamınızda test etmek için dağıtın

    Bugün projenizde IronBarcode kullanmaya başlayın ücretsiz deneme ile

    arrow pointer


Bir Görüntüden Birden Fazla Barkod Nasıl Okunur?

Varsayılan olarak, IronBarcode birden fazla barkodu okumak için bir belgeyi sürekli olarak tarar. Ancak, birden fazla barkod mevcut olduğunda bile yalnızca bir barkod değeri döndürülen durumlar olmuştur. Bunu çözmek için ayarları özelleştirerek aşağıda gösterildiği gibi birden fazla barkodu okumayı etkinleştirin. ExpectMultipleBarcodes özelliği, BarcodeReaderOptions ve PdfBarcodeReaderOptions sınıflarında mevcuttur ve onu hem görüntülerde hem de PDF belgelerinde barkod okumak için kullanabilirsiniz.

A, B ve C olarak etiketlenmiş üç örnek barkod, çoklu barkod okuma demonstrasyonu için farklı çubuk desenleri gösteriyor
:path=/static-assets/barcode/content-code-examples/how-to/read-multiple-barcodes-read-multiple-barcodes.cs
using IronBarCode;
using System;

// Set the option to read multiple barcodes
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional,
};

// Read barcode
var results = BarcodeReader.Read("testbc1.png", options);

foreach (var result in results)
{
    Console.WriteLine(result.ToString());
}
Imports IronBarCode
Imports System

' Set the option to read multiple barcodes
Private options As New BarcodeReaderOptions() With {
	.ExpectMultipleBarcodes = True,
	.ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional
}

' Read barcode
Private results = BarcodeReader.Read("testbc1.png", options)

For Each result In results
	Console.WriteLine(result.ToString())
Next result
$vbLabelText   $csharpLabel

ExpectMultipleBarcodes özelliğini true olarak ayarlamak, IronBarcode'un birden fazla barkodu bulmak için tüm belgeyi taramasına ve bunları BarcodeResults değişkenine kaydetmesine olanak tanır. Bir foreach döngüsü kullanarak, tüm barkod değerlerine kolayca erişebilir ve konsola yazdırabilirsiniz.

Gelişmiş Çoğunlukla Barkod Okuma Senaryoları

Çoklu barkodlarla çalışırken, ek yapılandırma gerektiren senaryolarla karşılaşabilirsiniz. İşte, karmaşık bir belgeden farklı formatlarda birden fazla barkodu nasıl okuyacağınızı gösteren kapsamlı bir örnek:

using IronBarCode;
using System;
using System.Linq;

// Configure advanced options for mixed barcode types
BarcodeReaderOptions advancedOptions = new BarcodeReaderOptions()
{
    ExpectMultipleBarcodes = true,
    // Read both 1D and 2D barcodes
    ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional | BarcodeEncoding.QRCode | BarcodeEncoding.DataMatrix,
    // Apply image correction filters for better accuracy
    ImageFilters = new ImageFilterCollection() {
        new SharpenFilter(),
        new ContrastFilter()
    },
    // Set speed vs accuracy balance
    Speed = ReadingSpeed.Balanced
};

// Read from various sources
var imageResults = BarcodeReader.Read("mixed-barcodes.jpg", advancedOptions);
var pdfResults = BarcodeReader.ReadPdf("document-with-barcodes.pdf", advancedOptions);

// Process results with error handling
foreach (var result in imageResults)
{
    Console.WriteLine($"Barcode Type: {result.BarcodeType}");
    Console.WriteLine($"Value: {result.Value}");
    Console.WriteLine($"Confidence: {result.Confidence}%");
    Console.WriteLine($"Page: {result.PageNumber}");
    Console.WriteLine("---");
}
using IronBarCode;
using System;
using System.Linq;

// Configure advanced options for mixed barcode types
BarcodeReaderOptions advancedOptions = new BarcodeReaderOptions()
{
    ExpectMultipleBarcodes = true,
    // Read both 1D and 2D barcodes
    ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional | BarcodeEncoding.QRCode | BarcodeEncoding.DataMatrix,
    // Apply image correction filters for better accuracy
    ImageFilters = new ImageFilterCollection() {
        new SharpenFilter(),
        new ContrastFilter()
    },
    // Set speed vs accuracy balance
    Speed = ReadingSpeed.Balanced
};

// Read from various sources
var imageResults = BarcodeReader.Read("mixed-barcodes.jpg", advancedOptions);
var pdfResults = BarcodeReader.ReadPdf("document-with-barcodes.pdf", advancedOptions);

// Process results with error handling
foreach (var result in imageResults)
{
    Console.WriteLine($"Barcode Type: {result.BarcodeType}");
    Console.WriteLine($"Value: {result.Value}");
    Console.WriteLine($"Confidence: {result.Confidence}%");
    Console.WriteLine($"Page: {result.PageNumber}");
    Console.WriteLine("---");
}
Imports IronBarCode
Imports System
Imports System.Linq

' Configure advanced options for mixed barcode types
Dim advancedOptions As New BarcodeReaderOptions() With {
    .ExpectMultipleBarcodes = True,
    ' Read both 1D and 2D barcodes
    .ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional Or BarcodeEncoding.QRCode Or BarcodeEncoding.DataMatrix,
    ' Apply image correction filters for better accuracy
    .ImageFilters = New ImageFilterCollection() From {
        New SharpenFilter(),
        New ContrastFilter()
    },
    ' Set speed vs accuracy balance
    .Speed = ReadingSpeed.Balanced
}

' Read from various sources
Dim imageResults = BarcodeReader.Read("mixed-barcodes.jpg", advancedOptions)
Dim pdfResults = BarcodeReader.ReadPdf("document-with-barcodes.pdf", advancedOptions)

' Process results with error handling
For Each result In imageResults
    Console.WriteLine($"Barcode Type: {result.BarcodeType}")
    Console.WriteLine($"Value: {result.Value}")
    Console.WriteLine($"Confidence: {result.Confidence}%")
    Console.WriteLine($"Page: {result.PageNumber}")
    Console.WriteLine("---")
Next
$vbLabelText   $csharpLabel

Bu gelişmiş örnek, birkaç önemli özelliği sergiliyor:

Daha İyi Performans İçin Tek Bir Barkod Nasıl Okunur?

IronBarcode, görüntülerde veya PDF'lerde hem tek hem de çoklu barkodları okur. Varsayılan olarak, motor yalnızca bir barkod olsa bile tüm belgeyi tarar. Tek bir barkod okurken performansı artırmak için ExpectMultipleBarcodes özelliğini false yapın. Bu, ilk barkod tespit edildikten sonra motorun tüm belgeyi taramayı durdurmasını sağlar ve daha hızlı barkod bulunmasını sağlar. Aşağıdaki kod bu yaklaşımı göstermektedir.

Barkod okuma gösterimi için A, B ve C olarak etiketlenmiş üç özdeş örnek barkod
:path=/static-assets/barcode/content-code-examples/how-to/read-multiple-barcodes-read-single-barcode.cs
using IronBarCode;
using System;

// Set the option to read single barcode
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    ExpectMultipleBarcodes = false,
    ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional,
};

// Read barcode
var results = BarcodeReader.Read("testbc1.png", options);

foreach (var result in results)
{
    Console.WriteLine(result.ToString());
}
Imports IronBarCode
Imports System

' Set the option to read single barcode
Private options As New BarcodeReaderOptions() With {
	.ExpectMultipleBarcodes = False,
	.ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional
}

' Read barcode
Private results = BarcodeReader.Read("testbc1.png", options)

For Each result In results
	Console.WriteLine(result.ToString())
Next result
$vbLabelText   $csharpLabel

Bu örnekte, daha önce olduğu gibi aynı görüntüyü birden fazla barkodla kullandık, ancak ExpectMultipleBarcodes false olarak ayarlandı. Sonuç olarak, yalnızca ilk barkod değeri döndürülür ve ilk barkod bulunduğunda tarama işlemi durur.

Kırpılmış Bölgeler ile Tek Barkod Okumasını Optimize Etme

Tek barkod okuma performansını daha da artırmak için, ExpectMultipleBarcodes = false ayarını kırpma bölgesi özellikleri ile birleştirin. Bu teknik, barkodunuzun yaklaşık yerini bildiğinizde özellikle kullanışlıdır:

using IronBarCode;
using IronSoftware.Drawing;

// Define a crop region where the barcode is likely located
var cropRegion = new Rectangle(100, 100, 300, 200);

// Configure options for optimal single barcode reading
BarcodeReaderOptions optimizedOptions = new BarcodeReaderOptions()
{
    ExpectMultipleBarcodes = false,
    ExpectBarcodeTypes = BarcodeEncoding.Code128,
    CropArea = cropRegion,
    Speed = ReadingSpeed.Faster
};

// Read with optimized settings
var result = BarcodeReader.Read("product-label.png", optimizedOptions).FirstOrDefault();

if (result != null)
{
    Console.WriteLine($"Barcode found: {result.Value}");
    Console.WriteLine($"Read time: {result.ReadTime}ms");
}
using IronBarCode;
using IronSoftware.Drawing;

// Define a crop region where the barcode is likely located
var cropRegion = new Rectangle(100, 100, 300, 200);

// Configure options for optimal single barcode reading
BarcodeReaderOptions optimizedOptions = new BarcodeReaderOptions()
{
    ExpectMultipleBarcodes = false,
    ExpectBarcodeTypes = BarcodeEncoding.Code128,
    CropArea = cropRegion,
    Speed = ReadingSpeed.Faster
};

// Read with optimized settings
var result = BarcodeReader.Read("product-label.png", optimizedOptions).FirstOrDefault();

if (result != null)
{
    Console.WriteLine($"Barcode found: {result.Value}");
    Console.WriteLine($"Read time: {result.ReadTime}ms");
}
Imports IronBarCode
Imports IronSoftware.Drawing

' Define a crop region where the barcode is likely located
Dim cropRegion As New Rectangle(100, 100, 300, 200)

' Configure options for optimal single barcode reading
Dim optimizedOptions As New BarcodeReaderOptions() With {
    .ExpectMultipleBarcodes = False,
    .ExpectBarcodeTypes = BarcodeEncoding.Code128,
    .CropArea = cropRegion,
    .Speed = ReadingSpeed.Faster
}

' Read with optimized settings
Dim result = BarcodeReader.Read("product-label.png", optimizedOptions).FirstOrDefault()

If result IsNot Nothing Then
    Console.WriteLine($"Barcode found: {result.Value}")
    Console.WriteLine($"Read time: {result.ReadTime}ms")
End If
$vbLabelText   $csharpLabel

Tek Barkod Okuma Ne Kadar Hızlı?

ExpectMultipleBarcodes özelliğini false yapmak, tek barkodların okunmasının verimliliğini büyük ölçüde artırır. Yüksek çözünürlüklü görüntülerle çalışırken veya yüksek verimli uygulamalarda asenkron barkod okuma uygularken performans artışı özellikle fark edilir.

Verilen kod parçasını kullanarak, aynı makinede ExpectMultipleBarcodes özelliğinin true ve false olarak ayarlanmasının performans farkının kabaca bir tahmini:

ExpectMultipleBarcodes = true ExpectMultipleBarcodes = false
00,91 saniye 00,10 saniye

Bu, tek barkodları okurken yaklaşık 9x performans iyileştirmesini temsil eder. Gerçek performans kazancı, şunlara bağlı olarak değişir:

  • Görüntü çözünürlüğü ve karmaşıklığı
  • Görüntüde bulunan barkod sayısı
  • Seçilen barkod formatları
  • Uygulanan görüntü filtreleri
  • Donanım özellikleri

Çoklu Barkod Okumada En İyi Uygulamalar

Üretimde çoklu barkod okuma uygularken şu en iyi uygulamaları göz önünde bulundurun:

  1. Beklenen Barkod Türlerini Belirtin: BarcodeEncoding.All kullanmak yerine, sadece beklediğiniz formatları belirtin. Bu, performansı önemli ölçüde iyileştirir.

  2. Uygun Görüntü Formatlarını Kullanın: En iyi sonuçlar için, yüksek kontrastlı görüntüler kullanın. Daha fazla bilgi icin optimum barkod resimleri oluşturmak hakkinda.

  3. Kusurlu Barkodlari Yonetme: Gerçek dunya barkodlari zarar gormus veya kotu yazdirilmis olabilir. Okuma basarilarini arttirmak icin resim düzeltme tekniklerini kullanin.

  4. Akim İşleme: Buyuk partiler icin, bellek kullanimini optimize etmek adina akimlardan okumayi dusunun.

  5. Hata İşlemesi: Barkodlarin okunamadigi senaryolar icin her zaman uygun hata işlemesi uygulayin:
try
{
    var results = BarcodeReader.Read("barcodes.png", new BarcodeReaderOptions 
    { 
        ExpectMultipleBarcodes = true 
    });

    if (!results.Any())
    {
        Console.WriteLine("No barcodes found in the image");
    }
    else
    {
        Console.WriteLine($"Found {results.Count()} barcodes");
    }
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading barcodes: {ex.Message}");
    // Log error for debugging
}
try
{
    var results = BarcodeReader.Read("barcodes.png", new BarcodeReaderOptions 
    { 
        ExpectMultipleBarcodes = true 
    });

    if (!results.Any())
    {
        Console.WriteLine("No barcodes found in the image");
    }
    else
    {
        Console.WriteLine($"Found {results.Count()} barcodes");
    }
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading barcodes: {ex.Message}");
    // Log error for debugging
}
Imports System

Try
    Dim results = BarcodeReader.Read("barcodes.png", New BarcodeReaderOptions With {
        .ExpectMultipleBarcodes = True
    })

    If Not results.Any() Then
        Console.WriteLine("No barcodes found in the image")
    Else
        Console.WriteLine($"Found {results.Count()} barcodes")
    End If
Catch ex As Exception
    Console.WriteLine($"Error reading barcodes: {ex.Message}")
    ' Log error for debugging
End Try
$vbLabelText   $csharpLabel

Bu uygulamayi izleyerek ve IronBarcode'un kapsamli özelliklerinden yararlanarak, çeşitli endustrilerde ve kullanim durumlarinda birden fazla barkod okuma senaryosunu etkin sekilde idare eden saglam uygulamalar geliştirebilirsiniz.

Sıkça Sorulan Sorular

C#'ta tek bir görüntüden birden fazla barkod nasıl okuyabilirim?

IronBarcode ile, BarcodeReaderOptions içinde ExpectMultipleBarcodes = true ayarlayarak tek bir görüntüden birden fazla barkodu okuyabilirsiniz. Bu, IronBarcode'un tüm belgeyi taramasını ve bulunan tüm barkodları yineleme yapabileceğiniz bir BarcodeResults koleksiyonunda döndürmesini sağlar.

Bir görüntüdeki tüm barkodları en hızlı bir şekilde nasıl tarayabilirim?

En hızlı yaklaşım, IronBarcode'un Read yöntemini ExpectMultipleBarcodes = true ile kullanmaktır: var results = IronBarCode.BarcodeReader.Read("image.png", new IronBarCode.BarcodeReaderOptions { ExpectMultipleBarcodes = true }). Bu minimal kod, karmaşık yapılandırma olmadan tüm barkod değerlerini çıkarır.

PDF belgelerindeki gibi görüntülerden de birden fazla barkodu okuyabilir miyim?

Evet, IronBarcode hem görüntülerden hem de PDF belgelerinden birden fazla barkod okumayı destekler. ExpectMultipleBarcodes özelliği hem BarcodeReaderOptions hem de PdfBarcodeReaderOptions sınıflarında mevcuttur, bu da herhangi bir belge türü için çoklu barkod okuma yapılandırmanıza olanak tanır.

ExpectMultipleBarcodes'u true olarak ayarlamazsam ne olur?

Varsayılan olarak, IronBarcode belgeleri birden fazla barkod için sürekli tarar. Ancak, bazı durumlarda, birden fazla barkod olsa bile yalnızca bir barkod değeri döndürülebilir. ExpectMultipleBarcodes = true olarak açıkça ayarlamak, IronBarcode'un belgedeki tüm barkodları taradığını ve döndürdüğünü garanti eder.

Birden fazla barkodu okuduktan sonra bireysel barkod değerlerine nasıl erişirim?

IronBarcode ile birden fazla barkod okuduktan sonra, sonuçlar BarcodeResults değişkeninde saklanır. Kolayca her barkodun değerine, metnine ve format özelliklerine erişmek için koleksiyonda bir foreach döngüsü kullanarak yineleme yapabilirsiniz.

Birden fazla barkod okumak, perakende ve lojistik uygulamalar için uygun mudur?

Evet, IronBarcode'un çoklu barkod okuma yeteneği, perakende satış noktası sistemleri, depo yönetimi, lojistik takibi ve envanter yönetimi uygulamaları için idealdir. Nakliye etiketlerindeki, ürün kataloglarındaki veya envanter sayfalarındaki tüm barkodları aynı anda verimli bir şekilde tarayarak veri işlemeyi kolaylaştırır.

Birden fazla barkod okurken hangi barkod türlerinin aranacağını belirtebilir miyim?

Evet, IronBarcode beklenecek barkod türlerini ExpectBarcodeTypes özelliğini kullanarak belirtmenize olanak tanır. Belirli formatları taramak için AllOneDimensional, QRCode veya desteklenen barkod türlerinin herhangi bir kombinasyonunu ayarlayarak tarama performansını optimize edebilirsiniz.

ExpectMultipleBarcodes ayarlamak, tarama performansını etkiler mi?

Bilinen bir durumda belgede yalnızca bir barkod varsa, ExpectMultipleBarcodes = false ayarlamak performansı artırabilir. IronBarcode, ilk barkod bulunduktan sonra taramayı durdurur ve tek barkodlu senaryolar için daha hızlıdır, ancak yine de gerektiğinde çoklu barkod okuma esnekliği sağlar.

Hairil Hasyimi Bin Omar
Yazılım Mühendisi
Tüm harika mühendisler gibi, Hairil de hevesli bir öğrenendir. C#, Python ve Java bilgilerini keskinleştiriyor ve bu bilgilerini, Iron Software ekibi genelinde takım üyelerine değer katmak için kullanıyor. Hairil, Malezya'daki Universiti Teknologi MARA'dan mezun olan Ek Kimya ve Süreç Mühendisliği ...
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.