IRONOCR VERWENDEN

OCR von Nummernschildern in C# (Anleitung)

Aktualisiert 19. Dezember 2023
Teilen Sie:

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

IronOCR ist eine von Iron Software entwickelte und gepflegte Bibliothek, die C#-Softwareentwicklern hilft, OCR, Barcode-Scanning und Textextraktion in .NET-Projekten durchzuführen.

Merkmale von IronOCR

  • Lesen von Text aus vielen Formaten wie z. B. Bildern (JPEG, PNG, GIFF, TIFF, BMP)streams und PDFs
  • Korrektur minderwertiger Scans und Fotos mit einer Fülle von Filtern wie "Entzerren", "Entrauschen", "Binarisieren", "Auflösung verbessern", "Dilatieren" und vielen mehr
  • Lesen von Barcodes aus über 20 Barcodeformaten und QR-Code-Unterstützung
  • Unter Verwendung der neuesten Version von Tesseract OCR, auf Leistung getrimmt
  • Exportieren durchsuchbare PDFs, HTML und Bildinhaltstext.

    Entwickeln wir eine Demo-Anwendung zum Lesen von Nummernschildern.

Erstellen eines Visual Studio-Projekts

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.

Wie man OCR-Kennzeichen in C# (Tutorial), Abbildung 1: Erstellen eines Visual Studio-Projekts für unsere License Plate OCR-Projekt

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.

IronOCR NuGet-Paket installieren

Klicken Sie in der oberen Menüleiste auf Tools, und wählen Sie NuGet Package Manager > Manage NuGet Packages for Solution, wie unten dargestellt.

OCR-Kennzeichen in C# (Tutorial), Abbildung 2: Auffinden der NuGet Package Manager UI in Visual Studio

Lokalisierung der NuGet Package Manager UI in Visual Studio

Das folgende Fenster wird angezeigt.

Wie OCR-Kennzeichen in C# (Tutorial), Abbildung 3: Die NuGet Package Manager UI in Visual Studio

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.

Wie OCR-Kennzeichen in C# (Tutorial), Abbildung 4: Installieren Sie die IronOCR-Bibliothek in NuGet Package Manager UI

Installieren Sie die IronOCR-Bibliothek in der NuGet Package Manager UI

Die IronOCR-Bibliothek ist nun installiert und einsatzbereit.

Lesen von Nummernschildern mit optischer Zeichenerkennung

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:

OCR von Nummernschildern in C# (Tutorial), Abbildung 5: Bild eines Nummernschildes mit deutlich sichtbaren Nummernschildern

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
VB   C#

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
VB   C#

Damit werden die folgenden Aufgaben erfüllt:

  • Initialisiert die eisen-Tesserakt objekt mit Standardeinstellungen.
  • Erzeugt eine neue ocrInput objekt, das mit einer Eingabebilddatei gefüllt ist.
  • Ruft auf geräuschentwicklungder das digitale Rauschen entfernt. Dieser Filter sollte nur verwendet werden, wenn Rauschen zu erwarten ist; in unserem Fall sind CCTV-Videos oder -Bilder oft mit Rauschen behaftet.
  • Ruft die toGrayScale filter, der jedes Pixel in einen Grauton verwandelt (dies kann die Geschwindigkeit erhöhen).
  • Liest Text aus einem "OcrInput"-Objekt über die Methode "Read", die ein ocrResult objekt. ocrInput" ist der bevorzugte Eingabetyp, weil er Folgendes ermöglicht OCR von mehrseitigen Dokumentenund ermöglicht es, die Bilder vor dem Lesen zu verbessern, um schnellere und genauere Ergebnisse zu erzielen.
  • 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.

    OCR von Nummernschildern in C# (Tutorial), Abbildung 6: IronOCR erkennt und extrahiert die Nummern korrekt aus dem Nummernschildbild

    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.

Scannen von Nummernschildern aus einem Auto

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.

OCR von Nummernschildern in C# (Tutorial), Abbildung 7: Vollständige Rückansicht eines Autos mit sichtbarem Nummernschild

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
VB   C#

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.

Automatische Nummernschild-Erkennung

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
VB   C#

Verwendung von textRegion finden" wird Computer Vision verwenden, um Regionen zu erkennen, die Nummernschilder auf jedem Bild eines OcrInput-Objekts enthalten.

Zusammenfassung

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:

  • OCR für C# zum Scannen und Lesen von Bildern und PDFs
  • .NET OCR-Bibliothek mit über 127 globalen Sprachpaketen
  • Ausgabe als Text, strukturierte Daten oder durchsuchbare PDFs
  • 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.

< PREVIOUS
OCR von Führerscheinen in C#
NÄCHSTES >
Wie man Text aus einer Rechnung in C# Tutorial

Sind Sie bereit, loszulegen? Version: 2024.10 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 2,561,036 Lizenzen anzeigen >