Extraire les données d'un passeport en C# avec IronOCR

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é et d'immigration dans les aéroports, où les agents doivent traiter quotidiennement un grand nombre de passeports, disposer d'un système fiable qui extrait avec précision les informations essentielles et critiques concernant le voyageur est crucial pour garantir un processus d'immigration efficace et rationalisé.

Démarrage rapide : Extraire les informations MRZ du passeport en une seule ligne

Commencez à lire les passeports en quelques secondes : cet exemple montre à quel point il est facile de charger une image de passeport à l'aide OcrInput , d'utiliser ReadPassport() pour extraire les données, puis d'accéder aux champs structurés tels que les noms, le numéro et les dates à partir de PassportInfo renvoyé. Aucune installation complexe, juste une ligne simple.

Nuget IconCommencez dès maintenant à créer des PDF avec NuGet :

  1. Installez IronOCR avec le gestionnaire de packages NuGet

    PM > Install-Package IronOcr

  2. Copiez et exécutez cet extrait de code.

    var passportInfo = new IronOcr.IronTesseract().ReadPassport(new IronOcr.OcrInput("passport.jpg")).PassportInfo;
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronOCR dans votre projet dès aujourd'hui grâce à un essai gratuit.
    arrow pointer

Exemple d'extraction de données de passeport

À titre d'exemple, nous utiliserons une image de passeport comme donnée d'entrée pour illustrer les fonctionnalités d'IronOCR. Après avoir chargé l'image à l'aide OcrInput , vous pouvez utiliser la méthode ReadPassport pour identifier et extraire les 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.

Veuillez noter

  • Cette méthode ne fonctionne actuellement que pour les passeports rédigés en anglais.
  • L'utilisation de l'analyse avancée sur .NET Framework nécessite que le projet s'exécute sur une architecture x64.
  • Pour les utilisateurs de Mac, veuillez noter que la méthode ReadPassport ne fait actuellement pas pivoter automatiquement l'entrée. Lors de l'utilisation de cette entrée, veuillez vous assurer que le fichier MRZ se trouve toujours en bas du fichier ; sinon, le processus échouera.

Entrée du passeport

Exemple d'image

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

Résultat de sortie

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

  • GivenNames : Une propriété de PassportInfo renvoie les prénoms du passeport saisi sous forme de chaîne de caractères. Cela correspond à la première ligne de données MRZ, avec des positions de 4 à 44.
  • Country : 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 2 à 3. La chaîne renvoyée indiquerait le nom complet du pays émetteur au lieu de l'abréviation. Dans notre exemple, les États-Unis renvoient " États-Unis d'Amérique ".
  • PassportNumber : Une propriété de PassportInfo renvoie le numéro de passeport du passeport saisi sous forme de chaîne de caractères. Cela correspond à la deuxième ligne de données MRZ, avec des positions de 1 à 9.
  • Surname : Une propriété de PassportInfo renvoie le nom de famille de l'entrée du passeport sous forme de chaîne de caractères. Cela correspond à la première ligne de données MRZ, avec des positions de 4 à 44.
  • DateOfBirth : Une propriété de PassportInfo renvoie la date de naissance du passeport saisi sous forme de chaîne de caractères au format AAAA-MM-JJ. Cela correspond à la deuxième ligne de données MRZ, avec les positions 14 à 19.
  • DateOfExpiry : Une propriété membre de PassportInfo renvoie la date d'expiration du passeport saisi sous forme de chaîne de caractères au format AAAA-MM-JJ. Cela correspond à la deuxième ligne de données MRZ, avec les positions 22 à 27.

Comprendre les informations sur la MRZ

IronOCR lit les informations MRZ qui figurent sur les deux dernières lignes de tout passeport conforme aux normes de l' OACI (Organisation de l'aviation civile internationale). 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 des informations correspondant à l'index de la ligne.

Exemple d'entrée

emplacement MRZ

Première rangée

Poste à pourvoir Champ Description du projet
1Type de documentGénéralement, " P " pour passeport
2-3Pays émetteurCode pays à trois lettres (ISO 3166-1 alpha-3)
4-44Nom et prénomNom de famille suivi de '<<' puis prénoms séparés par '<'

Deuxième rangée

Poste à pourvoir Champ Description du projet
1-9Numéro de passeportnuméro de passeport unique
10Chiffre de contrôle (numéro de passeport)Chiffre de contrôle du numéro de passeport
11-13NationalitéCode de nationalité à trois lettres (ISO 3166-1 alpha-3)
14-19Date de naissanceDate de naissance au format AAMMJJ
20Chiffre de contrôle (Date de naissance)Chiffre de contrôle de la date de naissance
21SexeGenre (" M " pour masculin, " F " pour féminin, " X " pour non spécifié)
22-27Date d'expirationDate d'expiration au format AAMMJJ
28Chiffre de contrôle (date d'expiration)Chiffre de contrôle de la date d'expiration
29-42Numéro personnelNuméro personnel facultatif (généralement numéro d'identification national)
43Chiffre de contrôle (numéro personnel)Chiffre de contrôle du numéro personnel
44Chiffre de contrôle (composite)chiffre de contrôle global

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 afin de 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 de la console

  • Confidence : La propriété Confidence de OcrPassportResult est un nombre flottant indiquant la confiance dans la précision statistique de l'OCR sous forme de moyenne pour chaque caractère. Ce montant serait inférieur si la photo du passeport était floue ou contenait d'autres informations. Un représente le niveau le plus élevé et le plus de confiance, et 0 le niveau le plus bas et le moins de confiance.
  • Text : La propriété Text de OcrPassportResult contient le texte brut, non analysé, extrait de l'image du passeport. Les développeurs pourraient utiliser cela dans les tests unitaires pour vérifier le texte extrait de l'image du passeport.

Questions Fréquemment Posées

Comment puis-je extraire les données de passeport en utilisant OCR en C# ?

Vous pouvez utiliser la méthode ReadPassport de IronOCR pour extraire les données de passeport en C#. Tout d'abord, installez la bibliothèque IronOCR et le paquet IronOcr.Extension.AdvancedScan. Importez l'image du passeport, puis appelez ReadPassport pour récupérer les données.

Quelles informations peuvent être extraites d'un passeport avec IronOCR ?

IronOCR peut extraire des détails tels que les prénoms, le pays, le numéro de passeport, le nom de famille, la date de naissance et la date d'expiration d'un passeport.

Qu'est-ce que la zone lisible par machine (MRZ) sur un passeport ?

La MRZ est située sur les deux lignes inférieures d'un passeport et contient des données cruciales. IronOCR lit cette zone pour extraire des informations selon les normes de l'OACI.

Quelles sont les exigences pour utiliser la méthode ReadPassport dans IronOCR ?

Vous devez installer le paquet IronOcr.Extension.AdvancedScan et vous assurer que votre projet fonctionne sur une architecture x64 pour des capacités de numérisation avancées.

IronOCR peut-il être utilisé pour vérifier l'exactitude des données de passeport extraites ?

Oui, vous pouvez vérifier l'exactitude des données extraites en utilisant la propriété Confidence de l'objet OcrPassportResult, où une valeur proche de 1 indique une haute confiance.

Quelles langues sont prises en charge par IronOCR pour l'extraction de données de passeport ?

Actuellement, IronOCR prend en charge les passeports basés sur l'anglais pour l'extraction de données.

Comment IronOCR gère-t-il le texte extrait d'un passeport ?

Les données extraites sont stockées dans l'objet OcrPassportResult, chaque membre étant représenté comme une chaîne pour un accès et une manipulation faciles.

Quelle est l'utilisation de la propriété 'Text' dans l'objet OcrPassportResult ?

La propriété 'Text' vous permet d'accéder et de vérifier le texte extrait d'un passeport, garantissant que l'information est précise et complète.

Que dois-je faire si l'image du passeport inclut des en-têtes ou des pieds de page ?

Assurez-vous que l'image du passeport est dépourvue d'en-têtes ou de pieds de page avant d'utiliser IronOCR, car ceux-ci peuvent interférer avec l'exactitude du processus d'extraction des données.

Quels sont les conseils de dépannage courants lors de l'utilisation d'IronOCR pour les passeports ?

Vérifiez que les bons paquets sont installés, assurez-vous que l'image est claire et correctement recadrée, et vérifiez la compatibilité de l'architecture (x64) pour des performances optimales.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de 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 ...

Lire la suite
Revu par
Jeff Fritz
Jeffrey T. Fritz
Responsable principal du programme - Équipe de la communauté .NET
Jeff est également responsable principal du programme pour les équipes .NET et Visual Studio. Il est le producteur exécutif de la série de conférences virtuelles .NET Conf et anime 'Fritz and Friends', une diffusion en direct pour développeurs qui est diffusée deux fois par semaine où il parle de technologie et écrit du code avec les téléspectateurs. Jeff écrit des ateliers, des présentations et prévoit du contenu pour les plus grands événements de développement Microsoft, y compris Microsoft Build, Microsoft Ignite, .NET Conf et le sommet Microsoft MVP
Prêt à commencer?
Nuget Téléchargements 5,167,857 | Version: 2025.11 vient de sortir