Birden Fazla Barkodu Aynı Anda Okuma C
IronBarcode, ExpectMultipleBarcodes = true ayarını kullanarak görüntülerden ve PDF'lerden birden fazla BarCode'u aynı anda okuma olanağı sağlar ve lojistik, perakende ve envanter yönetimi uygulamaları için veri işlemeyi kolaylaştırır. Depo sistemleri, perakende satış noktası uygulamaları veya belge işleme çözümleri geliştirirken, IronBarcode'un gelişmiş okuma yetenekleri ihtiyaç duyduğunuz 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 içerdiği her barkod için bir görüntüyü taramak için ne kadar hızlı kullanılabileceğini gösterir. İstediğiniz BarCode türlerinin yanına ExpectMultipleBarcodes = true yazmanız yeterlidir; kalıplaşmış ifadeler yok, zahmet yok.
-
IronBarcode aşağıdaki NuGet Paket Yöneticisi ile yükleyin
PM > Install-Package BarCode -
Bu kod parçacığını kopyalayın ve ç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 için dağıtım yapın
Ücretsiz deneme ile bugün projenizde IronBarcode kullanmaya başlayın
Asgari İş Akışı (5 adım)
- 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ınExpectMultipleBarcodesözelliğini kullanarak tek veya birden fazla barkod okuma yapılandırması yapın- Performansı artırmak için
ExpectMultipleBarcodesözelliğini false olarak ayarlayın - Barkod değerlerini yazdırın
Görüntüden Birden Fazla Barkodu Nasıl Okurum?
Varsayılan olarak IronBarcode, bir belgeyi sürekli tarar ve birden fazla barkodu okur. Ancak, bazen birden fazla barkod mevcutken yalnızca bir barkod değeri döndürüldüğü durumlar yaşanmıştır. Bunu ele almak için, aşağıda gösterildiği gibi birden fazla barkodu okumayı etkinleştirici ayarları özelleştirin. ExpectMultipleBarcodes özelliği hem BarcodeReaderOptions hem de PdfBarcodeReaderOptions sınıflarında bulunur ve bu sayede hem görüntülerdeki hem de PDF belgelerindeki BARCODE'ları 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 değerini true olarak ayarlamak, IronBarcode'un tüm belgeyi tarayarak birden fazla BarCode'u taramasını ve bunları BarcodeResults değişkeninde saklamasını sağlar. foreach döngüsünü kullanarak, tüm BarCode değerlerine kolayca erişebilir ve bunları konsola PRINT edebilirsiniz.
Gelişmiş Çoklu Barkod Okuma Senaryoları
Birden fazla barkodla çalışırken, ek yapılandırma gerektiren senaryolarla karşılaşabilirsiniz. Bu karmaşık belgeden farklı formatlarda birden fazla barkodu nasıl okuyabileceğinizi 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 sergiler:
- Karışık 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ını optimize etme: Hız ve doğruluğu okuma hızı seçenekleri ile dengeleme
- Güven puanları: Her algılanan barkod için güven eşiğine erişme
Tek Bir Barkodu Daha İyi Performans İçin Nasıl Okurum?
IronBarcode, görüntülerde veya PDF'lerde hem tek hem de birden fazla barkod okur. Varsayılan olarak, motor yalnızca bir barkod bulunsa bile tüm belgeyi tarar. Tek bir BARCODE'u okurken performansı artırmak için ExpectMultipleBarcodes değerini false olarak ayarlayın. Bu, motorun ilk barkodu algıladıktan sonra tüm belgeyi taramayı durdurarak daha hızlı barkod alımına olanak tanır. Aşağıdaki kod bu yaklaşımı gösterir.
: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 birden fazla BARCODE içeren aynı görüntüyü kullandık, ancak ExpectMultipleBarcodes değerini false olarak ayarladık. Sonuç olarak, yalnızca ilk barkod değeri döndürülür ve tarama işlemi ilk barkod alındığında durur.
Kırpma Bölgeleri ile Tek Barkod Okumayı Optimize Etme
Tekli BARCODE'ları okurken daha da iyi performans elde etmek için, ExpectMultipleBarcodes = false ayarını kırpma bölgesi özellikleriyle birleştirin. Bu teknik, barkodun yaklaşık konumunu 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ıdır?
ExpectMultipleBarcodes = false ayarının yapılması, tekli BarCode'ların okunma verimliliğini büyük ölçüde artırır. Performans artışı, özellikle yüksek çözünürlüklü görüntülerle çalışırken veya yüksek verimli uygulamalarda asenkron barkod okuma uygulanırken farkedilir.
Sağlanan kod parçacığını kullanarak, aynı makinede ExpectMultipleBarcodes = true ve false ayarları arasındaki performans farkının kabaca bir tahmini şöyledir:
| ExpectMultipleBarcodes = true | ExpectMultipleBarcodes = false |
|---|---|
| 00.91 saniye | 00.10 saniye |
Bu, tek barkod okuma sırasında yaklaşık 9 kat performans iyileştirmesini temsil eder. Gerçek performans kazancı aşağıdakilere bağlı olarak değişir:
- Görüntü çözünürlüğü ve karmaşıklığı
- Görüntüde mevcut barkod sayısı
- Seçilen barkod formatları
- Uygulanan görüntü filtreleri
- Donanım özellikleri
Çoklu Barkod Okuma için En İyi Uygulamalar
Üretim uygulamalarında çoklu barkod okuma uygularken, bu en iyi uygulamaları göz önünde bulundurun:
-
Beklenen BARCODE Türlerini Belirtin:
BarcodeEncoding.Allkullanmak yerine, yalnızca 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. Optimum barkod görüntüleri oluşturmaya dair daha fazlasını öğrenin.
-
Kusurlu Barkodlarla Baş Etme: Gerçek dünya barkodları hasarlı veya kötü basılmış olabilir. Okuma başarı oranlarını artırmak için görüntü düzeltme tekniklerini kullanın.
-
Akış İşleme: Büyük partiler için, bellek kullanımını optimize etmek adına akışlardan okuma yöntemini düşünün.
- Hata Yönetimi: Barkodların okunamadığı senaryolar için her zaman uygun hata yönetimi uygulayın:
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 uygulamaları izleyerek ve IronBarcode'un kapsamlı özelliklerini kullanarak, çeşitli endüstriler ve kullanım durumları arasında çoklu barkod okuma senaryolarını verimli bir şekilde ele alan sağlam uygulamalar oluşturabilirsiniz.
Sıkça Sorulan Sorular
C# 'ta tek bir görüntüden birden çok barkod nasıl okunur?
IronBarcode ile, BarcodeReaderOptions'da ExpectMultipleBarcodes = true ayarlayarak tek bir görüntüden birden çok barkod okuyabilirsiniz. Bu, IronBarcode'un tüm belgeyi taramasını ve bir BarcodeResults koleksiyonunda bulduğu tüm barkodları döndürmesini sağlar. Bu, daha sonra kolejda gezdirilebilir.
Bir görüntüdeki tüm barkodları taramanın en hızlı yolu nedir?
En hızlı yaklaşım, IronBarcode'un ExpectMultipleBarcodes = true olan Read yöntemini 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 çıkartır.
PDF belgelerden olduğu gibi görüntülerden çoklu barkod okuyabilir miyim?
Evet, IronBarcode hem görüntü hem de PDF belgelerinden çoklu barkod okumayı destekler. ExpectMultipleBarcodes özelliği hem BarcodeReaderOptions hem de PdfBarcodeReaderOptions sınıflarında mevcuttur, böylece herhangi bir belge türü için çoklu barkod okuma konfigüre edebilirsiniz.
ExpectMultipleBarcodes'u true olarak ayarlamazsam ne olur?
Varsayılan olarak, IronBarcode belgeleri çoklu barkodları için sürekli olarak tarar. Ancak, bazı durumlarda, birden fazla barkod mevcut olduğunda yalnızca bir barkod değeri döndürülebilir. ExpectMultipleBarcodes = true açıkça ayarlamak, IronBarcode'un belge içindeki tüm barkodları taramasını ve döndürmesini sağlar.
Birden çok barkod okuduktan sonra ayrı barkod değerlerine nasıl erişirim?
IronBarcode ile birden fazla barkod okuduktan sonra, sonuçlar bir BarcodeResults değişkenine kaydedilir. Her bir barkodun değerini, metnini ve format özelliklerini işlemek için koleksiyonda bir foreach döngüsü kullanarak kolayca erişebilirsiniz.
Perakende ve lojistik uygulamalarında birden fazla barkod okumak uygun mu?
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. Sevk etiketlerinde, ürün kataloglarında veya envanter cetvellerinde tüm barkodları aynı anda tarayarak veri işlemlerini hızlandırır.
Birden fazla barkodu okurken hangi barkod türlerini arayacağını belirtebilir miyim?
Evet, IronBarcode, BeklenenBarkodTürleri özelliği kullanılarak beklenen barkod türlerini belirtmenize olanak tanır. Tarama performansını optimize etmek için, AllOneDimensional, QRCode veya desteklenen barkod türlerinden herhangi bir kombinasyonu taramak üzere ayarlayabilirsiniz.
ExpectMultipleBarcodes'un ayarlanması tarama performansını etkiler mi?
Bir belgede yalnızca bir barkodun bulunduğunu bildiğinizde, ExpectMultipleBarcodes = false ayarlamak performansı artırabilir. IronBarcode, ilk barkodu bulduktan sonra taramayı durdurur ve bu tek barkod içeren senaryolar için daha hızlı olmasını sağlar, ancak gerektiğinde çoklu barkod okumayı da mümkündür.
Bir projede IronBarcode'u uygulamak için hangi programlama becerileri gereklidir?
IronBarcode'u bir projede uygulamak için temel C# programlama bilgisi yeterlidir, çünkü bu kütüphane, geliştiricilere rehberlik eden basit yöntemler ve kapsamlı belgeler sağlar.
IronBarcode, hem küçük projeler hem de büyük kurumsal uygulamalar için uygun mu?
IronBarcode, küçük projeler kadar geniş çaplı kurumsal uygulamalar için de uygun, ölçeklenebilir ve çok yönlü olacak şekilde tasarlanmıştır ve sağlam barkod çözümleri gerektiren uygulamalara hizmet eder.

