Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
In diesem Tutorial werden wir uns mit der programmatischen Kennzeichenerkennung beschäftigen. Wir nehmen einige Beispielbilder von Nummernschildern und extrahieren die Nummernschilder. Wir werden ein C#- und .NET-Programm zur automatischen Kennzeichenerkennung entwickeln. Dieses Tutorial ist einfach und leicht, so dass es auch für C#-Anfänger geeignet ist.
Es gibt viele Bibliotheken, die OCR durchführen können. Einige von ihnen sind kostenpflichtig, einige sind schwierig zu benutzen, und einige sind nicht effizient oder genau. Es kann sehr schwierig sein, eine Bibliothek zu finden, die kostenlos, effizient und einfach zu benutzen ist und genaue Ergebnisse liefert. Ich habe IronOCR gefunden und benutzt; es ist kostenlos für die Entwicklung, bietet eine 1-monatige kostenlose Testversion für die kommerzielle Nutzung, ist einfach zu bedienen, ist effizient, bietet Multi-Threading, unterstützt mehr als 150 Sprachen und bietet obendrein noch eine bessere Genauigkeit. Es übernimmt alle Aufgaben von der Kennzeichenerfassung bis zum Abrufen von Kennzeichen.
IronOCR ist eine von Iron Software entwickelte und gepflegte Bibliothek, die C#-Softwareentwicklern hilft, OCR, Barcode-Scanning und Textextraktion in .NET-Projekten durchzuführen.
Exportieren durchsuchbare PDFs, HTML und Bildinhaltstext.
Entwickeln wir eine Demo-Anwendung zum Lesen von Nummernschildern.
Der erste Schritt besteht darin, ein Visual Studio-Projekt zu erstellen.
Öffnen Sie Visual Studio. Klicken Sie auf "Neues Projekt erstellen", und wählen Sie eine Projektvorlage (Ich habe die Vorlage für die Konsolenanwendung für diese Demoanwendung ausgewählt, aber Sie können jede beliebige Vorlage nach Ihren Anforderungen oder Vorlieben auswählen). Klicken Sie auf die Schaltfläche "Weiter" und benennen Sie das Projekt (Ich habe es "License plate OCR" genannt, aber Sie können es beliebig nennen). Klicken Sie auf die Schaltfläche "Weiter" und wählen Sie das gewünschte .NET-Framework aus. Klicken Sie schließlich auf die Schaltfläche "Erstellen", um das Projekt zu erstellen. Das Projekt wird wie unten dargestellt erstellt.
Erstellen eines Visual Studio-Projekts für unser OCR-Kennzeichenprojekt
Nun müssen wir die IronOCR-Bibliothek installieren, um sie in unserem Projekt zu verwenden. Der einfachste Weg ist die Installation über den NuGet Package Manager.
Klicken Sie in der oberen Menüleiste auf Tools, und wählen Sie NuGet Package Manager > Manage NuGet Packages for Solution, wie unten dargestellt.
Lokalisierung der NuGet Package Manager UI in Visual Studio
Das folgende Fenster wird angezeigt.
Die NuGet-Paketmanager-Benutzeroberfläche in Visual Studio
Klicken Sie auf Durchsuchen, und suchen Sie nach IronOCR. Wählen Sie das IronOCR-Paket aus und klicken Sie auf die Schaltfläche Installieren, wie unten dargestellt.
Installieren Sie die IronOCR-Bibliothek in der NuGet Package Manager UI
Die IronOCR-Bibliothek ist nun installiert und einsatzbereit.
Schreiben wir ein Programm zum Lesen des Nummernschildes. IronOCR ist eine OCR-Engine von Tesseract, die dazu dient, Text aus einem Bild zu extrahieren. Wenn wir also Computer Vision implementieren müssen, um Fahrzeuge zu erkennen, müssen wir möglicherweise andere Bibliotheken für maschinelles Lernen verwenden. IronOCR unterstützt OpenCV, ein quelloffenes und marktführendes Erkennungsmodell. IronOCR kann zusammen mit OpenCV zur Objekterkennung eingesetzt werden, z. B. zur Erkennung von Autos oder Nummernschildern.
Wir werden das folgende Nummernschild lesen:
Bild eines Kfz-Kennzeichens mit deutlich sichtbaren Nummernschildern
Jetzt werden wir den Code schreiben.
Fügen Sie den folgenden Namespace hinzu:
using IronOcr;
using IronOcr;
Imports IronOcr
Fügen Sie dann den folgenden Code ein:
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate3.jpg"))
{
input.DeNoise(); // fixes digital noise and poor scanning
input.ToGrayScale();
var result = ocr.Read(Input);
Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate3.jpg"))
{
input.DeNoise(); // fixes digital noise and poor scanning
input.ToGrayScale();
var result = ocr.Read(Input);
Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput("D:\Liscence Plate\plate3.jpg")
input.DeNoise() ' fixes digital noise and poor scanning
input.ToGrayScale()
Dim result = ocr.Read(Input)
Console.WriteLine(result.Text)
End Using
Damit werden die folgenden Aufgaben erfüllt:
ergebnis.Text gibt den gesamten aus dem Nummernschild extrahierten Inhalt zurück.
Wir können sehen, dass das richtige Kennzeichen aus dem erkannten Nummernschild extrahiert wird.
IronOCR erkennt die Nummern richtig und extrahiert sie aus dem Nummernschildbild
Nehmen wir an, wir haben keine separaten Nummernschilder, sondern ein Bild des gesamten Fahrzeugs. Nun müssen wir den Bereich des Nummernschilds scannen und eine Texterkennung durchführen.
Wir können ein System.Drawing.Rectangle
verwenden, um einen Bereich festzulegen, in dem wir ein Nummernschild lesen wollen. Die Maßeinheit ist immer Pixel.
Wir verwenden die folgende Beispielbilddatei.
Gesamtansicht eines Autos mit sichtbarem Nummernschild
Wir werden sehen, dass dies zu Geschwindigkeitssteigerungen führt und das Lesen von unnötigem Text vermeidet.
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// a 41% improvement on speed
var contentArea = new CropRectangle(x: 365, y: 240, height: 80, width: 29);
input.AddImage(@"D:\Liscence Plate\plate1.jpg", contentArea);
var result = ocr.Read(input);
Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// a 41% improvement on speed
var contentArea = new CropRectangle(x: 365, y: 240, height: 80, width: 29);
input.AddImage(@"D:\Liscence Plate\plate1.jpg", contentArea);
var result = ocr.Read(input);
Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput()
' a 41% improvement on speed
Dim contentArea = New CropRectangle(x:= 365, y:= 240, height:= 80, width:= 29)
input.AddImage("D:\Liscence Plate\plate1.jpg", contentArea)
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Dies führt zu einem Geschwindigkeitszuwachs von 41% - und ermöglicht es uns, genau zu sein. Wir geben die Startkoordinaten für die Region an (x und y) und die Breite und Höhe des Erfassungsbereichs.
ContentAreas (OCR-Zuschnitt) wird auch beim Lesen von PDF-Dateien unterstützt.
IronOCR nutzt OpenCV, um mit Hilfe von Computer Vision Bereiche zu erkennen, in denen Text in einem Bild vorhanden ist. Es führt Bildverarbeitungstechniken durch und verwendet ein Erkennungsmodell zur Erkennung von Nummernschildern. Durch den Einsatz von Computer Vision in IronOCR wird festgestellt, wo Textregionen vorhanden sind, und dann mit Tesseract versucht, diese Regionen zu lesen.
Für die Verwendung des Kennzeichenerkennungsmodells müssen wir IronOCR.ComputerVision.Windows installieren.
Verwenden Sie den folgenden Befehl in der Paketmanager-Konsole.
PM> Install-Package IronOcr.ComputerVision.Windows
Dadurch werden die erforderlichen Baugruppen für die Verwendung von IronOCR Computer Vision mit unserer Modelldatei bereitgestellt.
Der folgende Beispielcode erkennt automatisch das Nummernschild des Fahrzeugs.
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate1.jpg"))
{
input.FindTextRegion();
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate1.jpg"))
{
input.FindTextRegion();
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput("D:\Liscence Plate\plate1.jpg")
input.FindTextRegion()
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Verwendung von textRegion finden" wird Computer Vision verwenden, um Regionen zu erkennen, die Nummernschilder auf jedem Bild eines OcrInput
-Objekts enthalten.
In diesem Tutorial haben wir den Umgang mit IronOCR gelernt und ein einfaches Programm zum Lesen des Nummernschildes eines Autos entwickelt. Wir haben gesehen, dass IronOCR uns in die Lage versetzt, Text aus unscharfen oder niedrig aufgelösten Bildern zu lesen, effizient ist, eine hohe Genauigkeit bietet, 127+ Sprachen mit voller Genauigkeit unterstützt, für die Entwicklung kostenlos ist und keine Einschränkungen für die Produktion hat.
Zusammenfassend lässt sich sagen, dass IronOCR Folgendes bietet:
Unterstützt .NET 6, 5, Core, Standard, Framework
IronOCR ist Teil der Iron Suite. Diese Suite enthält weitere sehr nützliche Bibliotheken wie z.B IronPDF zum Lesen und Schreiben von PDF-Dateien, IronXL für die Bearbeitung von Excel-Dateien, und IronWebScrapper zum Extrahieren von Daten aus Websites. Sie können kaufen Iron Suite für den Preis von zwei Bibliotheken lizenzen.
9 .NET API-Produkte für Ihre Bürodokumente