Wie man mehrere Barcodes gleichzeitig in C# liest

Mehrere BarCodes gleichzeitig lesen in C#35;

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

IronBarcode ermöglicht das gleichzeitige Lesen mehrerer Barcodes aus Bildern und PDFs durch die Einstellung ExpectMultipleBarcodes = true, wodurch die Datenverarbeitung für Logistik-, Einzelhandels- und Bestandsverwaltungsanwendungen rationalisiert wird. Egal, ob Sie Lagersysteme, Kassenanwendungen für den Einzelhandel oder Lösungen für die Dokumentenverarbeitung entwickeln, IronBarcode's fortschrittliche Lesefunktionen bieten die Zuverlässigkeit und Leistung, die Sie benötigen.

Schnellstart: Scannen Sie einfach alle Barcodes aus einem Bild

Dieses Beispiel zeigt, wie schnell Sie IronBarcode verwenden können, um ein Bild nach allen darin enthaltenen Barcodes zu scannen. Setzen Sie einfach ExpectMultipleBarcodes = true neben den gewünschten Barcodetypen - kein Boilerplate, kein Aufwand.

Nuget IconLegen Sie jetzt mit NuGet los, um PDFs zu erstellen:

  1. Installieren Sie IronBarcode mit dem NuGet-Paketmanager.

    PM > Install-Package BarCode

  2. Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    var results = IronBarCode.BarcodeReader.Read("image.png", new IronBarCode.BarcodeReaderOptions { ExpectMultipleBarcodes = true, ExpectBarcodeTypes = IronBarCode.BarcodeEncoding.AllOneDimensional });
  3. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute mit der Nutzung von IronBarcode in Ihrem Projekt – mit einer kostenlosen Testversion.
    arrow pointer


Wie lese ich mehrere BarCodes aus einem Bild?

Standardmäßig scannt IronBarcode kontinuierlich ein Dokument, um mehrere Barcodes zu lesen. Es gibt jedoch Fälle, in denen nur ein BarCode-Wert zurückgegeben wird, auch wenn mehrere BarCodes vorhanden sind. Passen Sie daher die Einstellungen an, um das Lesen mehrerer BarCodes zu ermöglichen, wie unten gezeigt. Die Eigenschaft ExpectMultipleBarcodes ist sowohl in den Klassen BarCodeReaderOptions als auch PdfBarCodeReaderOptions vorhanden, so dass sie für das Lesen von Barcodes sowohl in Bildern als auch in PDF-Dokumenten verwendet werden kann.

Drei Beispiel-Barcodes mit den Bezeichnungen A, B und C, die verschiedene Balkenmuster für die Demonstration des Lesens mehrerer Barcodes zeigen
: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());
}
$vbLabelText   $csharpLabel

Wenn Sie ExpectMultipleBarcodes auf true setzen, scannt IronBarcode das gesamte Dokument nach mehreren Barcodes und speichert diese in der Variablen BarcodeResults. Mit einer foreach-Schleife können Sie ganz einfach auf alle Barcodewerte zugreifen und sie auf der Konsole ausgeben.

Erweiterte Szenarien zum Lesen mehrerer BarCodes

Wenn Sie mit mehreren BarCodes arbeiten, können Sie auf Szenarien stoßen, die eine zusätzliche Konfiguration erfordern. Hier ist ein umfassendes Beispiel, das zeigt, wie man mehrere Barcodes mit unterschiedlichen Formaten aus einem komplexen Dokument liest:

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("---");
}
$vbLabelText   $csharpLabel

In diesem fortgeschrittenen Beispiel werden mehrere wichtige Funktionen vorgestellt:

Wie kann ich einen einzelnen BarCode lesen, um die Leistung zu verbessern?

IronBarcode liest sowohl einzelne als auch mehrere Barcodes in Bildern oder PDFs. Standardmäßig scannt die Engine das gesamte Dokument, auch wenn nur ein Barcode vorhanden ist. Um die Leistung beim Lesen eines einzelnen Barcodes zu erhöhen, setzen Sie ExpectMultipleBarcodes auf false. Dadurch wird verhindert, dass die Engine nach der Erkennung des ersten Barcodes das gesamte Dokument scannt, was zu einer schnelleren Abfrage von Barcodes führt. Der folgende Code veranschaulicht diesen Ansatz.

Drei identische Beispiel-Barcodes mit den Bezeichnungen A, B und C zur Demonstration des Barcode-Lesens
: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());
}
$vbLabelText   $csharpLabel

In diesem Beispiel haben wir dasselbe Bild mit mehreren BarCodes wie zuvor verwendet, aber ExpectMultipleBarcodes auf false gesetzt. Infolgedessen wird nur der erste Barcode-Wert zurückgegeben, und der Scanvorgang stoppt, sobald der erste Barcode erfasst wird.

Optimierung des Lesens einzelner BarCodes mit Crop-Regionen

Für eine noch bessere Leistung beim Lesen einzelner Barcodes kombinieren Sie die Einstellung ExpectMultipleBarcodes = false mit Spezifikationen für den Beschnittbereich. Diese Technik ist besonders nützlich, wenn Sie die ungefähre Position Ihres Barcodes kennen:

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");
}
$vbLabelText   $csharpLabel

Wie viel schneller ist das Lesen eines einzelnen Barcodes?

Die Einstellung ExpectMultipleBarcodes auf false verbessert die Effizienz beim Lesen einzelner Barcodes erheblich. Der Leistungsgewinn ist besonders bei der Arbeit mit hochauflösenden Bildern oder bei der Implementierung von asynchronem Barcode-Lesen in Anwendungen mit hohem Durchsatz spürbar.

Bei Verwendung des bereitgestellten Codeausschnitts ist hier eine grobe Schätzung des Leistungsunterschieds zwischen dem Setzen von ExpectMultipleBarcodes auf true und false auf demselben Rechner:

ExpectMultipleBarcodes = true ExpectMultipleBarcodes = false
00.91 Sekunde 00.10 Sekunden

Dies entspricht etwa einer 9fachen Leistungssteigerung beim Lesen einzelner Barcodes. Der tatsächliche Leistungsgewinn variiert je nach:

  • Bildauflösung und Komplexität
  • Anzahl der im Bild vorhandenen BarCodes
  • Ausgewählte BarCode-Formate
  • Angewandte Bildfilter
  • Hardware-Spezifikationen

Best Practices für das Lesen mehrerer BarCodes

Beachten Sie bei der Implementierung des Lesens mehrerer Barcodes in Produktionsanwendungen die folgenden Best Practices:

  1. Specify Expected Barcode Types: Anstatt BarcodeEncoding.All zu verwenden, geben Sie nur die Formate an, die Sie erwarten. Dies verbessert die Leistung erheblich.

  2. Geeignete Bildformate verwenden: Die besten Ergebnisse erzielen Sie mit kontrastreichen Bildern. Erfahren Sie mehr über die Erstellung optimaler Barcode-Bilder.

  3. Behandeln Sie unvollkommene BarCodes: BarCodes in der realen Welt können beschädigt oder schlecht gedruckt sein. Verwenden Sie Bildkorrekturtechniken, um die Leserate zu verbessern.

  4. Stream Processing: Bei großen Stapeln sollte das Lesen aus Streams in Betracht gezogen werden, um die Speichernutzung zu optimieren.

  5. Fehlerbehandlung: Implementieren Sie immer eine angemessene Fehlerbehandlung für Szenarien, in denen Barcodes nicht gelesen werden können:
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
}
$vbLabelText   $csharpLabel

Wenn Sie diese Praktiken befolgen und die umfassenden Funktionen von IronBarcode nutzen, können Sie robuste Anwendungen erstellen, die mehrere Barcode-Leseszenarien in verschiedenen Branchen und Anwendungsfällen effizient verarbeiten.

Häufig gestellte Fragen

Wie kann ich in C# mehrere Barcodes aus einem einzigen Bild lesen?

Mit IronBarcode können Sie mehrere Barcodes aus einem einzigen Bild lesen, indem Sie ExpectMultipleBarcodes = true in den BarcodeReaderOptions setzen. Dadurch kann IronBarcode das gesamte Dokument scannen und alle gefundenen Barcodes in einer BarcodeResults-Sammlung zurückgeben, die Sie durchlaufen können.

Wie kann ich am schnellsten alle BarCodes in einem Bild scannen?

Der schnellste Ansatz ist die Verwendung der IronBarcode Lesemethode mit ExpectMultipleBarcodes = true: var results = IronBarCode.BarcodeReader.Read("image.png", new IronBarCode.BarcodeReaderOptions { ExpectMultipleBarcodes = true }). Dieser minimale Code extrahiert alle Barcodewerte ohne komplexe Konfiguration.

Kann ich mehrere Barcodes aus PDF-Dokumenten und Bildern lesen?

Ja, IronBarcode unterstützt das Lesen mehrerer Barcodes sowohl aus Bildern als auch aus PDF-Dokumenten. Die Eigenschaft ExpectMultipleBarcodes ist sowohl in den Klassen BarcodeReaderOptions als auch PdfBarcodeReaderOptions verfügbar, so dass Sie das Lesen mehrerer Barcodes für jeden Dokumententyp konfigurieren können.

Was passiert, wenn ich ExpectMultipleBarcodes nicht auf true setze?

Standardmäßig scannt IronBarcode Dokumente kontinuierlich auf mehrere Barcodes. In manchen Fällen wird jedoch nur ein Barcodewert zurückgegeben, auch wenn mehrere Barcodes vorhanden sind. Durch die Einstellung ExpectMultipleBarcodes = true wird explizit sichergestellt, dass IronBarcode alle Barcodes im Dokument scannt und zurückgibt.

Wie greife ich auf einzelne Barcodewerte zu, nachdem ich mehrere Barcodes gelesen habe?

Nach dem Lesen mehrerer Barcodes mit IronBarcode werden die Ergebnisse in einer BarcodeResults-Variablen gespeichert. Mit einer foreach-Schleife können Sie ganz einfach auf einzelne Barcodewerte zugreifen, um die Sammlung zu durchlaufen und die Werte, Texte und Formateigenschaften der einzelnen Barcodes zu verarbeiten.

Ist das Lesen mehrerer Barcodes für Anwendungen im Einzelhandel und in der Logistik geeignet?

Ja, IronBarcodes Fähigkeit, mehrere Barcodes zu lesen, ist ideal für Einzelhandels-Kassensysteme, Lagerverwaltung, Logistik-Tracking und Bestandsmanagement-Anwendungen. Es rationalisiert die Datenverarbeitung durch effizientes gleichzeitiges Scannen aller Barcodes in Versandetiketten, Produktkatalogen oder Inventarblättern.

Kann ich angeben, nach welchen Barcodetypen gesucht werden soll, wenn ich mehrere Barcodes lese?

Ja, IronBarcode ermöglicht es Ihnen, die erwarteten Barcodetypen mit der Eigenschaft ExpectBarcodeTypes anzugeben. Sie können festlegen, dass nach bestimmten Formaten wie AllOneDimensional, QRCode oder einer beliebigen Kombination von unterstützten Barcodetypen gescannt wird, um die Scanleistung zu optimieren.

Wirkt sich die Einstellung ExpectMultipleBarcodes auf die Scanleistung aus?

Die Einstellung ExpectMultipleBarcodes = false kann die Leistung erhöhen, wenn Sie wissen, dass nur ein Barcode im Dokument vorhanden ist. IronBarcode stoppt das Scannen, nachdem der erste Barcode gefunden wurde, und ist damit schneller für Szenarien mit nur einem Barcode, bietet aber dennoch die Flexibilität, bei Bedarf mehrere Barcodes zu lesen.

Hairil Hasyimi Bin Omar
Software Ingenieur
Wie alle großen Ingenieure ist Hairil ein leidenschaftlicher Lerner. Er verfeinert sein Wissen in C#, Python und Java, um Iron Software-Teammitgliedern Mehrwert zu bieten. Hairil kam von der Universiti Teknologi MARA in Malaysia, wo er seinen Bachelor in Chemie- und Verfahrenstechnik abschloss.
Bereit anzufangen?
Nuget Downloads 2,035,202 | Version: 2025.12 gerade veröffentlicht