Comment extraire les données de passeport avec IronOCR

Curtis Chau
Curtis Chau
août 7, 2024
Mise à jour février 16, 2025
Partager:
This article was translated from English: Does it need improvement?
Translated
View the article in English

Dans les applications et systèmes tels que l'enregistrement au comptoir et le contrôle de sécurité dans les aéroports, où les agents doivent gérer un grand volume de passeports quotidiennement, disposer d'un système fiable qui extrait avec précision les informations essentielles et cruciales concernant le voyageur est crucial pour garantir un processus efficace et rationalisé à travers l'immigration.

IronOCR est un outil fiable qui rend l'extraction et la lecture de données d'un passeport sans effort. Le processus devient simple avec un simple appel à la méthode ReadPassport.

Commencez à utiliser IronOCR dans votre projet dès aujourd'hui avec un essai gratuit.

Première étape :
green arrow pointer

Pour utiliser cette fonction, vous devez également installer le package IronOcr.Extension.AdvancedScan.

Exemple d'extraction de données de passeport

À titre d'exemple, nous utiliserons une image de passeport comme entrée pour démontrer la fonctionnalité d'IronOCR. Après avoir chargé l'image en utilisant OcrInput, vous pouvez utiliser la méthode ReadPassport pour identifier et extraire des informations du passeport. Cette méthode renvoie un objet OcrPassportResult, qui contient des propriétés telles que GivenNames, Country, PassportNumber, Surname, DateOfBirth, et DateOfExpiry. Tous les membres de l'objet PassportInfo sont des chaînes de caractères.

A noter

  • La méthode fonctionne actuellement uniquement pour les passeports basés sur l'anglais.
  • L'utilisation de l'analyse avancée sur le Framework .NET nécessite que le projet soit exécuté sur une architecture x64.

Entrée de passeport

Image de'exemple

Code

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

Sortie

Sortie de résultat

Nous accédons ensuite au membre de données PassportInfo obtenu à partir de l'objet OcrPassportResult.

  • GivenNames : Une propriété de PassportInfo retourne les prénoms du passeport saisi sous forme de chaîne de caractères. Ceci correspond à la première ligne de données MRZ avec les positions de 4 à 44.
  • Pays : Une propriété de PassportInfo renvoie le pays du passeport saisi sous forme de chaîne de caractères. Cela correspond à la première ligne de données MRZ avec les positions de 2 à 3. La chaîne retournée indiquerait le nom complet du pays émetteur au lieu de l'abréviation. Dans notre exemple, les USA reviennent aux États-Unis d'Amérique.
  • PassportNumber : Une propriété de PassportInfo renvoie les prénoms de l'entrée du passeport sous forme de chaîne. Cela correspond à la deuxième ligne de données MRZ, avec des positions allant de 1 à 9.
  • Nom de famille : Une propriété de PassportInfo renvoie le nom de famille de l'entrée du passeport sous forme de chaîne. Ceci correspond à la première ligne de données MRZ avec les positions de 4 à 44.
  • DateOfBirth : Une propriété de PassportInfo renvoie la date de naissance de l'entrée du passeport sous forme de chaîne dans le format AAAA-MM-JJ. Cela correspond à la deuxième ligne de données MRZ avec les positions de 14 à 19.
  • DateOfExpiry : Un membre de propriété de PassportInfo retourne la date d'expiration du passeport en entrée sous forme de chaîne au format YYYY-MM-DD. Ceci correspond à la deuxième ligne de données MRZ avec les positions 22 à 27.

Comprendre les informations MRZ

IronOCR lit les informations MRZ qui sont contenues dans les deux lignes inférieures de tout passeport conforme à la norme de l'Organisation de l'aviation civile internationale (OACI). Les données MRZ se composent de deux lignes de données, chaque ensemble de positions contenant des informations uniques. Voici un tableau récapitulatif indiquant quelle information correspond à l'indice de la ligne ; pour toutes les exceptions et identifiants uniques, veuillez vous référer aux normes de documentation de l'OACI.

Exemple d'entrée :

Emplacement MRZ

Première Ligne

Position Field Description
1Document TypeTypically 'P' for passport
2-3Issuing CountryThree-letter country code (ISO 3166-1 alpha-3)
4-44Surname and Given NamesSurname followed by '<<' and then given names separated by '<'

Deuxième ligne

Position Field Description
1-9Passport NumberUnique passport number
10Check Digit (Passport Number)Check digit for the passport number
11-13NationalityThree-letter nationality code (ISO 3166-1 alpha-3)
14-19Date of BirthDate of birth in YYMMDD format
20Check Digit (Date of Birth)Check digit for the date of birth
21SexGender ('M' for male, 'F' for female, 'X' for unspecified)
22-27Date of ExpiryExpiry date in YYMMDD format
28Check Digit (Date of Expiry)Check digit for the date of expiry
29-42Personal NumberOptional personal number (usually national ID number)
43Check Digit (Personal Number)Check digit for the personal number
44Check Digit (Composite)Overall check digit

Débogage

Nous pourrions également vérifier les résultats d'IronOCR en obtenant le texte brut extrait de l'image du passeport et le niveau de confiance pour confirmer si les informations extraites sont exactes. En utilisant l'exemple ci-dessus, nous pouvons accéder aux propriétés Confidence et Text de l'objet OcrPassportResult.

: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

Sortie console :

Déboguer
  • Confiance : La propriété Confidence de OcrPassportResult est un flottant indiquant la confiance statistique de précision de l'OCR comme une moyenne de chaque caractère. Ce montant serait inférieur si l'image du passeport est floue ou contient d'autres informations. Où 1 représente le niveau le plus élevé et le plus sûr, et 0 le niveau le plus bas et le moins sûr.
  • Texte : La propriété Text de OcrPassportResult contient le texte brut non analysé extrait de l'image du passeport. Les développeurs pourraient utiliser ceci dans les tests unitaires pour vérifier le texte extrait de l'image du passeport.
Curtis Chau
Auteur Technique

Curtis Chau est titulaire d'un diplôme de baccalauréat en informatique (Université Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.

Au-delà du développement, Curtis a un fort intérêt pour l'Internet des objets (IoT), explorant des moyens innovants d'intégrer matériel et logiciel. Pendant son temps libre, il aime jouer aux jeux vidéo et créer des bots Discord, combinant son amour pour la technologie avec la créativité.