Die Kennzeichenerkennung ist zu einem unverzichtbaren Werkzeug in vielen Branchen geworden, von der Verkehrsüberwachung und Parksystemen bis hin zu Strafverfolgung und Mautlösungen. Durch die NutzungOptische Zeichenerkennung (OCR)Mit dieser Technologie können Entwickler effizient Text aus Bildern extrahieren und den Prozess der Identifizierung von Nummernschildern automatisieren. In diesem Tutorial werden wir demonstrieren, wie man IronOCR, eine leistungsstarke C# OCR-Bibliothek, um Nummernschilder aus Bildern genau zu lesen. Mit seiner nahtlosen Integration in den OpenCV-Quellcode für Computer-Vision-Aufgaben bietet IronOCR eine robuste Lösung zur Texterkennung selbst aus komplexen oder rauschenden Bildquellen. Egal ob Sie mit einem klaren Bild eines Nummernschildes oder einem vollständigen Fahrzeugfoto arbeiten, dieser Leitfaden führt Sie durch die Schritte, um ein zuverlässiges System zur Nummernschilderkennung mit modernen OCR-Techniken zu erstellen.
Wie man die Nummernschilderkennung in C# verwendet
Importieren Sie das Nummernschildbild in eine neue OcrImageInput-Instanz.
Bildfilter anwenden, um die Textextraktion in C# zu verbessern
Verbessern Sie die Erkennungsgeschwindigkeit, indem Sie den Kennzeichenbereich im Foto angeben.
Drucken Sie den extrahierten Text mit einer Instanz von OcrLicensePlateResult aus.
Erste Schritte mit IronOCR
IronOCR ist eine C#-OCR-Bibliothek, die auf der Tesseract-OCR-Engine basiert und speziell entwickelt wurde, um Text-Erkennungsprojekte in .NET-Anwendungen mit hoher Genauigkeit und Effizienz zu unterstützen. Ideal für die Verarbeitung von lauten oder minderwertigen Bildern bietet IronOCR leistungsstarke Bildvorverarbeitungsfunktionen wie automatische Rauschunterdrückung und Graustufenumwandlung, die die Klarheit der Textextraktion verbessern.
Einige der herausragenden Funktionen von IronOCR umfassen:
Hohe OCR-Genauigkeit: Optimiert für verschiedene Sprachen und Schriftarten, zeichnet sich IronOCR durch hohe Genauigkeit aus, selbst bei komplexem oder verzerrtem Text.
Bild- und PDF-Unterstützung: Es kann Text aus verschiedenen Bildformaten und PDF-Dateien lesen, was es vielseitig für unterschiedliche Dokumenttypen macht.
Integration mit OpenCV: Durch die Unterstützung von OpenCV kann IronOCR Computer Vision-Aufgaben durchführen, wie z.B. das Erkennen bestimmter Textbereiche innerhalb eines Bildes, was insbesondere für die Erkennung von Nummernschildern nützlich ist.
Erweiterte Vorverarbeitung: Beinhaltet Filter für Graustufenumwandlung, Rotation, Entzerrung und Kontrastverbesserung, um die Erkennungsqualität zu verbessern.
Flexible Eingabeoptionen: Unterstützt mehrseitige Dokumente und anpassbare Bereiche, sodass Entwickler die OCR-Verarbeitung auf ausgewählte Bereiche konzentrieren können, um schnellere und gezieltere Ergebnisse zu erzielen.
Mit diesen Fähigkeiten ist IronOCR eine leistungsstarke Lösung für den Aufbau von OCR-Anwendungen, die Genauigkeit, Flexibilität und einfache Integration mit anderen Computer Vision-Tools erfordern.
Erstellen eines Visual Studio-Projekts
Öffnen Sie Visual Studio und wählen Sie "Neues Projekt erstellen". Dadurch gelangen Sie auf eine Seite, auf der Sie die Art des Projekts auswählen können, das Sie erstellen möchten.(In unserem Fall werden wir eine Konsolenanwendung erstellen.). Wählen Sie den gewünschten Anwendungstyp aus und klicken Sie auf "Weiter".
Geben Sie Ihrem Projekt jetzt einen Namen und wählen Sie den Speicherort aus, an dem es gespeichert werden soll.
Wählen Sie schließlich Ihr Ziel-.NET-Framework aus und klicken Sie auf die Schaltfläche "Erstellen". Dadurch wird das Projekt wie unten gezeigt erstellt.
Der nächste Schritt besteht darin, die IronOCR-Bibliothek zu installieren, damit wir mit der Verarbeitung von Nummernschildern beginnen können.
Installation von IronOCR
Um mit IronOCR in Ihrem C#-Projekt zu beginnen, müssen Sie das IronOCR-Paket von NuGet installieren. IronOCR ist kompatibel mit dem .NET Framework und .NET Core, was die Integration in verschiedene .NET-Anwendungen erleichtert.
Schritt 1: Öffnen Sie die Paket-Manager-Konsole
Navigieren Sie in Visual Studio zu Tools > NuGet Package Manager > Package Manager Console.
Schritt 2: Installieren Sie das IronOCR-Paket
Geben Sie den folgenden Befehl in der Paket-Manager-Konsole ein:
Install-Package IronOcr
Dieser Befehl installiert die IronOCR-Bibliothek, einschließlich aller Abhängigkeiten, die erforderlich sind, um OCR-Funktionen in Ihrem Projekt auszuführen. Da unsere Anwendung erweiterte Funktionen wie Kennzeichenerkennung mittels Computer Vision benötigt, können Sie das optionale IronOcr.ComputerVision.Windows-Paket auf diese Weise installieren:
Install-Package IronOcr.ComputerVision.Windows
Und stellen Sie sicher, dass Sie dieIronOcr.Extensions.AdvancedScanErweiterung installiert, damit Sie die leistungsstarke ReadLicensePlate-Methode nutzen können:
Install-Package IronOcr.Extensions.AdvancedScan
Alternativ können Sie die Pakete über Tools > NuGet-Paket-Manager > NuGet-Pakete für die Lösung verwalten installieren und nach den benötigten Paketen suchen:
Einrichten des Codes
Schließlich müssen wir die erforderlichen Imports und Using-Anweisungen am Anfang unseres Codes hinzufügen:
using IronOcr;
using IronOcr;
Imports IronOcr
$vbLabelText $csharpLabel
Lesen von Nummernschildern mit optischer Zeichenerkennung
In diesem Abschnitt werden wir ein Programm erstellen, um Nummernschilder mithilfe von IronOCR zu lesen.IronOCReine Tesseract-OCR-Engine, die sich durch die Extraktion von Text aus Bildern auszeichnet. Um die Fahrzeugerkennung zu implementieren, können wir auch zusätzliche Machine-Learning-Bibliotheken einbinden. Bemerkenswerterweise integriert sich IronOCR mit OpenCV, einer führenden Open-Source-Computer-Vision-Bibliothek, die es uns ermöglicht, Objekterkennungsaufgaben wie die Identifizierung von Fahrzeugen und Kennzeichen durchzuführen.
Beispiel eines Kennzeichenbildes
Wir werden mit folgendem Nummernschild arbeiten:
Fügen Sie als Nächstes den folgenden Code hinzu, um OCR auf dem Nummernschild durchzuführen:
using IronOcr;
var ocr = new IronTesseract();
using (var input = new OcrImageInput("licensePlate.jpeg"))
{
// Fixing the digital noise and making the image easier to read
input.DeNoise();
input.ToGrayScale();
// Using the OcrLicensePlateResult and ReadLicensePlate methods to read the license plate information and store it for further use
OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
// Saving the license plate text to a string variable
string output = result.Text;
// Outputting the license plate text to the console
Console.WriteLine(output);
}
using IronOcr;
var ocr = new IronTesseract();
using (var input = new OcrImageInput("licensePlate.jpeg"))
{
// Fixing the digital noise and making the image easier to read
input.DeNoise();
input.ToGrayScale();
// Using the OcrLicensePlateResult and ReadLicensePlate methods to read the license plate information and store it for further use
OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
// Saving the license plate text to a string variable
string output = result.Text;
// Outputting the license plate text to the console
Console.WriteLine(output);
}
Imports IronOcr
Private ocr = New IronTesseract()
Using input = New OcrImageInput("licensePlate.jpeg")
' Fixing the digital noise and making the image easier to read
input.DeNoise()
input.ToGrayScale()
' Using the OcrLicensePlateResult and ReadLicensePlate methods to read the license plate information and store it for further use
Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(input)
' Saving the license plate text to a string variable
Dim output As String = result.Text
' Outputting the license plate text to the console
Console.WriteLine(output)
End Using
$vbLabelText $csharpLabel
Code-Aufschlüsselung:
Initialisierung: Die Zeile var ocr = new IronTesseract(); erstellt eine neue Instanz derEisenTesseraktKlasse, die Methoden für die optische Zeichenerkennung bereitstellt(OCR).
Bild-Eingabe: Die using-Anweisung erstellt ein neuesOcrImageInputObjekt mit der angegebenen Bilddatei "licensePlate.jpeg". Dieses Objekt ist dafür ausgelegt, die Bilddaten für die OCR-Verarbeitung zu halten.
Bildvorverarbeitung:
input.DeNoise();wendet einen digitalen Rauschunterdrückungsfilter an, um die Bildqualität zu verbessern, sodass die OCR-Engine den Text einfacher lesen kann.
input.InGraustufen();konvertiert das Bild in Graustufen, was die Erkennungsgenauigkeit und Verarbeitungsgeschwindigkeit verbessern kann.
Kennzeichenerkennung: Die Zeile OcrLicensePlateResult result = ocr.ReadLicensePlate(eingabe); verwendet die ReadLicensePlate-Methode, um das verarbeitete Bild zu analysieren und alle erkannten Kennzeicheninformationen zu extrahieren, wobei die Ergebnisse in einemOcrLicensePlateResult objekt.
Ausgabespeicherung: Der Kennzeichentext wird in der Zeichenfolgenvariablen output gespeichert, indem auf result.Text zugegriffen wird, das den erkannten Text des Kennzeichens enthält.
Konsolenausgabe: Schließlich, Console.WriteLine(ausgabe); druckt den extrahierten Kennzeichentext zur Überprüfung auf die Konsole.
Scannen von Nummernschildern aus einem Auto
Wenn wir ein Bild eines gesamten Autos anstatt nur des Nummernschilds haben, können wir einen rechteckigen Bereich angeben, um uns auf den Bereich des Nummernschilds zu konzentrieren. Wir können verwendenSystem.Drawing.Rectanglediesen Bereich in Pixeln festzulegen.
Originalbild
Wir werden die folgende Bilddatei für unser Beispiel verwenden:
Indem wir das Interessengebiet angeben, verbessern wir die Verarbeitungsgeschwindigkeit und vermeiden es, unnötigen Text zu extrahieren.
Implementierungscode
using IronOcr;
using System.Drawing;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
var contentArea = new Rectangle(x: 252, y: 282, width: 148, height: 47);
input.LoadImage("CarPlate.jpeg", contentArea);
OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
Console.WriteLine(result.Text);
}
using IronOcr;
using System.Drawing;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
var contentArea = new Rectangle(x: 252, y: 282, width: 148, height: 47);
input.LoadImage("CarPlate.jpeg", contentArea);
OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
Console.WriteLine(result.Text);
}
Imports IronOcr
Imports System.Drawing
Private ocr = New IronTesseract()
Using input = New OcrInput()
Dim contentArea = New Rectangle(x:= 252, y:= 282, width:= 148, height:= 47)
input.LoadImage("CarPlate.jpeg", contentArea)
Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(input)
Console.WriteLine(result.Text)
End Using
$vbLabelText $csharpLabel
Code-Aufschlüsselung:
Initialisierung: var ocr = new IronTesseract(); erstellt eine neue Instanz der IronTesseract-Klasse, die für die Ausführung der OCR-Operationen verantwortlich ist.
OCR-Eingabe: Die Verwendung(var input = new OcrInput())Die Anweisung erstellt ein neues OcrInput-Objekt, das verwendet wird, um das Bild für die OCR zu laden und zu verarbeiten.
Definieren des Interessengebiets: var contentArea = new Rectangle(x: 252, y: 282, Breite: 148, Höhe: 47); definiert einen rechteckigen Bereich(Inhaltsbereich)im Bild. Dieses Rechteck gibt die Koordinaten und Abmessungen an.(breite und Höhe)wo sich das Kennzeichen voraussichtlich befindet.
Bild Laden: input.LoadImage("CarPlate.jpeg", Inhaltsbereich); lädt die angegebene Bilddatei("CarPlate.jpeg")und konzentriert sich auf das definierte Rechteck(Inhaltsbereich)um die OCR-Verarbeitung auf diesen spezifischen Bereich zu beschränken.
Das Nummernschild lesen: OcrLicensePlateResult result = ocr.ReadLicensePlate(eingabe); ruft die Methode ReadLicensePlate auf, die das Eingabebild auf Kennzeichenzeichen analysiert und ein OcrLicensePlateResult-Objekt zurückgibt, das den extrahierten Text enthält.
Ausgabe: Console.WriteLine(result.Text); druckt den erkannten Text des Nummernschilds auf die Konsole.
Automatische Nummernschild-Erkennung
IronOCR nutzt OpenCV, um Textbereiche innerhalb von Bildern zu identifizieren und setzt dabei verschiedene Bildverarbeitungstechniken ein. Diese Funktionalität ermöglicht es dem Programm, Nummernschilder zu erkennen, indem Textbereiche im Bild lokalisiert und anschließend Tesseract verwendet werden, um diese Bereiche zu lesen.
Einrichtung
Um das Kennzeichenerkennungsmodell zu aktivieren, installieren Sie das erforderliche Paket über die Paket-Manager-Konsole:
var ocr = new IronTesseract();
using (var input = new OcrImageInput("CarPlate.jpeg"))
{
input.FindTextRegion();
OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrImageInput("CarPlate.jpeg"))
{
input.FindTextRegion();
OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrImageInput("CarPlate.jpeg")
input.FindTextRegion()
Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(input)
Console.WriteLine(result.Text)
End Using
$vbLabelText $csharpLabel
Code-Aufschlüsselung:
Initialisierung: Eine Instanz der IronTesseract-Klasse wird erstellt, die für die optische Zeichenerkennung verwendet wird.(OCR)mit der Tesseract-Engine.
Bild Eingabe: Ein neues OcrImageInput-Objekt wird mit der angegebenen Bilddatei instanziiert("CarPlate.jpeg"). Dieses Objekt dient als Eingabe für den OCR-Prozess und ist in eine using-Anweisung eingeschlossen, um ein ordnungsgemäßes Ressourcenmanagement sicherzustellen.
Texterkennungsbereich: DerFindTextRegionMethode wird auf das Eingabeobjekt aufgerufen. Diese Methode verwendet Computer-Vision-Techniken, um automatisch Bereiche im Bild zu identifizieren, die wahrscheinlich Text enthalten, wobei speziell das Nummernschild ins Visier genommen wird.
Kennzeichenerkennung: Die Methode ReadLicensePlate wird aufgerufen, um die erkannten Textbereiche zu analysieren und die Kennzeichennummer zu extrahieren. Das Ergebnis wird in einem OcrLicensePlateResult-Objekt gespeichert, das den erkannten Text und alle zugehörigen Metadaten enthält.
Ausgabe: Der erkannte Kennzeichentext wird in die Konsole gedruckt, sodass der Benutzer die extrahierte Kennzeichennummer sehen kann.
IronOCR-Lizenzierung
Für diejenigen, die IronOCR selbst ausprobieren möchten, bietet IronOCR einkostenloser Testdas Ihnen Zugang zu der gesamten Palette an Tools gewährt, die angeboten werden, was bedeutet, dass Sie sie in Ihren eigenen Projekten ausprobieren können, bevor Sie eine Lizenz kaufen. Sobald Ihre kostenlose Testversion abläuft,IronOCR-Lizenzierungbeginnt ab nur $749 für die Lite License. Es bietet auch optionale Add-ons gegen Aufpreis, wie etwa die gebührenfreie Weitergabeabdeckung sowie ununterbrochene Unterstützung und fortlaufende Produktaktualisierungen.
Darüber hinaus, wenn Sie feststellen, dass Sie über IronOCR hinaus noch weitere IronSoftware-Produkte benötigen, wie z.B. IronPDF für Ihre PDF-bezogenen Aufgaben oder IronWord für die Arbeit mit Word-Dokumenten, dann bietet IronSoftware auch Iron Suite, was eine großartige Möglichkeit ist, Zugang zur gesamten Palette von Tools zu einem großartigen Preis zu haben.
Schlussfolgerung
In diesem Leitfaden haben wir untersucht, wie man ein zuverlässiges Kennzeichenerkennungssystem in C# erstellt, indem manIronOCR. Mit seinen leistungsstarken Textextraktionsfähigkeiten und der Integration mit OpenCV bietet IronOCR eine effiziente, benutzerfreundliche Lösung für Anwendungen, die eine genaue Texterkennung aus Fahrzeugbildern erfordern. Von der Vorverarbeitung des Bildes bis hin zur Einstellung bestimmter Erkennungsregionen vereinfacht IronOCR den OCR-Prozess mit Werkzeugen, die speziell für verrauschte oder komplexe Bilder angepasst sind, wie beispielsweise Nummernschilder in Verkehrs- und Überwachungsaufnahmen.
Egal, ob Sie für Verkehrsüberwachung, Parkraumüberwachung oder jede Anwendung, die eine automatisierte Nummernschilderkennung erfordert, entwickeln – IronOCR bietet eine umfassende Bibliothek, die sich nahtlos in .NET-Umgebungen integrieren lässt. Indem Sie diese Schritte befolgen, sind Sie in der Lage, OCR-gesteuerte Lösungen bereitzustellen, die Effizienz und Genauigkeit in verschiedenen realen Szenarien verbessern. Mit zusätzlichen Funktionen wie Regionenauswahl und Rauschreduzierung garantiert IronOCR, dass Ihre Aufgaben zur Kennzeichenerkennung für bestmögliche Ergebnisse optimiert sind.
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.