using IronBarCode;
using System.Drawing;
// Reading a barcode is easy with IronBarcode!
var resultFromFile = BarcodeReader.Read(@"file/barcode.png"); // From a file
var resultFromBitMap = BarcodeReader.Read(new Bitmap("barcode.bmp")); // From a bitmap
var resultFromImage = BarcodeReader.Read(Image.FromFile("barcode.jpg")); // From an image
var resultFromPdf = BarcodeReader.ReadPdf(@"file/mydocument.pdf"); // From PDF use ReadPdf
// To configure and fine-tune barcode reading, utilize the BarcodeReaderOptions class
var myOptionsExample = new BarcodeReaderOptions
{
// Choose a reading speed from: Faster, Balanced, Detailed, ExtremeDetail
// There is a tradeoff in performance as more detail is set
Speed = ReadingSpeed.Balanced,
// Reader will stop scanning once a single barcode is found (if set to true)
ExpectMultipleBarcodes = true,
// By default, all barcode formats are scanned for
// Specifying a subset of barcode types to search for would improve performance
ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional,
// Utilize multiple threads to read barcodes from multiple images in parallel
Multithreaded = true,
// Maximum threads for parallelized barcode reading
// Default is 4
MaxParallelThreads = 2,
// The area of each image frame in which to scan for barcodes
// Specifying a crop area will significantly improve performance and avoid noisy parts of the image
CropArea = new Rectangle(),
// Special setting for Code39 barcodes
// If a Code39 barcode is detected, try to read with both the base and extended ASCII character sets
UseCode39ExtendedMode = true
};
// Read with the options applied
var results = BarcodeReader.Read("barcode.png", myOptionsExample);
// Create a barcode with one line of code
var myBarcode = BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.EAN8);
// After creating a barcode, we may choose to resize
myBarcode.ResizeTo(400, 100);
// Save our newly-created barcode as an image
myBarcode.SaveAsImage("EAN8.jpeg");
Image myBarcodeImage = myBarcode.Image; // Can be used as Image
Bitmap myBarcodeBitmap = myBarcode.ToBitmap(); // Can be used as Bitmap
Wie man die QR-Code-Erkennung mit Deep Learning versteht
Veröffentlicht 29. August 2023
Teilen Sie:
Schnelle Antwort(QR) codes sind zu einem integralen Bestandteil unseres digitalen Lebens geworden und erleichtern den nahtlosen Austausch von Daten und das Abrufen von Informationen. Die Erkennung von QR-Codes in Bildern ist eine wertvolle Anwendung von Deep Learning, einem Teilbereich der künstlichen Intelligenz. In diesem Artikel führen wir Sie durch den Prozess der Erstellung eines QR-Code-Erkennungssystems mit Deep Learning in .NET/C#.
QR-Code-Erkennung mit Deep Learning verstehen
Beim Deep Learning, einem Zweig des maschinellen Lernens, werden neuronale Netze trainiert, um komplexe Muster aus Daten zu lernen. Im Zusammenhang mit der Erkennung von QR-Codes können Deep-Learning-Modelle trainiert werden, um QR-Codes aus Bildern mit unterschiedlichen Größen, Ausrichtungen und Bedingungen zu identifizieren und zu dekodieren. Faltungsneuronale Netze(CNNs) sind eine beliebte Wahl für bildbasierte Aufgaben wie die Erkennung von QR-Codes, da sie in der Lage sind, komplexe visuelle Merkmale zu erfassen.
In diesem Artikel werden wir Folgendes verwendenML.NET Model Builder für das Training unseres Modells.
ML.NET Model Builder
Model Builder ist ein leistungsfähiges Werkzeug, das von Microsoft als Teil desML.NET framework für die Erstellung von Modellen für maschinelles Lernen in .NET/C#. Es vereinfacht und beschleunigt den Prozess der Erstellung benutzerdefinierter Machine-Learning-Modelle, ohne dass tiefgreifende Kenntnisse über Machine-Learning-Algorithmen oder umfangreiche Programmierkenntnisse erforderlich sind. Model Builder ist benutzerfreundlich und leicht zugänglich und damit ein hervorragendes Tool für Entwickler, die die Möglichkeiten des maschinellen Lernens für ihre Anwendungen nutzen möchten. Model Builder unterstützt AutoML, das automatisch verschiedene Algorithmen und Einstellungen für maschinelles Lernen untersucht, um Ihnen zu helfen, den für Ihr Szenario am besten geeigneten Algorithmus zu finden.
Training QR-Code Erkennungsmodell
Das Training eines QR-Code-Erkennungsmodells mit Model Builder umfasst eine Reihe von Schritten, die Sie durch den Prozess der Erstellung und des Trainings des Modells führen. In dieser Schritt-für-Schritt-Anleitung führen wir Sie durch jede Phase der Ausbildung eines QR-Code-Modells mit Model Builder in .NET/C#.
Schritt 1: Einrichten Ihrer Umgebung
Bevor wir mit der Implementierung beginnen, sollten Sie sicherstellen, dass Sie die folgenden Voraussetzungen erfüllen:
Visual Studio: Herunterladen und installierenVisual Studioeine vielseitige integrierte Entwicklungsumgebung(IDE) für die .NET-Entwicklung.
Model Builder: Sie können den ML.NET Model Builder herunterladen, indem Sie aufhier.
Schritt 2: Datenaufbereitung
Wir benötigen QR-Code-Bilder für das Training unseres Modells. Sie können QR-Code-Bilder erhalten vonKaggle oderRoboflow. Für dieses Beispiel habe ich QR-Code-Bilder von Roboflow heruntergeladen.
Schritt 3: Model Builder öffnen
Visual Studio-Projekt öffnen.
Rechtsklick auf Projekt > Hinzufügen > Modell für maschinelles Lernen...
Das folgende Fenster wird angezeigt.
Geben Sie dem Modell einen Namen und klicken Sie auf die Schaltfläche Hinzufügen. Das folgende Fenster wird angezeigt:
Scrollen Sie nach unten und suchen Sie unter Computer Vision nach "Object Detection".
Schritt 4: Auswahl der Schulungsumgebung
Wählen Sie Objekterkennung, da wir QR-Codes aus dem gegebenen Datensatz erkennen müssen. Wählen Sie je nach Vorliebe Lokal oder Azure. Wir wählen für dieses Beispiel die Option Lokal.
Nachdem Sie auf Lokal geklickt haben, wird das folgende Fenster angezeigt:
Wählen Sie eine lokale CPU oder GPU nach Ihrer Wahl. Sie können auch Azure auswählen. Dazu sollten Sie über ein Active Azure-Abonnement verfügen. Nachdem Sie Ihre Testumgebung ausgewählt haben, klicken Sie auf die Schaltfläche Weiter. Das folgende Fenster wird angezeigt.
Schritt 5: Daten auswählen
Die Auswahl der Daten ist der wichtigste Teil des Schulungsprozesses. Wie bereits erwähnt, werde ich die Daten vonRobo Flow. Öffnen Sie RoboFlow, suchen Sie nach QR-Code. Die Daten können weiße QR-Codes oder viele lokale Merkmale aufweisen. Ich verwende QR-Erkennung Computer VisionDatensatz für diesen Lehrgang. Laden Sie die Daten herunter, indem Sie das Format auswählen. Ich habe das COCO-Format gewählt, um diese Daten herunterzuladen. Dieses Format wird für die weitere Datenvorverarbeitung und Bilderkennung verwendet.
Da Sie nun Daten haben, kehren wir zu Visual Studio zurück. Wählen Sie den Eingabepfad der oben heruntergeladenen Coco-Datei. Sie können auch Vott wählen, aber dazu müssen Sie eine Vott-Datei für Ihre Daten erstellen. Das folgende Fenster wird angezeigt.
Klicken Sie nun auf die Schaltfläche Nächster Schritt und wechseln Sie zur Registerkarte Zug.
Schritt 6: Trainieren des QR-Code-Erkennungsmodells
Klicken Sie nun auf Trainingsmodell starten, um das Training zu beginnen. Der Model Builder konvertiert automatisch in binäre Bilder und verwendet entsprechend bevorzugte neuronale Netze. Wir brauchen nichts zu spezifizieren. Das Beste an Model Builder ist, dass ein Entwickler mit minimalem Deep Learning-Hintergrund ein Modell trainieren, testen und verwenden kann.
Der Model Builder trainiert das Modell auf dem angegebenen Datensatz und zeigt den Trainingsfortschritt an. Die oben beschriebene Schulung wird je nach System einige Zeit in Anspruch nehmen. Das Modell nimmt alle QR-Codes nacheinander auf und lernt ihre Eigenschaften. Sie können Ihr Modell testen, indem Sie ein beliebiges Test-QR-Code-Bild an das Modell übergeben, sobald das Training abgeschlossen ist.
Schritt 7: Modell auswerten
Nach dem Training bewertet der Model Builder die Leistung des Modells anhand der Validierungsdaten.
Sie sehen Auswertungsmetriken wie Genauigkeit, Präzision, Rückruf und F1-Score. Anhand dieser Metriken wird die Leistung des Modells bewertet.
Schritt 8: Verbrauchen
Nun, da unser Modell trainiert und der QR-Code-Detektor fertig ist, müssen wir dieses Modell verwenden, um den Code zu erkennen und dann den erkannten QR-Code zu dekodieren. Dieses Modell erkennt nur, ob eine bestimmte Eingabe einen Schnellantwortcode enthält oder nicht. Dadurch wird der QR-Code nicht entschlüsselt. Für die Dekodierung von QR-Codes benötigen wir eine Bibliothek eines Drittanbieters. Iron Barcode ist die beste Bibliothek zum Lesen von QR-Code-Bildern. Bevor wir fortfahren, wollen wir uns ein wenig über Iron Barcode informieren.
Iron Barcode - Die QR Code Dekodierbibliothek
IronBarcode ist eine .NET-Bibliothek, die speziell auf die Arbeit mit QR-Codes zugeschnitten ist. QR-Codes sind eine Art von 2D-Barcodes, die häufig zur Codierung von Informationen wie URLs, Text, Kontaktdaten usw. verwendet werden. Diese Bibliothek vereinfacht die Erstellung von QR-Codes, indem sie Entwicklern intuitive Werkzeuge zur Verfügung stellt, um QR-Codes mit anpassbaren Funktionen wie Größe, Farbe und Fehlerkorrektur zu erzeugen.
Darüber hinaus ermöglicht IronBarcode die Extraktion von Informationen aus QR-Codes, die in Bilder eingebettet sind, und ist damit eine unverzichtbare Ressource für die nahtlose Integration von QR-Code-Erzeugungs- und Dekodierungsfunktionen in .NET-Anwendungen.
In diesem Tutorial werden wir es zur Dekodierung des QR-Codes verwenden, wenn der QR-Code von unserem Modell erkannt wird.
Iron Barcode NuGet-Paket installieren
Schreiben Sie den folgenden Befehl in die NuGet Package Manager Console, um dieIronBarcode NuGet-Paket.
Install-Package BarCode
Der obige Befehl installiert das Iron Barcode-Paket und fügt eine Referenz zu unserem Projekt hinzu.
QR-Codes dekodieren
Schreiben Sie den folgenden Code, um den einzelnen erkannten QR-Code zu lesen.
using IronBarCode;
string qrCodeImagePath = "myQrCode.png";
var data = BarcodeReader.QuicklyReadOneBarcode(qrCodeImagePath);
Console.WriteLine(data.Value.ToString());
using IronBarCode;
string qrCodeImagePath = "myQrCode.png";
var data = BarcodeReader.QuicklyReadOneBarcode(qrCodeImagePath);
Console.WriteLine(data.Value.ToString());
Imports IronBarCode
Private qrCodeImagePath As String = "myQrCode.png"
Private data = BarcodeReader.QuicklyReadOneBarcode(qrCodeImagePath)
Console.WriteLine(data.Value.ToString())
$vbLabelText $csharpLabel
Die Ausgabe sieht folgendermaßen aus:
Schlussfolgerung
Zusammenfassend lässt sich sagen, dass der Model Builder und die IronBarcode-Bibliothek eine wertvolle Kombination für .NET-Entwickler sind, die mit QR-Codes arbeiten möchten. Model Builder macht die schwierige Aufgabe des Erstellens und Trainierens von Modellen für die QR-Code-Erkennung ziemlich einfach. Und wenn Sie die IronBarcode-Bibliothek hinzufügen, wird alles noch einfacher - sie hilft, QR-Codes von Bildern ohne viel Aufhebens zu lesen. Diese Teamarbeit verbessert nicht nur die Inventarisierung und die Marketingaufgaben, sondern sorgt auch dafür, dass die Nutzung Ihrer Anwendungen mehr Spaß macht. Wenn Model Builder und IronBarcode zusammenkommen, ist es, als würde man superintelligente Technologie in seine .NET-Anwendungen einbauen, die alle möglichen coolen Möglichkeiten für QR-Codes eröffnet. Iron Barcode kommerzielle Lizenz ist zu einem sehr niedrigen Preis erhältlich mit einerkostenlose Testlizenz.
Jordi beherrscht vor allem Python, C# und C++. Wenn er seine Fähigkeiten bei Iron Software nicht einsetzt, programmiert er Spiele. Durch seine Mitverantwortung für Produkttests, Produktentwicklung und Forschung trägt Jordi wesentlich zur kontinuierlichen Produktverbesserung bei. Die vielseitigen Erfahrungen, die er sammelt, bieten ihm immer wieder neue Herausforderungen, und er sagt, dass dies einer seiner Lieblingsaspekte bei Iron Software ist. Jordi wuchs in Miami, Florida, auf und studierte Informatik und Statistik an der University of Florida.
< PREVIOUS Version 4 QR-Code mit bis zu 50 Zeichen (Anleitung für Anfänger)
NÄCHSTES > Wie man einen QR-Code für ein Google-Formular erstellt