Extrahieren von Reisepassdaten in C#35; mit IronOCR
Die Methode ReadPassport von IronOCR extrahiert strukturierte Daten aus Passbildern, einschließlich Namen, Passnummern, Geburtsdaten und Ablaufdaten, in einer einzigen Zeile C#-Code und eignet sich daher ideal für Einwanderungs- und Sicherheitsanwendungen.
Bei Anwendungen und Systemen wie Check-in-Schaltern und der Sicherheitskontrolle an Flughäfen, wo Agenten täglich große Mengen an Pässen bearbeiten, ist ein zuverlässiges System, das geschäftskritische Informationen über Reisende genau extrahiert, von entscheidender Bedeutung, um einen effizienten und rationellen Einreiseprozess zu gewährleisten. Die IronOCR-Bibliothek bietet fortschrittliche OCR-Funktionen, die speziell für das Lesen von Reisepässen optimiert sind und Tesseract 5 mit Erweiterungen für maschinelles Lernen nutzen.
Schnellstart: MRZ-Informationen aus dem Reisepass in einer Zeile extrahieren
Dieses Beispiel zeigt, wie man ein Passbild mit OcrInput lädt, mit ReadPassport() Daten extrahiert und auf strukturierte Felder wie Namen, Nummern und Daten aus dem zurückgegebenen PassportInfo zugreift. Keine komplexe Einrichtung erforderlich - nur eine einfache Zeile. Im Gegensatz zu herkömmlichen Tesseract-Implementierungen bietet IronOCR eine vereinfachte API, die speziell für die Dokumentenextraktion entwickelt wurde.
-
Installieren Sie IronOCR mit NuGet Package Manager
PM > Install-Package IronOcr -
Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.
var passportInfo = new IronOcr.IronTesseract().ReadPassport(new IronOcr.OcrInput("passport.jpg")).PassportInfo; -
Bereitstellen zum Testen in Ihrer Live-Umgebung
Beginnen Sie noch heute, IronOCR in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion
Minimaler Arbeitsablauf (5 Schritte)
- Laden Sie eine C#-Bibliothek zum Lesen von Pässen herunter.
- Importieren Sie das Passbild zum Lesen
- Stellen Sie sicher, dass das Dokument nur das Passbild enthält, ohne Kopf- oder Fußzeilen
- Verwenden Sie die
ReadPassportMethode, um Daten aus dem Bild zu extrahieren. - Über die Eigenschaft "OcrPassportResult" können Sie die extrahierten Passdaten anzeigen und weiter bearbeiten.
Wie extrahiere ich Passdaten in C#?
Als Beispiel verwenden wir ein Passbild als Eingabe, um die Funktionalität von IronOCR zu demonstrieren. Nach dem Laden des Bildes mit OcrInput können Sie die Methode ReadPassport verwenden, um Informationen aus dem Reisepass zu identifizieren und zu extrahieren. Diese Methode gibt ein OcrPassportResult-Objekt zurück, das Eigenschaften wie GivenNames, Country, PassportNumber, Surname, DateOfBirth, DateOfExpiry, Gender, DocumentType, Nationalität, NationalitätCode, IssuingCountryCode, PersonalNumber und DateOfIssue enthält.
Die Methode ReadPassport ist Teil der spezialisierten Dokumentenlesefunktionen von IronOCR, zu denen auch Methoden zum Lesen von Kfz-Kennzeichen , MICR-Schecks und anderen strukturierten Dokumenten gehören. Die Methode verwendet fortschrittliche Computer-Vision-Techniken, um den MRZ-Bereich (Machine Readable Zone) automatisch zu lokalisieren und zu extrahieren.
- Die Methode funktioniert derzeit nur für englischsprachige Pässe.
- Die Verwendung eines erweiterten Scans auf .NET Framework erfordert, dass das Projekt auf x64-Architektur läuft.
- Hinweis für Mac-Benutzer: Die Methode
ReadPassportdreht die Eingabe derzeit nicht automatisch. Bei der Verwendung der Eingabe stellen Sie bitte sicher, dass die MRZ immer am unteren Ende der Datei ist; andernfalls schlägt der Vorgang fehl.
)}]
Welches Passbildformat sollte ich verwenden?
IronOCR unterstützt verschiedene Bildformate, darunter JPG, PNG, TIFF und BMP. Um optimale Ergebnisse zu erzielen, sollten Sie sicherstellen, dass Ihr Passbild eine angemessene Auflösung (mindestens 300 DPI) und eine gute Beleuchtung aufweist. Die DPI-Einstellungen können angepasst werden, wenn mit Scans geringerer Qualität gearbeitet wird.
Welchen Code benötige ich, um Passdaten zu extrahieren?
Das folgende Beispiel veranschaulicht den gesamten Prozess der Extraktion von Reisepassdaten. Für Anwendungen, die mehrere Pässe verarbeiten, sollten Sie Multithreading-Unterstützung implementieren, um die Leistung zu verbessern. Sie können auch den OCR-Fortschritt für langwierige Vorgänge verfolgen.
:path=/static-assets/ocr/content-code-examples/how-to/read-passport-read-passport.cs
using IronOcr;
using System;
// Instantiate OCR engine
var ocr = new IronTesseract();
using var inputPassport = new OcrInput();
inputPassport.LoadImage("passport.jpg");
// Perform OCR
OcrPassportResult result = ocr.ReadPassport(inputPassport);
// Output passport information
Console.WriteLine(result.PassportInfo.GivenNames);
Console.WriteLine(result.PassportInfo.Country);
Console.WriteLine(result.PassportInfo.PassportNumber);
Console.WriteLine(result.PassportInfo.Surname);
Console.WriteLine(result.PassportInfo.DateOfBirth);
Console.WriteLine(result.PassportInfo.DateOfExpiry);
Console.WriteLine(result.PassportInfo.Gender);
Console.WriteLine(result.PassportInfo.DocumentType);
Console.WriteLine(result.PassportInfo.Nationality);
Console.WriteLine(result.PassportInfo.NationalityCode);
Console.WriteLine(result.PassportInfo.IssuingCountryCode);
Console.WriteLine(result.PassportInfo.PersonalNumber);
Console.WriteLine(result.PassportInfo.DateOfIssue);
Imports IronOcr
Imports System
' Instantiate OCR engine
Dim ocr As New IronTesseract()
Using inputPassport As New OcrInput()
inputPassport.LoadImage("passport.jpg")
' Perform OCR
Dim result As OcrPassportResult = ocr.ReadPassport(inputPassport)
' Output passport information
Console.WriteLine(result.PassportInfo.GivenNames)
Console.WriteLine(result.PassportInfo.Country)
Console.WriteLine(result.PassportInfo.PassportNumber)
Console.WriteLine(result.PassportInfo.Surname)
Console.WriteLine(result.PassportInfo.DateOfBirth)
Console.WriteLine(result.PassportInfo.DateOfExpiry)
Console.WriteLine(result.PassportInfo.Gender)
Console.WriteLine(result.PassportInfo.DocumentType)
Console.WriteLine(result.PassportInfo.Nationality)
Console.WriteLine(result.PassportInfo.NationalityCode)
Console.WriteLine(result.PassportInfo.IssuingCountryCode)
Console.WriteLine(result.PassportInfo.PersonalNumber)
Console.WriteLine(result.PassportInfo.DateOfIssue)
End Using
Welche Ausgabe kann ich von ReadPassport erwarten?
Die extrahierten Daten werden in einem strukturierten Format zurückgegeben, das sich leicht in bestehende Systeme integrieren lässt. Die Klasse OcrResult bietet umfassenden Zugriff auf alle extrahierten Informationen.
Anschließend greifen wir auf das Datenelement PassportInfo zu, das aus dem Objekt OcrPassportResult stammt. Der Extraktionsprozess verarbeitet automatisch verschiedene Passlayouts und -formate und liefert konsistente Ergebnisse für verschiedene ausstellende Länder.
GivenNames: Eine Eigenschaft vonPassportInfogibt die angegebenen Namen der Pass-Eingabe als Zeichenkette zurück. Dies entspricht der ersten MRZ-Datenzeile, Stelle 4 bis 44.Country: Eine Eigenschaft vonPassportInfogibt das Land des eingegebenen Reisepasses als Zeichenkette zurück. Dies entspricht der ersten MRZ-Datenzeile, Stelle 2 bis 3. Die zurückgegebene Zeichenfolge gibt den vollständigen Namen des ausstellenden Landes anstelle der Abkürzung an. In unserem Beispiel ergibt USA "Vereinigte Staaten von Amerika".PassportNumber: Eine Eigenschaft vonPassportInfogibt die Passnummer des eingegebenen Passes als Zeichenkette zurück. Dies entspricht der zweiten MRZ-Datenzeile, Stelle 1 bis 9.Surname: Eine Eigenschaft vonPassportInfogibt den Nachnamen des Pass-Inputs als Zeichenkette zurück. Dies entspricht der ersten MRZ-Datenzeile, Stelle 4 bis 44.DateOfBirth: Eine Eigenschaft vonPassportInfogibt das Geburtsdatum des Pass-Inputs als Zeichenkette im Format JJJJ-MM-TT zurück. Dies entspricht der zweiten MRZ-Datenzeile, Stelle 14 bis 19.DateOfExpiry: Ein Eigenschaftsmitglied vonPassportInfogibt das Ablaufdatum des Reisepass-Inputs als Zeichenkette im Format JJJJ-MM-TT zurück. Dies entspricht der zweiten MRZ-Datenzeile, Stelle 22 bis 27.Gender: Gibt das Geschlecht aus der MRZ-Stelle 21 alsGender.Male,Gender.FemaleoderGender.Unspecifiedzurück.DocumentType: Gibt den Dokumenttyp aus den MRZ-Stelleen 1-2 zurück, z. B. "P" für Reisepass, "PS" für Dienstausweis oder "PD" für Diplomatenausweis.Nationalität: Gibt den vollständigen englischen Ländernamen zurück, der aus den MRZ-Stelleen 11-13 abgeleitet ist.NationalitätCode: Gibt den rohen ISO 3166-1 Alpha-3-Code aus den MRZ-Stelleen 11-13 zurück.IssuingCountryCode: Gibt den rohen ISO 3166-1 Alpha-3-Code für den ausstellenden Staat aus den MRZ-Stelleen 3-5 zurück.PersonalNumber: Gibt die optionale nationale Identifikationsnummer aus den MRZ-Stelleen 29-42 zurück.DateOfIssue: Gibt das Ausgabedatum zurück, das aus der Visual Inspection Zone (VIZ) durch bestmögliches Label-Matching in 27 Sprachen extrahiert wurde.
Welche MRZ-Informationen kann ich aus Reisepässen extrahieren?
IronOCR liest die MRZ-Informationen in den unteren beiden Zeilen jedes Reisepasses, der dem Standard der (International Civil Aviation Organization) ICAO entspricht. Die MRZ-Daten bestehen aus zwei Datenzeilen, wobei jeder Satz von Stelleen eindeutige Informationen enthält. Hier ist eine kurze Tabelle, die zeigt, welche Informationen dem Index der Zeile entsprechen.
Die MRZ-Parsing-Funktionalität in IronOCR wurde entwickelt, um Variationen in der Druckqualität und Bildausrichtung zu bewältigen. Bei anspruchsvollen Dokumenten können Sie Bildkorrekturfilter anwenden, um die Erkennungsgenauigkeit zu verbessern.
Wie sieht der MRZ-Abschnitt aus?
Die MRZ befindet sich in der Regel am unteren Rand der Reisepass-Seite und besteht aus zwei Zeilen standardisierten Textes. Das Verständnis der MRZ-Struktur hilft bei der Fehlerbehebung von Extraktionsproblemen und der Validierung von Ergebnissen.
Erste Reihe
| Stelle | Feld | Beschreibung |
|---|---|---|
| 1 | Dokumenttyp | Typischerweise 'P' für Reisepass |
| 2-3 | Ausstellendes Land | Dreistelliger Ländercode (ISO 3166-1 alpha-3) |
| 4-44 | Nachname und Vornamen | Nachname gefolgt von '<<' und dann Vornamen getrennt durch '<' |
Zweite Reihe
| Stelle | Feld | Beschreibung |
|---|---|---|
| 1-9 | Passnummer | Eindeutige Passnummer |
| 10 | Prüfziffer (Passnummer) | Prüfziffer für die Passnummer |
| 11-13 | Nationalität | Dreistelliger Nationalitätscode (ISO 3166-1 alpha-3) |
| 14-19 | Geburtsdatum | Geburtsdatum im Format JJMMTT |
| 20 | Prüfziffer (Geburtsdatum) | Prüfziffer für das Geburtsdatum |
| 21 | Sex | Geschlecht ('M' für männlich, 'F' für weiblich, 'X' für nicht angegeben) |
| 22-27 | Ablaufdatum | Ablaufdatum im Format JJMMTT |
| 28 | Prüfziffer (Ablaufdatum) | Prüfziffer für das Ablaufdatum |
| 29-42 | Persönliche Nummer | Optionale persönliche Nummer (in der Regel die nationale Identifikationsnummer) |
| 43 | Prüfziffer (Persönliche Nummer) | Prüfziffer für die persönliche Nummer |
| 44 | Prüfziffer (zusammengesetzt) | Gesamtprüfziffer |
Wie kann ich die Ergebnisse der Pass-Extraktion debuggen und überprüfen?
Wir können die Ergebnisse von IronOCR auch überprüfen, indem wir den aus dem Passbild extrahierten Rohtext und das Konfidenzniveau erhalten, um zu bestätigen, ob die extrahierten Informationen korrekt sind. Anhand des obigen Beispiels können wir auf die Eigenschaften Confidence und Text des Objekts OcrPassportResult zugreifen.
Zu Debugging-Zwecken können Sie Textbereiche hervorheben, um visuell zu überprüfen, welche Bereiche erkannt wurden. Diese Funktion ist besonders nützlich bei der Fehlerbehebung von Extraktionsproblemen oder der Optimierung von Scanbereichen.
:path=/static-assets/ocr/content-code-examples/how-to/read-passport-debug.cs
using IronOcr;
using System;
// Instantiate OCR engine
var ocr = new IronTesseract();
using var inputPassport = new OcrInput();
inputPassport.LoadImage("passport.jpg");
// Perform OCR
OcrPassportResult result = ocr.ReadPassport(inputPassport);
// Output Confidence level and raw extracted text
Console.WriteLine(result.Confidence);
Console.WriteLine(result.Text);
Imports IronOcr
Imports System
' Instantiate OCR engine
Private ocr = New IronTesseract()
Private inputPassport = New OcrInput()
inputPassport.LoadImage("passport.jpg")
' Perform OCR
Dim result As OcrPassportResult = ocr.ReadPassport(inputPassport)
' Output Confidence level and raw extracted text
Console.WriteLine(result.Confidence)
Console.WriteLine(result.Text)

Confidence: Die EigenschaftConfidencevonOcrPassportResultist eine Gleitkommazahl, die die statistische Genauigkeitszuversicht der OCR als Durchschnitt aller Zeichen angibt. Dieser Schwellenwert ist niedriger, wenn das Passbild unscharf ist oder andere Informationen enthält. Eine Eins ist die höchste und sicherste, und eine Null ist die niedrigste und unsicherste. Für Produktionsanwendungen sollten Sie Ergebniszuverlässigkeit Schwellenwerte einführen, um die Datenqualität zu gewährleisten.Text: Die EigenschaftTextvonOcrPassportResultenthält den rohen, nicht analysierten Text, der aus dem Passbild extrahiert wurde. Die Entwickler können dies in Unit-Tests verwenden, um den extrahierten Text des Passbildes zu überprüfen. Für fortgeschrittene Szenarien können Sie die Ergebnisse im hOCR-Format zur weiteren Analyse exportieren.
Best Practices für Anwendungen zum Scannen von Reisepässen
Bei der Implementierung von Pass-Scans in Produktionsumgebungen sollten Sie diese zusätzlichen Faktoren berücksichtigen:
-
Bildqualität: Sicherstellen, dass die eingegebenen Bilder den Mindestqualitätsstandards entsprechen. Der Filter-Assistent kann helfen, Bilder für eine bessere Erkennung zu optimieren.
-
Leistungsfähigkeit: Für die Verarbeitung großer Mengen sollten Sie async-Unterstützung implementieren und die Stapelverarbeitung mehrerer Pässe in Betracht ziehen.
-
Sicherheit: Da es sich bei den Passdaten um sensible Daten handelt, sollten Sie für eine ordnungsgemäße Datenverarbeitung sorgen und die Integration mit sicheren Dokumentenverwaltungssystemen in Betracht ziehen.
-
Validierung: Implementierung einer Prüfziffernvalidierung für die extrahierten MRZ-Daten zur Gewährleistung der Genauigkeit. Das MRZ-Format enthält mehrere Prüfziffern, mit denen die Integrität der extrahierten Informationen überprüft werden kann.
- Fehlerbehandlung: Implementieren Sie eine robuste Fehlerbehandlung für Fälle, in denen Passbilder beschädigt oder schlecht beleuchtet sind oder nicht standardisierte Formate enthalten.
Häufig gestellte Fragen
Wie extrahiere ich Reisepassdaten aus Bildern in C#?
Sie können Passdaten mit der ReadPassport-Methode von IronOCR extrahieren. Laden Sie einfach Ihr Passbild mit OcrInput und rufen Sie ReadPassport() auf, um strukturierte Daten einschließlich Namen, Passnummern, Geburtsdaten und Ablaufdaten in einer einzigen Codezeile zu erhalten.
Welche Reisepassinformationen können automatisch extrahiert werden?
Die ReadPassport-Methode von IronOCR extrahiert Vornamen, Land, Passnummer, Nachname, Geburtsdatum und Gültigkeitsdatum aus Passbildern. Alle Daten werden als Zeichenketten in einem strukturierten PassportInfo-Objekt zurückgegeben.
Benötige ich eine komplexe Einrichtung, um Pass-MRZ-Daten zu lesen?
Es ist keine komplexe Einrichtung erforderlich. IronOCR bietet eine vereinfachte API, die Pass-MRZ-Daten in nur einer Codezeile extrahiert, im Gegensatz zu traditionellen Tesseract-Implementierungen, die mehr Konfiguration erfordern.
Auf welcher Technologie basiert die Fähigkeit, Reisepässe zu lesen?
IronOCR nutzt Tesseract 5 unter der Haube mit Erweiterungen des maschinellen Lernens und fortschrittlichen Computer-Vision-Techniken, um den MRZ-Bereich (Machine Readable Zone) von Passbildern automatisch zu lokalisieren und zu extrahieren.
Kann dies für Flughafen-Einwanderungssysteme verwendet werden?
Ja, IronOCR ist ideal für Einwanderungs- und Sicherheitsanwendungen an Flughäfen, wo Agenten täglich große Mengen an Pässen bearbeiten. Es bietet eine zuverlässige Extraktion von geschäftskritischen Reiseinformationen, um effiziente Einwanderungsprozesse zu gewährleisten.

