Wie man Barcodes aus Bildern in C# liest

Lesen von BarCodes aus Bildern mit C#

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

IronBarcode liest Barcodes aus Bildern in C# mit einer einzigen Codezeile unter Verwendung von BarcodeReader.Read() und unterstützt mehrere Bildformate, darunter PNG, JPEG, GIF, BMP, TIFF und SVG, mit anpassbaren Optionen für verbesserte Leistung und Genauigkeit.

Eine der Hauptfunktionen von IronBarcode ist die Fähigkeit, Barcodes sofort in mehreren Bildformaten zu lesen. Die folgenden Bildformate werden derzeit von IronBarcode unterstützt:

  • Scalable Vector Graphics (SVG)
  • Joint Photographic Experts Group (JPEG)
  • Portable Network Graphics (PNG)
  • Graphics Interchange Format (GIF)
  • Tagged Image File Format (TIFF)
  • Bitmap Image File (BMP)

This is made possible with the help of our open source library, IronDrawing. Eine vollständige Liste der unterstützten Barcode-Formate, einschließlich 1D- und 2D-Typen, finden Sie in unserer umfassenden Dokumentation.

als Überschrift:2(Schnellstart: Lesen Sie Barcodes in Sekundenschnelle aus einem Bild)

Mit nur einem einfachen Aufruf von IronBarCode.BarcodeReader.Read() können Sie Barcodedaten direkt aus Bilddateiformaten wie PNG, JPEG, GIF, BMP und TIFF extrahieren. Sofort loslegen – keine komplizierte Einrichtung, nur sofortige Ergebnisse.

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("path/to/image.png");
  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 kann ich BarCodes direkt von Bildern lesen?

Hier erfahren Sie, wie Sie IronBarcode zum Lesen von Barcodes verwenden. Ein umfassendes Tutorial zum Lesen von Barcodes in C# / .NET, einschließlich fortgeschrittener Techniken für die PDF-Verarbeitung und Stapelverarbeitung, finden Sie in unserem ausführlichen Leitfaden:

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-images-1.cs
using IronBarCode;
using System;

var myBarcode = BarcodeReader.Read(@"image_file_path.jpg"); //image file path

foreach (var item in myBarcode)
{
    Console.WriteLine(item.ToString());
}
$vbLabelText   $csharpLabel
Sample QR code with finder patterns for testing barcode reading from images
Beispiel für einen Test-QR-Code
Sample barcode with black vertical lines on white background for testing image-based barcode reading
Beispiel eines Test-Barcodes

Möchten Sie wissen, was die BarCode-Werte in den Beispielen sind? Probieren Sie es mit dem Codeschnipsel aus!

Um IronBarcode zu verwenden, müssen Sie zunächst die IronBarcode-Bibliothek über den Microsoft Visual Studio NuGet-Paketmanager in Ihr Projekt installieren, wie im Bild unten gezeigt. Damit können Sie auf die BarcodeReader.Read()-Methode von IronBarcode zugreifen, um Barcode-Bilder direkt zu lesen.

IronBarcode bietet Einfachheit, indem Benutzer nur BarcodeReader.Read() verwenden können, um eine Bilddatei zu lesen, die bereits im Projekt enthalten ist, indem sie den Dateinamen- oder Dateipfad-String als Parameter der Methode angeben. Die beste Vorgehensweise ist die Verwendung des wörtlichen Zeichenfolgenliterals "@", wenn ein Dateipfad in der Methode angegeben wird, um das Hinzufügen mehrerer Escape-Zeichen "" im Dateipfad-String zu vermeiden.

Fügen Sie die Methode Values() am Ende des Aufrufs der Methode BarcodeReader.Read() an, um den Barcode-Wert als System.String[]-Objekt zu erhalten.

Um das Ergebnis auf der Konsole auszugeben, können Sie eine foreach-Schleife verwenden, um über die im string[]-Array gespeicherten Werte zu iterieren, und innerhalb des Schleifenblocks die Methode Console.WriteLine() mit der Iterator-Variable als Parameter aufrufen.

IronBarcode kann 1-dimensionale Barcodeformate lesen (Codabar, Code128, Code39, Code93, EAN13, EAN18, ITF, MSI, UPCA, UPCE) sowie 2-dimensionale Barcodeformate (Aztec, DataMatrix, QRCode) in verschiedenen Bildformaten.

Wie kann ich die Optionen des BarCode-Readers für eine bessere Leistung konfigurieren?

Finden Sie das Barcode-Lesen zu langsam? Ist der Barcode im Bild zu klein, sodass IronBarcode ihn nicht lesen kann? Möchten Sie nur bestimmte Bereiche eines Bildes lesen? Möchten Sie nur bestimmte Barcode-Typen in einem Bild mit einer Mischung von Barcodes lesen? Möchten Sie die Gesamtleseleistung verbessern?

BarcodeReaderOptions ermöglicht es den Benutzern, das Verhalten des Barcode-Lesers zu optimieren oder anzupassen, um all diese Probleme zu lösen. Ausführliche Beispiele zum Einstellen von Barcode-Leseroptionen finden Sie in unserem umfassenden Leitfaden. In den folgenden Abschnitten werden alle einstellbaren Eigenschaften, die in BarcodeReaderOptions verfügbar sind, einzeln erläutert.

Wie gebe ich an, welcher Bereich des Bildes gelesen werden soll?

CropArea ist eine Eigenschaft vom Typ Iron Software.Drawing.CropRectangle, die in BarcodeReaderOptions verfügbar ist und es Benutzern ermöglicht, den Bereich in einem Bild anzugeben, den IronBarcode lesen soll. Dies trägt zur Verbesserung der Leseleistung bei, da der Barcode-Leser nicht das gesamte Bild nach Barcodes durchsuchen muss, sowie zur Verbesserung der Lesegenauigkeit, da der zu lesende Bereich angegeben wurde. Erfahren Sie mehr darüber, wie Sie Beschnittbereiche für eine optimale Leistung festlegen.

Um die CropArea-Eigenschaft festzulegen, erstellen Sie einfach ein neues Rectangle-Objekt und geben Sie die Rechteckkoordinaten, die Breite und die Länge des Rechtecks als Argumente an. Die akzeptierte Maßeinheit ist Pixel (px).

// Example of setting CropArea
var cropArea = new IronSoftware.Drawing.Rectangle(x: 100, y: 100, width: 300, height: 300);
var options = new BarcodeReaderOptions()
{
    CropArea = cropArea
};
// Example of setting CropArea
var cropArea = new IronSoftware.Drawing.Rectangle(x: 100, y: 100, width: 300, height: 300);
var options = new BarcodeReaderOptions()
{
    CropArea = cropArea
};
$vbLabelText   $csharpLabel

Welche BarCode-Typen sollte ich für ein schnelleres Lesen angeben?

Standardmäßig werden alle von IronBarcode unterstützten Barcodes in einem Bild gescannt. Wenn der Benutzer jedoch weiß, welche Arten von Barcodes verfügbar sind oder in einem Bild gelesen werden sollen, kann die Einstellung dieser Eigenschaft, nur bestimmte Arten von Barcodes zu lesen, die Leseleistung und -genauigkeit erheblich steigern, da der Barcode-Leser nicht durch Sammlungen von Barcodes iterieren muss, um einen Barcode zu interpretieren und zu lesen.

Um diese Eigenschaft zu verwenden, setzen Sie ExpectBarcodeTypes einfach auf eines der Felder des BarcodeEncoding-Enums. Unten sind Beispiele für jeden von IronBarcode unterstützten Barcode-Typ.

// Example: Expect only QR codes and Code128
var options = new BarcodeReaderOptions()
{
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};
// Example: Expect only QR codes and Code128
var options = new BarcodeReaderOptions()
{
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};
$vbLabelText   $csharpLabel

Hier ist eine Liste der Barcode-Typen mit zuvor bereitgestellten Beispielen und Erklärungen.

Wann sollte ich das Lesen mehrerer BarCodes deaktivieren?

IronBarcode wird standardmäßig alle verfügbaren Barcodes in einem Bild scannen, was das Scannen der gesamten Bilddatei und das Hinzufügen der gelesenen Barcode-Werte in das Zeichenfolgenarray einschließt. Wenn Benutzer jedoch keine mehrere Barcodes in einer Bilddatei lesen möchten, können sie diese Eigenschaft auf false setzen, wodurch der Barcode-Leser das Scannen stoppt, sobald ein Barcode-Wert gefunden wurde. Dies wird wiederum die Leistung und die Lesegeschwindigkeit von IronBarcode verbessern. Weitere Informationen zum Lesen mehrerer BarCodes finden Sie in unserem speziellen Leitfaden.

Wie verbessern Bildfilter die Erkennung von Barcodes?

Eine der Eigenschaften, die in BarcodeReaderOptions hinzugefügt werden können, ist eine Sammlung von Bildfiltern. Bildfilter sind wichtig für die Vorverarbeitung des an IronBarcode übermittelten Rohbilds. Um Bildfilter im BarcodeReaderOptions anzuwenden, müssen Benutzer zuerst die zu verwendende ImageFilter-Sammlung initiieren und angeben. Eine umfassende Anleitung zu Bildkorrekturtechniken, einschließlich Filteranwendungen, finden Sie in unserem Tutorial.

Wie kann ich das Threading für eine bessere Leistung optimieren?

IronBarcode ermöglicht Benutzern die Aktivierung und Optimierung der Anzahl der parallelen Thread-Ausführungen, was wiederum die Geschwindigkeit und Effizienz des Prozesses verbessert. Parallele Threads bedeuten die Ausführung mehrerer Threads gleichzeitig auf verschiedenen Prozessorkernen. Die Standardanzahl für die MaxParallelThread-Eigenschaft in IronBarcode ist 4. Benutzer können sie basierend auf den Fähigkeiten und der Menge der ihnen zur Verfügung stehenden Ressourcen anpassen.

Sollte ich die Multithreading-Verarbeitung aktivieren?

Diese Eigenschaft ermöglicht es IronBarcode, mehrere Bilder parallel zu lesen. Der Standard für Multithreaded ist true, wodurch die mehrfachen Threads automatisch verwaltet werden, um die Leistung für Batch-Barcode-Leseaufgaben zu verbessern.

Warum sollte ich falsch positive Messwerte entfernen?

Diese Eigenschaft entfernt alle falsch-positiven Barcode-Lesungen. Falsch-positive Barcode-Lesungen bedeuten einfach eine falsche Lesung von Barcode-Werten, die jedoch als gültig identifiziert werden. Dies kann aufgrund von Fehlern im Sequenzierungsprozess oder Fehlern bei der Barcode-Kennzeichnung oder -Vorbereitung auftreten. Das Setzen von RemoveFalsePositive auf true wird die falsch-positiven Barcode-Lesungen entfernen und die Genauigkeit der Barcode-Lesung verbessern. Wenn Benutzer jedoch Leistung auf Kosten der Genauigkeit bevorzugen, würde das Setzen dieser Eigenschaft auf false helfen. Der Standardwert für diese Eigenschaft ist true.

Welche Scan-Modi sind für verschiedene Anwendungsfälle verfügbar?

Definieren Sie, wie IronBarcode Barcodes in einem Bild scannt und erkennt.

  • Auto: Liest Barcodes mit automatischer Bildvorverarbeitung und den optimal konfigurierten Leseroptionen. Empfohlen für beste Ergebnisse und Leistung.
  • OnlyDetectionModel: Scannt das Bild nach Barcodes und gibt deren Positionen als Array von Iron Software.Drawing.PointF zurück. Dieser Modus liest die erkannten Barcodes nicht; er gibt nur die Positionen jedes Barcodes zurück.
  • MachineLearningScan: Scannt das Bild nach Barcodes mit maschinellem Lernen zur Erkennung und liest sie.
  • OnlyBasicScan: Liest Barcodes ohne maschinelles Lernen zur Erkennung, automatische Bildvorverarbeitung oder Reader-Option-Konfiguration. This option can be used with IronBarCode.Slim alone.

Wie wirken sich die Einstellungen für die Lesegeschwindigkeit auf die Genauigkeit aus?

Die Speed-Eigenschaft ermöglicht den Benutzern, die Leistung des IronBarcode-Readers weiter zu optimieren. Ähnlich wie bei der RemoveFalsePositive-Eigenschaft verbessert die Anpassung dieser Eigenschaft die Leistung auf Kosten der Genauigkeit. Einen detaillierten Einblick in die Lesegeschwindigkeitsoptionen, einschließlich Leistungsvergleichen, finden Sie in unserem ausführlichen Leitfaden. Es akzeptiert das ReadingSpeed enum, das 4 Stufen hat, wie unten gezeigt:

  • Schneller: Ermöglicht das schnellste Barcode-Scanning, reduziert jedoch die Genauigkeit. Der Prozess überspringt die Bildvorverarbeitung, was oft zu leeren Barcode-Ergebnissen führt. Verwenden Sie diese Einstellung nur, wenn das Eingangsbild scharf und klar ist.
  • Ausgewogen: Diese Einstellung wird empfohlen für die Speed-Eigenschaft. Sie stellt ein Gleichgewicht zwischen Genauigkeit und Leseleistung her, indem versucht wird, eine leichte Verarbeitung auf das Bild anzuwenden, um den Barcodebereich zu klären und ihn hervorzuheben, damit der Barcode-Scanner ihn erkennen kann. Die meisten Zeit ist diese Einstellung ausreichend, dass IronBarcode ein Barcode-Bild liest und genaue Ausgaben erzeugt.
  • Detailiert: Wenn ReadingSpeed.Balanced nicht funktioniert, verwenden Sie ReadingSpeed.Detailed. IronBarcode verarbeitet das Bild, um den Barcode-Bereich klarer zu machen und zu erkennen. Nützlich für kleine oder unscharfe Barcodes. IronBarcode führt eine mittlere Verarbeitung des Bildes durch, um den Barcode-Bereich weiter zu klären und klarer für den Barcode-Reader zu machen, um den Barcode zu erkennen. Diese Einstellung ist sehr nützlich, um ein kleines oder weniger klares Barcode-Bild zu erkennen.
  • ExtremeDetail: Diese Einstellung ist die wenigstens empfohlene aufgrund des CPU-intensiven Prozesses. Schwere Verarbeitung wird auf das Barcode-Bild durchgeführt, damit der Leser die Barcodes lesen kann. Jetzt, da wir alle Optionen kennen, die Benutzer optimieren können, um die Leistung oder die Genauigkeit zu erhöhen, lassen Sie uns sehen, wie wir sie in unserem Code anwenden können.

Wann sollte ich den erweiterten Code39-Modus verwenden?

Aus dem Code-Snippet sehen wir, dass um BarcodeReaderOptions zu verwenden, müssen wir sie zuerst initialisieren und dann die Eigenschaften von BarcodeReaderOptions entsprechend den oben genannten Eigenschaften anpassen. Die initialisierte BarcodeReaderOptions kann dann als Argument in der BarcodeReader.Read()-Methode zusammen mit der Bilddatei verwendet werden. Dadurch werden alle Einstellungen in BarcodeReaderOptions beim Lesen eines Barcodes aus dem Bild angewendet. Durch die Einstellung UseCode39ExtendedMode auf true wird ein genaueres Lesen von Code39-Barcodes ermöglicht.

Wie implementiere ich erweiterte BarCode-Lesung mit benutzerdefinierten Optionen?

Nachdem wir nun alle Optionen kennengelernt haben, die von den Benutzern angepasst werden können, sei es zur Steigerung der Leistung oder der Genauigkeit, erfahren Sie hier, wie Sie sie im Code anwenden können. Der folgende Codeausschnitt zeigt die umfassende Verwendung von BarcodeReaderOptions:

using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Linq;

// Create custom reader options
var options = new BarcodeReaderOptions()
{
    // Specify expected barcode types for better performance
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128 | BarcodeEncoding.Code39,

    // Define specific area to scan (x, y, width, height in pixels)
    CropArea = new Rectangle(100, 100, 500, 400),

    // Set reading speed to balance accuracy and performance
    Speed = ReadingSpeed.Balanced,

    // Enable multithreading for better performance
    Multithreaded = true,
    MaxParallelThreads = 4,

    // Remove false positives for accuracy
    RemoveFalsePositive = true,

    // Enable Code39 extended mode if needed
    UseCode39ExtendedMode = true,

    // Set scan mode
    ScanMode = BarcodeReaderScanMode.Auto,

    // Add image filters for better recognition
    ImageFilters = new ImageFilterCollection() { 
        new SharpenFilter(),
        new InvertFilter(),
        new ContrastFilter()
    }
};

// Read barcodes with custom options
var results = BarcodeReader.Read(@"C:\path\to\your\barcode-image.png", options);

// Process results
if (results.Any())
{
    foreach (var barcode in results)
    {
        Console.WriteLine($"Barcode Type: {barcode.BarcodeType}");
        Console.WriteLine($"Value: {barcode.Value}");
        Console.WriteLine($"Confidence: {barcode.Confidence}%");
        Console.WriteLine($"Position: X={barcode.X}, Y={barcode.Y}");
        Console.WriteLine("---");
    }
}
else
{
    Console.WriteLine("No barcodes found in the image.");
}
using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Linq;

// Create custom reader options
var options = new BarcodeReaderOptions()
{
    // Specify expected barcode types for better performance
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128 | BarcodeEncoding.Code39,

    // Define specific area to scan (x, y, width, height in pixels)
    CropArea = new Rectangle(100, 100, 500, 400),

    // Set reading speed to balance accuracy and performance
    Speed = ReadingSpeed.Balanced,

    // Enable multithreading for better performance
    Multithreaded = true,
    MaxParallelThreads = 4,

    // Remove false positives for accuracy
    RemoveFalsePositive = true,

    // Enable Code39 extended mode if needed
    UseCode39ExtendedMode = true,

    // Set scan mode
    ScanMode = BarcodeReaderScanMode.Auto,

    // Add image filters for better recognition
    ImageFilters = new ImageFilterCollection() { 
        new SharpenFilter(),
        new InvertFilter(),
        new ContrastFilter()
    }
};

// Read barcodes with custom options
var results = BarcodeReader.Read(@"C:\path\to\your\barcode-image.png", options);

// Process results
if (results.Any())
{
    foreach (var barcode in results)
    {
        Console.WriteLine($"Barcode Type: {barcode.BarcodeType}");
        Console.WriteLine($"Value: {barcode.Value}");
        Console.WriteLine($"Confidence: {barcode.Confidence}%");
        Console.WriteLine($"Position: X={barcode.X}, Y={barcode.Y}");
        Console.WriteLine("---");
    }
}
else
{
    Console.WriteLine("No barcodes found in the image.");
}
$vbLabelText   $csharpLabel

Aus dem Codeausschnitt geht hervor, dass wir BarcodeReaderOptions zunächst initialisieren und anschließend die Eigenschaften von BarcodeReaderOptions gemäß den oben genannten Eigenschaften bestimmen und anpassen müssen. Die initialisierten BarcodeReaderOptions können dann zusammen mit der Bilddatei als Argument in der Methode BarcodeReader.Read() verwendet werden. Dadurch werden alle in BarcodeReaderOptions festgelegten Einstellungen beim Lesen eines Barcodes aus dem Bild angewendet.

Wenn Sie auf Probleme stoßen, bei denen Ihr Barcode nicht erkannt wird, finden Sie in unserem Leitfaden zur Fehlerbehebung Lösungen für häufige Probleme und Tipps zur Verbesserung der Genauigkeit beim Scannen von Barcodes.

Häufig gestellte Fragen

Welche Bildformate werden für das Lesen von Barcodes in C# unterstützt?

IronBarcode unterstützt das Lesen von Barcodes aus verschiedenen Bildformaten wie SVG (Scalable Vector Graphics), JPEG, PNG, GIF, TIFF (Tagged Image File Format) und BMP (Bitmap Image File). Diese umfassende Formatunterstützung wird von IronDrawing unterstützt und ermöglicht eine nahtlose Barcode-Extraktion aus verschiedenen Bildtypen.

Wie kann ich einen Barcode aus einer Bilddatei mit nur einer Zeile Code lesen?

Mit IronBarcode können Sie mit einer einzigen Codezeile Strichcodes aus Bildern lesen: `var results = IronBarCode.BarcodeReader.Read("path/to/image.png");`. Dieser einfache Methodenaufruf erkennt und extrahiert automatisch Barcodedaten aus PNG-, JPEG-, GIF-, BMP- und TIFF-Dateien, ohne dass eine komplexe Einrichtung erforderlich ist.

Kann ich angeben, nach welchen Arten von Barcodes beim Lesen von Bildern gesucht werden soll?

Ja, IronBarcode ermöglicht die Angabe von Barcodetypen über die Eigenschaft ExpectBarcodeTypes in BarcodeReaderOptions. Dieser gezielte Ansatz verbessert die Leseleistung, indem er sich nur auf die Barcodeformate konzentriert, die Sie in Ihren Bildern erwarten.

Ist es möglich, Barcodes aus einem bestimmten Bereich eines Bildes zu lesen?

Unbedingt! IronBarcode bietet die Eigenschaft CropArea, mit der Sie bestimmte Bereiche innerhalb eines Bildes festlegen können, in denen sich Barcodes befinden. Diese Funktion ist besonders nützlich für große Bilder oder wenn Sie die ungefähre Position der Barcodes kennen, was die Verarbeitungsgeschwindigkeit deutlich erhöht.

Wie konfiguriere ich erweiterte Leseeinstellungen für eine bessere Genauigkeit?

IronBarcode bietet die Klasse BarcodeReaderOptions, um erweiterte Leseeinstellungen zu konfigurieren. Dazu gehören Optionen zur Anpassung der Barcode-Erkennungsempfindlichkeit, der Bildvorverarbeitung und anderer Parameter, die die Genauigkeit beim Umgang mit schwierigen Bildern oder bestimmten Barcode-Typen verbessern können.

Was macht das Lesen von Barcodes aus Bildern für C#-Entwickler einfach?

IronBarcode vereinfacht das Lesen von Barcodes, indem es die Methode BarcodeReader.Read() bereitstellt, die sofort mit mehreren Bildformaten funktioniert. Entwickler müssen lediglich den Dateinamen oder den Dateipfad als Parameter angeben, was die Integration von Barcode-Lesefunktionen in jede C#-Anwendung denkbar einfach macht.

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