Wyodrębnianie danych paszportowych w języku C# za pomocą IronOCR
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.
-
Install IronOCR with NuGet Package Manager
PM > Install-Package IronOcr -
Skopiuj i uruchom ten fragment kodu.
var passportInfo = new IronOcr.IronTesseract().ReadPassport(new IronOcr.OcrInput("passport.jpg")).PassportInfo; -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną
Minimalny proces (5 kroków)
- Pobierz bibliotekę C# do odczytu paszportów
- Załaduj zdjęcie paszportowe do odczytu
- Upewnij się, że dokument zawiera wyłącznie obraz paszportowy, bez nagłówków i stopek
- Użyj metody
ReadPassportdo wyodrębnienia danych z obrazu - Uzyskaj dostęp do właściwości OcrPassportResult, aby wyświetlić i dalej przetwarzać wyodrębnione dane paszportowe
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).
- 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
ReadPassportobecnie 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.
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
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.
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śćPassportInfozwraca podane imiona z paszportu jako ciąg znaków. To odpowiada pierwszemu wierszowi danych MRZ, pozycje 4 do 44.Country: WłaściwośćPassportInfozwraca 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śćPassportInfozwraca numer paszportu jako ciąg znaków. To odpowiada drugiemu wierszowi danych MRZ, pozycje 1 do 9.Surname: WłaściwośćPassportInfozwraca nazwisko z paszportu jako ciąg znaków. To odpowiada pierwszemu wierszowi danych MRZ, pozycje 4 do 44.DateOfBirth: WłaściwośćPassportInfozwraca 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śćPassportInfozwraca 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 jakoGender.Male,Gender.FemalelubGender.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.
Pierwsza linia
| Pozycja | Pole | Opis |
|---|---|---|
| 1 | Typ dokumentu | Zwykle 'P' dla paszportu |
| 2-3 | Kraj wydania | Trzyliterowy kod kraju (ISO 3166-1 alfa-3) |
| 4-44 | Nazwisko i Imiona | Nazwisko, następnie '<<' i imiona oddzielone '<' |
Druga linia
| Pozycja | Pole | Opis |
|---|---|---|
| 1-9 | Numer paszportu | Unikalny numer paszportu |
| 10 | Cyfra kontrolna (Numer paszportu) | Cyfra kontrolna dla numeru paszportu |
| 11-13 | Narodowość | Trzyliterowy kod narodowości (ISO 3166-1 alfa-3) |
| 14-19 | Data urodzenia | Data urodzenia w formacie RRRRMMDD |
| 20 | Cyfra kontrolna (Data urodzenia) | Cyfra kontrolna dla daty urodzenia |
| 21 | Płeć | Płeć ('M' dla mężczyzny, 'F' dla kobiety, 'X' dla nieokreślonej) |
| 22-27 | Data ważności | Data ważności w formacie RRRRMMDD |
| 28 | Cyfra kontrolna (Data ważności) | Cyfra kontrolna dla daty ważności |
| 29-42 | Numer osobisty | Opcjonalny numer osobisty (zwykle numer identyfikacyjny) |
| 43 | Cyfra kontrolna (Numer osobisty) | Cyfra kontrolna dla numeru osobistego |
| 44 | Cyfra 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)

Confidence: WłaściwośćConfidencezOcrPassportResultto 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śćTextzOcrPassportResultzawiera 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:
-
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.
-
Wydajność: Dla przetwarzania masowego, wdroż obsługę asynchroniczną i rozważ przetwarzanie wsadowe wielu paszportów.
-
Bezpieczeństwo: Ponieważ dane paszportowe są wrażliwe, zapewnij właściwe zarządzanie danymi i rozważ integrację z systemami zarządzania dokumentami.
-
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.
- 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.

