Wie man Kfz-Kennzeichen in C# mit OCR liest

So lesen Sie Nummernschilder in C# mit IronOCR

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

Die ReadLicensePlate-Methode von IronOCR extrahiert mithilfe fortschrittlicher OCR-Technologie automatisch Kennzeichen aus Fahrzeugbildern. Dieser einzelne Methodenaufruf kann Kennzeichen mit hoher Genauigkeit verarbeiten und gibt sowohl den Kennzeichentext als auch den Konfidenzwert für automatisierte Fahrzeugmanagementsysteme zurück.

Bei der Verwaltung einer großen Menge an Fahrzeugbildern ist das manuelle Auslesen von Kennzeichen zeitaufwändig und anfällig für menschliche Fehler. Die Automatisierung dieses Prozesses mit einem Tool wie IronOCR bietet eine effizientere und genauere Lösung. Die ReadLicensePlate-Methode von IronOCR kann Kennzeichen aus Bildern programmgesteuert extrahieren, was erhebliche Zeitersparnis bringt und gleichzeitig die Datengenauigkeit verbessert.

In diesem Leitfaden zeigen wir Ihnen, wie Sie IronOCR für die Kennzeichenerkennung einsetzen können, und gehen dabei Beispiele und anpassbare Konfigurationen durch, die den Prozess nahtlos gestalten. Durch den Einsatz dieser Methoden können Entwickler das Auslesen von Kfz-Kennzeichen automatisieren und so Aufgaben wie Parkraummanagement, Mauterhebung oder Sicherheitsüberwachung effizienter gestalten.

Um diese Funktion nutzen zu können, müssen Sie zusätzlich das Paket IronOcr.Extension.AdvancedScan installieren.

Schnellstart: Kennzeichen sofort extrahieren

Mit einem einzigen Methodenaufruf using IronOcr's ReadLicensePlate können Sie den Text eines Nummernschilds programmgesteuert aus jedem beliebigen Bild extrahieren. Es ist sofort einsatzbereit – laden Sie einfach ein Bild hoch, rufen Sie die Methode auf und erhalten Sie sofort sowohl das Kennzeichen als auch die Konfidenz.

  1. Installieren Sie IronOCR mit NuGet Package Manager

    PM > Install-Package IronOcr
  2. Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    OcrLicensePlateResult result = new IronTesseract().ReadLicensePlate(new OcrInput("plate.jpg"));
  3. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute, IronOCR in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion

    arrow pointer

Wie lese ich ein Nummernschild in C#?

Um ein Nummernschild in IronOCR zu lesen, führen wir die folgenden Schritte aus:

  • Wir verwenden die Methode ReadLicensePlate, die einen OcrInput als Parameter für die Eingabe verwendet. Diese Methode ist für Kfz-Kennzeichen besser geeignet als das Standard-Read-Pendant der Bibliothek.
  • Optional können wir IronOCR so konfigurieren, dass bestimmte Zeichen, die in einem Kennzeichen vorkommen können, auf eine Whitelist gesetzt werden, um die Verarbeitung von Kennzeichen zu beschleunigen.

Hinweis:

  • Die Methode funktioniert derzeit nur für Englisch, Chinesisch, Japanisch, Koreanisch und Schriften mit lateinischem Alphabet.
  • Die Verwendung von "Advanced Scan" im .NET Framework setzt voraus, dass das Projekt auf einer x64-Architektur läuft. )}]

Wie sieht das Eingabe-Kennzeichen aus?

Kalifornisches Nummernschild mit der Aufschrift

Wie konfiguriere ich die OCR für Kfz-Kennzeichen?

:path=/static-assets/ocr/content-code-examples/how-to/read-license-plate-read-license-plate.cs
using IronOcr;
using System;

var ocr = new IronTesseract();
ocr.Configuration.WhiteListCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_";

using var inputLicensePlate = new OcrInput();
inputLicensePlate.LoadImage("plate.jpeg");

// Read license plate
OcrLicensePlateResult result = ocr.ReadLicensePlate(inputLicensePlate);

// Retrieve license plate number and confidence value
string output = $"{result.Text}\nResult Confidence: {result.Confidence}";

Console.WriteLine(output);
Imports Microsoft.VisualBasic
Imports IronOcr
Imports System

Private ocr = New IronTesseract()
ocr.Configuration.WhiteListCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"

Dim inputLicensePlate = New OcrInput()
inputLicensePlate.LoadImage("plate.jpeg")

' Read license plate
Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(inputLicensePlate)

' Retrieve license plate number and confidence value
Dim output As String = $"{result.Text}" & vbLf & "Result Confidence: {result.Confidence}"

Console.WriteLine(output)
$vbLabelText   $csharpLabel

Welche Ergebnisse kann ich erwarten?

Debug-Konsole mit OCR-Ergebnissen für ein Nummernschild: Bundesstaat Kalifornien, Kennzeichen 8TRS777, Konfidenz 95,87 %

Der Code zeigt, wie man ein Bild als OcrInput importiert und es mit der ReadLicensePlate-Methode verwendet, um den Text aus dem Nummernschild zu extrahieren. Die Ausgabe zeigt den extrahierten Text, der mit dem auf dem Eingabebild gezeigten Nummernschild übereinstimmt, zusammen mit einem Konfidenzwert, der die Genauigkeit der OCR angibt.

Text: Der aus der OCR-Eingabe extrahierte Text.

Konfidenz: Eine double-Eigenschaft, die die statistische Konfidenz der Genauigkeit eines Durchschnittswerts für jedes Zeichen angibt, wobei 1 der höchste und 0 der niedrigste Wert ist.

Für eine präzisere Steuerung des OCR-Prozesses können Sie erweiterte Konfigurationsoptionen nutzen, um die Einstellungen für die Zeichenerkennung fein abzustimmen.


Wie kann ich Kfz-Kennzeichen aus Fahrzeugbildern extrahieren?

Die Methode funktioniert auch gut bei Bildern, die ein Auto mit einem Nummernschild zeigen. Der Code ist derselbe wie oben, lediglich das Eingabebild wurde geändert. Sie können auch die Pixelkoordinaten des Bereichs extrahieren, in dem sich das Nummernschild im Bild befindet.

Welche Art von Fahrzeugbildern eignet sich am besten?

Dunkelgraues Skoda-Auto mit dem Maharashtra-Kennzeichen MH 20 EE 7602, geparkt auf einem gepflasterten Weg

Um optimale Ergebnisse zu erzielen, stellen Sie sicher, dass Ihre Fahrzeugbilder Folgendes aufweisen:

  • Deutliche Sichtbarkeit des Nummernschilds
  • Gute Lichtverhältnisse (Blendeffekte oder Schatten vermeiden)
  • Minimale Winkelverzerrung
  • Angemessene Auflösung (bitte DPI-Einstellungen für Bilder mit niedriger Auflösung anpassen)

Wie erhalte ich die Koordinaten des Standorts des Nummernschilds?

:path=/static-assets/ocr/content-code-examples/how-to/read-license-plate-read-from-car.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

var ocr = new IronTesseract();
using var inputLicensePlate = new OcrInput();
inputLicensePlate.LoadImage("car_license.jpg");

// Read license plate
OcrLicensePlateResult result = ocr.ReadLicensePlate(inputLicensePlate);

// Retrieve license plate coordinates
RectangleF rectangle = result.Licenseplate;

// Write license plate value and coordinates in a string
string output = $"License Plate Number:\n{result.Text}\n\n"
              + $"License Plate Area_\n"
              + $"Starting X: {rectangle.X}\n"
              + $"Starting Y: {rectangle.Y}\n"
              + $"Width: {rectangle.Width}\n"
              + $"Height: {rectangle.Height}";

Console.WriteLine(output);
Imports Microsoft.VisualBasic
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

Private ocr = New IronTesseract()
Private inputLicensePlate = New OcrInput()
inputLicensePlate.LoadImage("car_license.jpg")

' Read license plate
Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(inputLicensePlate)

' Retrieve license plate coordinates
Dim rectangle As RectangleF = result.Licenseplate

' Write license plate value and coordinates in a string
Dim output As String = $"License Plate Number:" & vbLf & "{result.Text}" & vbLf & vbLf & $"License Plate Area_" & vbLf & $"Starting X: {rectangle.X}" & vbLf & $"Starting Y: {rectangle.Y}" & vbLf & $"Width: {rectangle.Width}" & vbLf & $"Height: {rectangle.Height}"

Console.WriteLine(output)
$vbLabelText   $csharpLabel

Welche Informationen enthält das Ergebnis?

Visual Studio-Debug-Ausgabe, die das erkannte Kennzeichen MH20EE7602 mit Begrenzungsrahmen-Koordinaten und Abmessungen anzeigt

Das Beispiel zeigt, wie die Methode ReadLicensePlate auf das Bild eines Autos angewendet werden kann. Die Methode gibt außerdem die Rechteckkoordinaten der Position des Nummernschilds im Bild zurück.

Diese Methode ist darauf optimiert, ausschließlich einzelne Kfz-Kennzeichen zu finden, und kann diese in Bilddatenbanken suchen.

Wie verarbeite ich mehrere Kennzeichen?

Wenn Sie mit mehreren Fahrzeugbildern arbeiten, können Sie diese mithilfe von Stapelverarbeitungsvorgängen effizient bearbeiten:

using IronOcr;
using System.IO;
using System.Threading.Tasks;

public async Task ProcessMultipleLicensePlates(string[] imagePaths)
{
    var ocr = new IronTesseract();

    // Configure for optimal performance
    ocr.Co/nfiguration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    ocr.Co/nfiguration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock;

    var tasks = imagePaths.Select(async path => 
    {
        using var input = new OcrInput();
        input.LoadImage(path);

        var result = await Task.Run(() => ocr.ReadLicensePlate(input));

        return new { 
            FilePath = path, 
            PlateNumber = result.Text, 
            Confidence = result.Co/nfidence 
        };
    });

    var results = await Task.WhenAll(tasks);

    // Process results
    foreach (var result in results)
    {
        Console.WriteLine($"File: {result.FilePath}");
        Console.WriteLine($"Plate: {result.PlateNumber} (Confidence: {result.Co/nfidence:P})");
    }
}
using IronOcr;
using System.IO;
using System.Threading.Tasks;

public async Task ProcessMultipleLicensePlates(string[] imagePaths)
{
    var ocr = new IronTesseract();

    // Configure for optimal performance
    ocr.Co/nfiguration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    ocr.Co/nfiguration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock;

    var tasks = imagePaths.Select(async path => 
    {
        using var input = new OcrInput();
        input.LoadImage(path);

        var result = await Task.Run(() => ocr.ReadLicensePlate(input));

        return new { 
            FilePath = path, 
            PlateNumber = result.Text, 
            Confidence = result.Co/nfidence 
        };
    });

    var results = await Task.WhenAll(tasks);

    // Process results
    foreach (var result in results)
    {
        Console.WriteLine($"File: {result.FilePath}");
        Console.WriteLine($"Plate: {result.PlateNumber} (Confidence: {result.Co/nfidence:P})");
    }
}
Imports IronOcr
Imports System.IO
Imports System.Threading.Tasks

Public Async Function ProcessMultipleLicensePlates(imagePaths As String()) As Task
    Dim ocr As New IronTesseract()

    ' Configure for optimal performance
    ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock

    Dim tasks = imagePaths.Select(Async Function(path)
                                      Using input As New OcrInput()
                                          input.LoadImage(path)

                                          Dim result = Await Task.Run(Function() ocr.ReadLicensePlate(input))

                                          Return New With {
                                              .FilePath = path,
                                              .PlateNumber = result.Text,
                                              .Confidence = result.Confidence
                                          }
                                      End Using
                                  End Function)

    Dim results = Await Task.WhenAll(tasks)

    ' Process results
    For Each result In results
        Console.WriteLine($"File: {result.FilePath}")
        Console.WriteLine($"Plate: {result.PlateNumber} (Confidence: {result.Confidence:P})")
    Next
End Function
$vbLabelText   $csharpLabel

Für die Verarbeitung großer Datenmengen sollten Sie die Implementierung von Multithreading-Funktionen in Betracht ziehen, um die Leistung zu maximieren.

Wie kann ich die Genauigkeit der Kennzeichenerkennung verbessern?

Um die Genauigkeit der Kennzeichenerkennung zu verbessern, sollten Sie folgende Optimierungstechniken in Betracht ziehen:

Bildvorverarbeitungsfilter anwenden

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();

// Load and preprocess the image
input.LoadImage("blurry_plate.jpg");
input.Deskew();  // Correct image rotation
input.DeNoise(); // Remove background noise
input.EnhanceResolution(225); // Upscale for better clarity
input.Sharpen(); // Enhance edge definition

var result = ocr.ReadLicensePlate(input);
using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();

// Load and preprocess the image
input.LoadImage("blurry_plate.jpg");
input.Deskew();  // Correct image rotation
input.DeNoise(); // Remove background noise
input.EnhanceResolution(225); // Upscale for better clarity
input.Sharpen(); // Enhance edge definition

var result = ocr.ReadLicensePlate(input);
Imports IronOcr

Dim ocr As New IronTesseract()
Using input As New OcrInput()
    ' Load and preprocess the image
    input.LoadImage("blurry_plate.jpg")
    input.Deskew() ' Correct image rotation
    input.DeNoise() ' Remove background noise
    input.EnhanceResolution(225) ' Upscale for better clarity
    input.Sharpen() ' Enhance edge definition

    Dim result = ocr.ReadLicensePlate(input)
End Using
$vbLabelText   $csharpLabel

Erfahren Sie mehr über verfügbare Bildfilter und Bildkorrekturtechniken zur Optimierung Ihrer Eingabebilder.

Umgang mit unterschiedlichen Lichtverhältnissen

Bei schwierigen Lichtsituationen sind entsprechende Korrekturen vorzunehmen:

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();

input.LoadImage("dark_plate.jpg");
input.Co/ntrast(1.5); // Increase contrast
input.Brightness(1.2); // Adjust brightness
input.Binarize(); // Convert to black and white for clarity

var result = ocr.ReadLicensePlate(input);
using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();

input.LoadImage("dark_plate.jpg");
input.Co/ntrast(1.5); // Increase contrast
input.Brightness(1.2); // Adjust brightness
input.Binarize(); // Convert to black and white for clarity

var result = ocr.ReadLicensePlate(input);
Imports IronOcr

Dim ocr As New IronTesseract()
Using input As New OcrInput()
    input.LoadImage("dark_plate.jpg")
    input.Contrast(1.5) ' Increase contrast
    input.Brightness(1.2) ' Adjust brightness
    input.Binarize() ' Convert to black and white for clarity

    Dim result = ocr.ReadLicensePlate(input)
End Using
$vbLabelText   $csharpLabel

Wie überwache ich die OCR-Leistung?

Bei der Verarbeitung großer Mengen von Kfz-Kennzeichen hilft die Verfolgung des Fortschritts bei der Verwaltung der Systemressourcen:

using IronOcr;

var ocr = new IronTesseract();

// Subscribe to progress events
ocr.OcrProgress += (sender, e) => 
{
    Console.WriteLine($"Processing: {e.ProgressPercent}% complete");
};

using var input = new OcrInput();
input.LoadImage("large_parking_lot.jpg");

var result = ocr.ReadLicensePlate(input);
using IronOcr;

var ocr = new IronTesseract();

// Subscribe to progress events
ocr.OcrProgress += (sender, e) => 
{
    Console.WriteLine($"Processing: {e.ProgressPercent}% complete");
};

using var input = new OcrInput();
input.LoadImage("large_parking_lot.jpg");

var result = ocr.ReadLicensePlate(input);
Imports IronOcr

Dim ocr As New IronTesseract()

' Subscribe to progress events
AddHandler ocr.OcrProgress, Sub(sender, e)
                                Console.WriteLine($"Processing: {e.ProgressPercent}% complete")
                            End Sub

Using input As New OcrInput()
    input.LoadImage("large_parking_lot.jpg")

    Dim result = ocr.ReadLicensePlate(input)
End Using
$vbLabelText   $csharpLabel

Für eine detaillierte Leistungsüberwachung nutzen Sie die Funktionen zur Fortschrittsverfolgung in IronOCR.

Wie unterscheidet sich dies von anderen Dokumentenleseprogrammen?

Die speziellen Funktionen von IronOCR zum Lesen von Dokumenten gehen über das Erkennen von Kfz-Kennzeichen hinaus. Die gleiche Computer-Vision-Technologie, die die Kennzeichenerkennung ermöglicht, kann auch für folgende Bereiche eingesetzt werden:

Was sind häufige Anwendungsfälle?

Die Kennzeichenerkennung mit IronOCR ermöglicht verschiedene Anwendungen:

  • Parkplatzverwaltung: Automatisierung der Ein- und Ausfahrtsprotokollierung sowie der Zahlungsabwicklung
  • Mauterhebung: Beschleunigung der Fahrzeugidentifizierung an Mautstellen
  • Sicherheitsüberwachung: Verfolgen Sie Fahrzeugbewegungen in Sperrbereichen
  • Flottenmanagement: Überwachung von Firmenfahrzeugen und Logistik
  • Strafverfolgung: Schnelles Identifizieren von gesuchten Fahrzeugen

Jeder Anwendungsfall profitiert von der hohen Genauigkeit von IronOCR und der Fähigkeit, Bilder in Echtzeit zu verarbeiten, wodurch es sich sowohl für die Stapelverarbeitung als auch für Live-Anwendungen eignet.

Häufig gestellte Fragen

Wie lese ich Nummernschilder aus Bildern in C#?

Mit der ReadLicensePlate-Methode von IronOCR können Sie Nummernschilder in C# lesen. Erstellen Sie einfach eine IronTesseract-Instanz und rufen Sie ReadLicensePlate mit einem OcrInput auf, der das Bild Ihres Nummernschildes enthält. Die Methode gibt ein OcrLicensePlateResult mit dem extrahierten Kennzeichentext und dem Konfidenzwert zurück.

Welches Paket muss ich für die Nummernschilderkennung installieren?

Um die Kennzeichenerkennungsfunktion in IronOCR zu nutzen, müssen Sie sowohl das IronOCR-Hauptpaket als auch das IronOcr.Extension.AdvancedScan-Paket von NuGet installieren. Die AdvancedScan-Erweiterung bietet die spezielle ReadLicensePlate-Methode.

Kann ich Nummernschilder mit nur einer Zeile Code extrahieren?

Ja, IronOCR ermöglicht es Ihnen, Nummernschildtext mit einer einzigen Codezeile zu extrahieren: OcrLicensePlateResult result = new IronTesseract().ReadLicensePlate(new OcrInput("plate.jpg")); Dies gibt sowohl das Kennzeichen als auch den Vertrauenswert sofort zurück.

Welche Sprachen werden für die Nummernschilderkennung unterstützt?

Die ReadLicensePlate-Methode von IronOCR unterstützt derzeit Nummernschilder mit englischen, chinesischen, japanischen, koreanischen und lateinischen Schriftzeichen. Die Methode ist speziell für diese Zeichensätze optimiert.

Wie kann ich die Genauigkeit beim Lesen von Nummernschildern verbessern?

Sie können die Genauigkeit in IronOCR verbessern, indem Sie bestimmte Zeichen, die in Nummernschildern vorkommen, auf die Whitelist setzen, sicherstellen, dass das Bild nur das Nummernschild ohne Kopf- oder Fußzeilen enthält, und hochwertige Bilder verwenden. Die ReadLicensePlate-Methode ist bereits speziell für die Erkennung von Nummernschildern optimiert.

Was sind die Systemanforderungen für die Nummernschilderkennung auf .NET Framework?

Wenn Sie die erweiterten Scanfunktionen von IronOCR einschließlich ReadLicensePlate auf .NET Framework verwenden, muss Ihr Projekt auf einer x64-Architektur laufen. Diese Anforderung gewährleistet eine optimale Leistung der Kennzeichenerkennungsfunktion.

Welche Informationen liefert die Nummernschilderkennung?

Die ReadLicensePlate-Methode von IronOCR gibt ein OcrLicensePlateResult-Objekt zurück, das den extrahierten Kennzeichentext und einen Konfidenzwert enthält. Damit können Sie sowohl das Kennzeichen abrufen als auch die Zuverlässigkeit des OCR-Ergebnisses bewerten.

Was sind die Vorteile der Nutzung von IronOCR für das Dokumentenmanagement?

Die Verwendung von IronOCR für das Dokumentenmanagement rationalisiert den Arbeitsablauf, indem gescannte Dokumente in durchsuchbare und bearbeitbare Texte umgewandelt werden, wodurch der Bedarf an manueller Dateneingabe reduziert und die Zugänglichkeit von Dokumenten verbessert wird.

Wie kann IronOCR die Datenqualität verbessern?

IronOCR verbessert die Datenqualität durch seine fortschrittlichen Erkennungsalgorithmen und Bildkorrekturfunktionen, die sicherstellen, dass der Textextraktionsprozess sowohl zuverlässig als auch genau ist.

Gibt es eine kostenlose Testversion von IronOCR?

Ja, Iron Software bietet eine kostenlose Testversion von IronOCR an, die es den Benutzern ermöglicht, die Funktionen und Fähigkeiten zu testen, bevor sie eine Kaufentscheidung treffen.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 5,896,332 | Version: 2026.5 just released
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronOcr
Führen Sie ein Beispiel aus und beobachten Sie, wie Ihr Bild zu durchsuchbarem Text wird.