Wyodrębnianie danych paszportowych w języku C# za pomocą IronOCR
Metoda ReadPassport firmy IronOCR pozwala na wyodrębnianie ustrukturyzowanych danych z obrazów paszportów, w tym imion i nazwisk, numerów paszportów, dat urodzenia oraz dat ważności, za pomocą jednej linii kodu C#, co czyni ją idealnym rozwiązaniem dla aplikacji imigracyjnych i związanych z 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 za pomocą OcrInput, użyć ReadPassport() do wyodrębnienia danych oraz uzyskać dostęp do pól strukturalnych, takich jak imiona i nazwiska, numery i daty, z zwróconego PassportInfo. Nie wymaga skomplikówanej 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ębnienia 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, Narodowość, NarodowośćCode, IssuingCountryCode, PersonalNumber oraz DateOfIssue.
Metoda ReadPassport jest częścią specjalistycznych funkcji odczytu dokumentów IronOCR, które obejmują również metody odczytu tablic rejestracyjnych, czeków MICR i innych dokumentów strukturalnych. 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.
- Użytkownicy komputerów Mac powinni pamiętać, że metoda
ReadPassportobecnie nie obraca automatycznie wprowadzanych danych. 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 kompleksowy dostęp do wszystkich wyodrębnionych informacji.
Następnie uzyskujemy dostęp do elementu 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 nazwy z paszportu wejściowego jako ciąg znaków. Odpowiada to pierwszemu wierszowi danych MRZ, pozycje od 4 do 44.Country: WłaściwośćPassportInfozwraca kraj paszportu wprowadzonego 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 z wprowadzonych danych w postaci ciągu znaków. Odpowiada to drugiemu wierszowi danych MRZ, pozycje od 1 do 9.Surname: WłaściwośćPassportInfozwraca nazwisko z pola paszportowego jako ciąg znaków. Odpowiada to pierwszemu wierszowi danych MRZ, pozycje od 4 do 44.DateOfBirth: WłaściwośćPassportInfozwraca datę urodzenia z pola paszportowego jako ciąg znaków w formacie RRRR-MM-DD. Odpowiada to drugiemu wierszowi danych MRZ, pozycje od 14 do 19.DateOfExpiry: WłaściwośćPassportInfozwraca datę ważności 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 21 MRZ jakoGender.Male,Gender.FemalelubGender.Unspecified.DocumentType: Zwraca typ dokumentu z pozycji 1-2 MRZ, np. "P" dla paszportu, "PS" dla dokumentu służbowego lub "PD" dla dokumentu dyplomatycznego.Narodowość: Zwraca pełną angielską nazwę kraju wyprowadzoną z pozycji 11–13 strefy MRZ.NarodowośćCode: Zwraca surowy kod ISO 3166-1 alpha-3 z pozycji 11-13 strefy MRZ.IssuingCountryCode: Zwraca surowy kod ISO 3166-1 alpha-3 dla państwa wydającego z pozycji 3-5 strefy MRZ.PersonalNumber: Zwraca opcjonalny numer identyfikacyjny z pozycji 29–42 strefy MRZ.DateOfIssue: Zwraca datę wydania pobraną ze strefy kontroli wizualnej (VIZ) poprzez dopasowanie etykiet w 27 językach z zachowaniem zasad najlepszego wysiłku.
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. Korzystając z powyższego przykładu, 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śćConfidencezOcrPassportResultjest wartością typu float wskazującą statystyczną dokładność OCR jako średnią dla 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.
Czy IronOCR obsługuje wiele języków?
IronOCR obsługuje wiele języków, co czyni go wszechstronnym narzędziem dla globalnych aplikacji wymagających rozpoznawania tekstu w różnych językach.
Czy IronOCR można zintegrować z istniejącymi aplikacjami?
IronOCR jest zaprojektowany do łatwej integracji z istniejącymi aplikacjami używając C#, co pozwala programistom dodać funkcjonalność OCR do swojego oprogramowania z minimalnym wysiłkiem.
Jakie są korzyści z używania IronOCR do zarządzania dokumentami?
Używanie IronOCR do zarządzania dokumentami upraszcza przepływ pracy przez konwertowanie zeskanowanych dokumentów na przeszukiwalny i edytowalny tekst, redukując konieczność ręcznego wprowadzania danych i poprawiając dostępność dokumentów.
Jak IronOCR może poprawić dokładność danych?
IronOCR poprawia dokładność danych dzięki swoim zaawansowanym algorytmom rozpoznawania i funkcjom korekcji obrazów, zapewniając, że proces ekstrakcji tekstu jest zarówno niezawodny, jak i precyzyjny.
Czy dostępna jest bezpłatna wersja próbna IronOCR?
Tak, Iron Software oferuje bezpłatną wersję próbną IronOCR, umożliwiając użytkownikom przetestowanie jego funkcji i możliwości przed podjęciem decyzji o zakupie.

