Wyodrębnianie danych paszportowych w języku C# za pomocą IronOCR

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

Metoda ReadPassport z IronOCR wyodrębnia uporządkowane dane z obrazów paszportów, w tym imiona, numery paszportów, daty urodzenia i daty ważności, w jednej linii kodu C#, co czyni ją idealną dla zastosowań związanych z imigracją i bezpieczeństwem.

W aplikacjach i systemach, takich jak stanowiska odprawy i kontrola imigracyjna na lotniskach, gdzie pracownicy codziennie obsługują duże ilości paszportów, posiadanie niezawodnego systemu, który dokładnie wyodrębnia kluczowe informacje o podróżnych, ma kluczowe znaczenie dla zapewnienia wydajnego i usprawnionego procesu imigracyjnego. Biblioteka IronOCR zapewnia zaawansowane funkcje OCR zoptymalizowane specjalnie do odczytu paszportów, wykorzystując w tle Tesseract 5 z ulepszeniami opartymi na uczeniu maszynowym.

Szybki start: Wyodrębnianie informacji MRZ z paszportu w jednym wierszu

Ten przykład pokazuje, jak załadować obraz paszportu używając OcrInput, wykorzystać ReadPassport() do wyodrębniania danych oraz uzyskać dostęp do uporządkowanych pól, takich jak imiona, numer i daty z zwróconego PassportInfo. Nie wymaga skomplikowanej konfiguracji — wystarczy jedna prosta linijka kodu. W przeciwieństwie do tradycyjnych implementacji Tesseract, IronOCR zapewnia uproszczony interfejs API zaprojektowany specjalnie do ekstrakcji dokumentów.

  1. Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr
  2. Skopiuj i uruchom ten fragment kodu.

    var passportInfo = new IronOcr.IronTesseract().ReadPassport(new IronOcr.OcrInput("passport.jpg")).PassportInfo;
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer

Jak wyodrębnić dane paszportowe w języku C#?

Jako przykład wykorzystamy zdjęcie paszportowe, aby zaprezentować funkcjonalność IronOCR. Po załadowaniu obrazu za pomocą OcrInput, można wykorzystać metodę ReadPassport do identyfikacji i wyodrębniania informacji z paszportu. Ta metoda zwraca obiekt OcrPassportResult, który zawiera właściwości takie jak GivenNames, Country, PassportNumber, Surname, DateOfBirth, DateOfExpiry, Gender, DocumentType, Nationality, NationalityCode, IssuingCountryCode, PersonalNumber, i DateOfIssue.

Metoda ReadPassport jest częścią specjalistycznych funkcji odczytu dokumentów IronOCR, która obejmuje także metody do czytania tablic rejestracyjnych, czeków MICR oraz innych uporządkowanych dokumentów. Metoda wykorzystuje zaawansowane techniki wizji komputerowej do automatycznego lokalizowania i wyodrębniania obszaru MRZ (Machine Readable Zone).

Zwróć uwagę

  • Metoda ta działa obecnie tylko w przypadku paszportów wydanych w języku angielskim.
  • Korzystanie z zaawansowanego skanowania w środowisku .NET Framework wymaga, aby projekt działał na architekturze x64.
  • Dla użytkowników Mac, proszę pamiętać, że metoda ReadPassport obecnie nie obraca automatycznie wejściowego obrazu. Podczas korzystania z pliku wejściowego należy upewnić się, że MRZ znajduje się zawsze na dole pliku; w przeciwnym razie proces zakończy się niepowodzeniem.
    )}]

Jakiego formatu zdjęcia paszportowego powinienem użyć?

IronOCR obsługuje różne formaty obrazów, w tym JPG, PNG, TIFF i BMP. Aby uzyskać optymalne wyniki, upewnij się, że zdjęcie paszportowe ma odpowiednią rozdzielczość (co najmniej 300 DPI) i jest dobrze oświetlone. Ustawienia DPI można dostosować w przypadku pracy ze skanami o niższej jakości.

Przykład strony z danymi paszportu amerykańskiego przedstawiającej pola biograficzne, daty oraz strefę nadającą się do odczytu maszynowego na potrzeby demonstracji ekstrakcji danych

Jakiego kodu potrzebuję do wyodrębnienia danych z paszportu?

Poniższy przykład ilustruje cały proces pozyskiwania danych z paszportu. W przypadku aplikacji przetwarzających wiele paszportów warto rozważyć wdrożenie obsługi wielowątkowości w celu poprawy wydajności. Możesz również śledzić postęp OCR dla operacji trwających długo.

: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
$vbLabelText   $csharpLabel

Jakie Wyjście Mogę Oczekiwać od ReadPassport?

Wyodrębnione dane są zwracane w uporządkowanym formacie, co ułatwia integrację z istniejącymi systemami. Klasa OcrResult zapewnia pełny dostęp do wszystkich wyodrębnionych informacji.

Konsola debugowania pokazująca wyodrębnione dane paszportowe: imię, kraj, numer paszportu i daty z przetwarzania OCR

Następnie uzyskujemy dostęp do członka danych PassportInfo uzyskanego z obiektu OcrPassportResult. Proces wyodrębniania automatycznie obsługuje różne układy i formaty paszportów, zapewniając spójne wyniki w różnych krajach wydających.

  • GivenNames: Właściwość PassportInfo zwraca podane imiona z paszportu jako ciąg znaków. To odpowiada pierwszemu wierszowi danych MRZ, pozycje 4 do 44.
  • Country: Właściwość PassportInfo zwraca kraj paszportu jako ciąg znaków. To odpowiada pierwszemu wierszowi danych MRZ, pozycje 2 do 3. Zwrócony ciąg znaków podaje pełną nazwę kraju wydającego zamiast skrótu. W naszym przykładzie, USA zwraca 'Stany Zjednoczone Ameryki'.
  • PassportNumber: Właściwość PassportInfo zwraca numer paszportu jako ciąg znaków. To odpowiada drugiemu wierszowi danych MRZ, pozycje 1 do 9.
  • Surname: Właściwość PassportInfo zwraca nazwisko z paszportu jako ciąg znaków. To odpowiada pierwszemu wierszowi danych MRZ, pozycje 4 do 44.
  • DateOfBirth: Właściwość PassportInfo zwraca datę urodzenia z paszportu jako ciąg znaków w formacie RRRR-MM-DD. To odpowiada drugiemu wierszowi danych MRZ, pozycje 14 do 19.
  • DateOfExpiry: Właściwość PassportInfo zwraca datę ważności z paszportu jako ciąg znaków w formacie RRRR-MM-DD. To odpowiada drugiemu wierszowi danych MRZ, pozycje 22 do 27.
  • Gender: Zwraca płeć z pozycji MRZ 21 jako Gender.Male, Gender.Female lub Gender.Unspecified.
  • DocumentType: Zwraca typ dokumentu z pozycji MRZ 1-2, taki jak "P" dla paszportu, "PS" dla służbowego lub "PD" dla dyplomatycznego.
  • Nationality: Zwraca pełną angielską nazwę kraju uzyskaną z pozycji MRZ 11-13.
  • NationalityCode: Zwraca surowy kod ISO 3166-1 alfa-3 z pozycji MRZ 11-13.
  • IssuingCountryCode: Zwraca surowy kod ISO 3166-1 alfa-3 dla państwa wydającego z pozycji MRZ 3-5.
  • PersonalNumber: Zwraca opcjonalny numer identyfikacyjny z MRZ z pozycji 29-42.
  • DateOfIssue: Zwraca datę wydania wyodrębnioną z Strefy Wizualnej Inspekcji (VIZ) poprzez dopasowanie etykiet w 27 językach.

Jakie Informacje MRZ Mogę Wyciągnąć z Paszportów?

IronOCR odczytuje informacje MRZ zawarte na dwóch dolnych wierszach każdego paszportu, który spełnia standardy ICAO (Międzynarodowej Organizacji Lotnictwa Cywilnego) ICAO. Dane MRZ składają się z dwóch wierszy danych, z których każdy zestaw pozycji zawiera unikalne informacje. Oto krótka tabela pokazująca, które informacje odpowiadają indeksowi wiersza.

Funkcjonalność parsowania MRZ w IronOCR została zaprojektowana, aby radzić sobie z różnicami w jakości druku i orientacją obrazu. Dla wymagających dokumentów można zastosować filtry korekcji obrazu w celu poprawy dokładności rozpoznawania.

Jak Wygląda Sekcja MRZ?

MRZ znajduje się zazwyczaj na dole strony paszportu i składa się z dwóch linii znormalizowanego tekstu. Zrozumienie struktury MRZ pomaga w rozwiązywaniu problemów z wyodrębnianiem oraz w weryfikacji wyników.

Strona paszportu USA ze strefą umożliwiającą automatyczne odczytywanie maszynowe (MRZ) wyróżnioną na czerwono, pokazującą zakodowane alfanumeryczne linie danych

Pierwsza linia

Pozycja Pole Opis
1Typ dokumentuZwykle 'P' dla paszportu
2-3Kraj wydaniaTrzyliterowy kod kraju (ISO 3166-1 alfa-3)
4-44Nazwisko i ImionaNazwisko, następnie '<<' i imiona oddzielone '<'

Druga linia

Pozycja Pole Opis
1-9Numer paszportuUnikalny numer paszportu
10Cyfra kontrolna (Numer paszportu)Cyfra kontrolna dla numeru paszportu
11-13NarodowośćTrzyliterowy kod narodowości (ISO 3166-1 alfa-3)
14-19Data urodzeniaData urodzenia w formacie RRRRMMDD
20Cyfra kontrolna (Data urodzenia)Cyfra kontrolna dla daty urodzenia
21PłećPłeć ('M' dla mężczyzny, 'F' dla kobiety, 'X' dla nieokreślonej)
22-27Data ważnościData ważności w formacie RRRRMMDD
28Cyfra kontrolna (Data ważności)Cyfra kontrolna dla daty ważności
29-42Numer osobistyOpcjonalny numer osobisty (zwykle numer identyfikacyjny)
43Cyfra kontrolna (Numer osobisty)Cyfra kontrolna dla numeru osobistego
44Cyfra kontrolna (Łączna)Ogólna cyfra kontrolna

Jak Mogę Debugować i Weryfikować Wyniki Odczytu Paszportu?

Możemy również zweryfikować wyniki z IronOCR uzyskując surowy wyodrębniony tekst z obrazu paszportu oraz poziom zaufania, aby potwierdzić, czy wyodrębnione informacje są dokładne. Używając przykładu powyżej, możemy uzyskać dostęp do właściwości Confidence i Text obiektu OcrPassportResult.

Dla celów debugowania, można wyróżnić regiony tekstu, aby wizualnie zweryfikować, które obszary zostały rozpoznane. Ta funkcja jest szczególnie użyteczna podczas rozwiązywania problemów z wyodrębnianiem lub optymalizowania obszarów skanowania.

: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)
$vbLabelText   $csharpLabel

Konsola debugowania VS Code pokazująca dane paszportowe z danymi osobowymi, krajami i zaszyfrowanymi ciągami

  • Confidence: Właściwość Confidence z OcrPassportResult to zmienna typu float, wskazująca statystyczną pewność dokładności OCR jako średnią z każdego znaku. Ta wartość zmiennej typu float jest niższa, jeśli obraz paszportu jest rozmyty lub zawiera inne informacje. Jeden to najwyższy i najbardziej pewny wynik, a zero to najniższy i najmniej pewny. Dla aplikacji produkcyjnych rozważ wdrożenie progów zaufania do wyników, aby zapewnić jakość danych.
  • Text: Właściwość Text z OcrPassportResult zawiera surowy, nieprzetworzony tekst wyodrębniony z obrazu paszportu. Deweloperzy mogą tego używać w testach jednostkowych, aby zweryfikować wyodrębniony tekst z obrazu paszportu. Dla zaawansowanych scenariuszy można eksportować wyniki w formacie hOCR do dalszej analizy.

Najlepsze Praktyki dla Aplikacji do Skanowania Paszportów

Podczas wdrażania skanowania paszportów w środowiskach produkcyjnych, rozważ te dodatkowe czynniki:

  1. Jakość Obrazu: Upewnij się, że obrazy wejściowe spełniają minimalne standardy jakości. Kreator Filtrów może pomóc optymalizować obrazy dla lepszego rozpoznawania.

  2. Wydajność: Dla przetwarzania masowego, wdroż obsługę asynchroniczną i rozważ przetwarzanie wsadowe wielu paszportów.

  3. Bezpieczeństwo: Ponieważ dane paszportowe są wrażliwe, zapewnij właściwe zarządzanie danymi i rozważ integrację z systemami zarządzania dokumentami.

  4. Walidacja: Wprowadź walidację cyfr kontrolnych dla wyodrębnionych danych MRZ, aby zapewnić dokładność. Format MRZ zawiera wiele cyfr kontrolnych, które można wykorzystać do weryfikacji integralności wyodrębnionych informacji.

  5. Obsługa Błędów: Wprowadź solidną obsługę błędów w przypadkach, gdy obrazy paszportów mogą być uszkodzone, źle oświetlone lub zawierać niestandardowe formaty.

Często Zadawane Pytania

Jak wydobyć dane paszportowe z obrazów w C#?

Możesz wydobyć dane paszportowe używając metody ReadPassport IronOCR. Po prostu załaduj obraz paszportu za pomocą OcrInput i wywołaj ReadPassport(), aby uzyskać uporządkowane dane, w tym imiona, numery paszportów, daty urodzenia i daty ważności w jednej linii kodu.

Jakie informacje paszportowe mogą być automatycznie wydobyte?

Metoda ReadPassport IronOCR wydobywa GivenNames, Country, PassportNumber, Surname, DateOfBirth i DateOfExpiry z obrazów paszportów. Wszystkie dane są zwracane jako ciągi znaków w uporządkowanym obiekcie PassportInfo.

Czy potrzebuję skomplikowanej konfiguracji do odczytu danych MRZ paszportu?

Nie jest wymagana skomplikowana konfiguracja. IronOCR oferuje uproszczone API, które wydobywa dane MRZ paszportu w jednej linii kodu, w przeciwieństwie do tradycyjnych implementacji Tesseract wymagających większej konfiguracji.

Jaka technologia napędza możliwością odczytu paszportów?

IronOCR wykorzystuje Tesseract 5 wewnętrznie z ulepszeniami uczenia maszynowego i zaawansowanymi technikami wizji komputerowej do automatycznego lokalizowania i wydobywania strefy MRZ (Machine Readable Zone) z obrazów paszportów.

Czy to może być używane w systemach imigracyjnych na lotniskach?

Tak, IronOCR jest idealny do aplikacji imigracyjnych i zabezpieczeń na lotniskach, gdzie agenci codziennie obsługują dużą ilość paszportów. Zapewnia niezawodne wydobycie kluczowych informacji o podróżnych, aby zapewnić sprawność procesów imigracyjnych.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Sprawdzone przez
Jeff Fritz
Jeffrey T. Fritz
Główny Menedżer Programu - Zespół .NET Community
Jeff jest również Głównym Menedżerem Programu dla zespołów .NET i Visual Studio. Jest producentem wykonawczym wirtualnej serii konferencji .NET Conf i prowadzi 'Fritz and Friends', transmisję na żywo dla deweloperów emitowaną dwa razy w tygodniu, gdzie rozmawia o technologii i pisze kod razem z widzami. Jeff pisze warsztaty, prezentacje i planuje treści dla największych wydarzeń Microsoft dla deweloperów, w tym Microsoft Build, Microsoft Ignite, .NET Conf i Microsoft MVP Summit.
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 5,571,678 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronOcr
uruchom próbkę obserwuj, jak twój obraz staje się tekstem z możliwością wyszukiwania.