C#'ta Birden Fazla Barkodu Aynı Anda Nasıl Okurum
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.
-
NuGet Paket Yöneticisi ile https://www.nuget.org/packages/BarCode yükleyin
PM > Install-Package BarCode -
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 }); -
Canlı ortamınızda test etmek için dağıtın
Bugün projenizde IronBarcode kullanmaya başlayın ücretsiz deneme ile
Minimal Is Akisi (5 adimda)
- Birden fazla barkod okumak için C# kütüphanesini indirin
Readyöntemini kullanarak çeşitli görüntü formatlarından barkod değerlerini çıkarın- Tek veya çoklu barkodları okumayı yapılandırmak için
ExpectMultipleBarcodesözelliğini kullanın - Performansı artırmak için
ExpectMultipleBarcodesözelliğini false olarak ayarlayın - Barkod değerlerini yazdırın
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.
: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
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
Bu gelişmiş örnek, birkaç önemli özelliği sergiliyor:
- Karma barkod format desteği: Farklı barkod kodlama türlerini birleştirme
- Görüntü düzeltme filtreleri: Okuma doğruluğunu artırmak için görüntü filtreleri kullanma
- Okuma hızı optimizasyonu: okuma hızı seçenekleri ile hız ve doğruluk dengesini sağlama
- Güven skoru: Tespit edilen her bir barkod için güven eşiğine erişme
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.
: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
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
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:
-
Beklenen Barkod Türlerini Belirtin:
BarcodeEncoding.Allkullanmak yerine, sadece beklediğiniz formatları belirtin. Bu, performansı önemli ölçüde iyileştirir. -
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.
-
Kusurlu Barkodlari Yonetme: Gerçek dunya barkodlari zarar gormus veya kotu yazdirilmis olabilir. Okuma basarilarini arttirmak icin resim düzeltme tekniklerini kullanin.
-
Akim İşleme: Buyuk partiler icin, bellek kullanimini optimize etmek adina akimlardan okumayi dusunun.
- 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
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.

