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

La méthode ReadPassport d'IronOCR extrait les données structurées des images de passeport, notamment les noms, numéros de passeport, dates de naissance et dates d'expiration, en une seule ligne de code C#, ce qui la rend idéale pour les applications d'immigration et de sécurité.

Dans les applications et les systèmes tels que les comptoirs d'enregistrement et les contrôles de sécurité dans les aéroports, où les agents traitent quotidiennement d'importants volumes de passeports, il est essentiel de disposer d'un système fiable qui extrait avec précision les informations essentielles sur les voyageurs afin de garantir un processus d'immigration efficace et rationalisé. La bibliothèque IronOCR offre des fonctionnalités OCR avancées spécifiquement optimisées pour la lecture de passeports, exploitant Tesseract 5 sous le capot avec des améliorations en matière d'apprentissage automatique.

Guide de démarrage rapide : extraire les informations MRZ d'un passeport en une seule ligne

Cet exemple montre comment charger une image de passeport à l'aide de OcrInput, utiliser ReadPassport() pour extraire des données et accéder à des champs structurés tels que les noms, les numéros et les dates à partir du PassportInfo renvoyé. Aucune configuration complexe n'est requise, il suffit d'une ligne directe. Contrairement aux mises en œuvre traditionnelles de Tesseract, IronOCR fournit une API simplifiée spécialement conçue pour l'extraction de documents.

  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 avec un essai gratuit

    arrow pointer

Comment extraire les données d'un passeport en C#?

À 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 de 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, DateOfExpiry, Gender, DocumentType, Nationalité, NationalitéCode, IssuingCountryCode, PersonalNumber, et DateOfIssue.

La méthode ReadPassport fait partie des capacités spécialisées de lecture de documents d'IronOCR, qui comprennent également des méthodes de lecture de plaques d'immatriculation, de chèques MICR et d'autres documents structurés. La méthode utilise des techniques avancées de vision artificielle pour localiser et extraire automatiquement la zone MRZ (Machine Readable Zone).

Veuillez noter

  • La méthode ne fonctionne actuellement que pour les passeports 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.
    )}]

Quel format d'image de passeport dois-je utiliser ?

IronOcr prend en charge divers formats d'image , notamment JPG, PNG, TIFF et BMP. Pour des résultats optimaux, veillez à ce que votre image de passeport ait une résolution adéquate (au moins 300 DPI) et un éclairage approprié. Les paramètres DPI peuvent être ajustés si vous travaillez avec des scans de moindre qualité.

Exemple de page de données de passeport américain montrant les champs biographiques, les dates et la zone lisible par machine pour la démonstration d'extraction de données

De quel code ai-je besoin pour extraire les données d'un passeport?

L'exemple suivant illustre le processus complet d'extraction des données d'un passeport. Pour les applications traitant plusieurs passeports, envisagez de mettre en œuvre la prise en charge du multithreading pour améliorer les performances. Vous pouvez également suivre la progression de l'OCR pour les opérations de longue durée.

: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

Quel résultat puis-je attendre de ReadPassport?

Les données extraites sont renvoyées dans un format structuré qui facilite leur intégration dans les systèmes existants. La classe OcrResult fournit un accès complet à toutes les informations extraites.

Console de débogage montrant les données de passeport extraites : nom, pays, numéro de passeport et dates du traitement OCR

Nous accédons ensuite au membre de données PassportInfo obtenu à partir de l'objet OcrPassportResult. Le processus d'extraction gère automatiquement les différents formats et mises en page des passeports, ce qui permet d'obtenir des résultats cohérents dans les différents pays d'émission.

  • GivenNames : Une propriété de PassportInfo renvoie les noms fournis dans le champ " Passeport " sous forme de chaîne de caractères. Cela correspond à la première ligne de données MRZ, positions 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, positions 2 à 3. La chaîne renvoyée indique le nom complet du pays émetteur au lieu de l'abréviation. Dans notre exemple, USA signifie "États-Unis d'Amérique".
  • PassportNumber : Une propriété de PassportInfo renvoie le numéro du passeport saisi sous forme de chaîne de caractères. Cela correspond à la deuxième ligne de données MRZ, positions 1 à 9.
  • Surname : Une propriété de PassportInfo renvoie le nom de famille de l'entrée " passport " sous forme de chaîne de caractères. Cela correspond à la première ligne de données MRZ, positions 4 à 44.
  • DateOfBirth : Une propriété de PassportInfo renvoie la date de naissance de l'entrée " passport " sous forme de chaîne au format AAAA-MM-JJ. Cela correspond à la deuxième ligne de données MRZ, positions 14 à 19.
  • DateOfExpiry : Un membre de propriété de PassportInfo renvoie la date d'expiration de l'entrée " passport " sous forme de chaîne au format AAAA-MM-JJ. Cela correspond à la deuxième ligne de données MRZ, positions 22 à 27.
  • Gender : Renvoie le sexe à partir de la position 21 de la MRZ sous la forme Gender.Male, Gender.Female ou Gender.Unspecified.
  • DocumentType : Renvoie le type de document à partir des positions 1 à 2 de la MRZ, par exemple " P " pour passeport, " PS " pour service ou " PD " pour diplomatique.
  • Nationalité : Renvoie le nom complet du pays en anglais dérivé des positions 11 à 13 de la zone MRZ.
  • NationalitéCode : Renvoie le code ISO 3166-1 alpha-3 brut à partir des positions 11 à 13 de la MRZ.
  • IssuingCountryCode : Renvoie le code ISO 3166-1 alpha-3 brut correspondant à l'État émetteur, à partir des positions 3 à 5 de la zone MRZ.
  • PersonalNumber : Renvoie le numéro d'identification national facultatif à partir des positions 29 à 42 de la zone MRZ.
  • DateOfIssue : Renvoie la date d'émission extraite de la zone d'inspection visuelle (VIZ) via une correspondance de balises au mieux dans 27 langues.

Quelles sont les informations MRZ que je peux extraire des passeports ?

IronOCR lit les informations MRZ contenues dans les deux rangées inférieures de tout passeport qui suit la norme de l'(Organisation de l'aviation civile internationale) ICAO. Les données MRZ se composent de deux lignes de données, chaque ensemble de positions contenant des informations uniques. Voici un bref tableau indiquant les informations correspondant à l'index de la ligne.

La fonctionnalité d'analyse MRZ d'IronOcr est conçue pour gérer les variations de la qualité d'impression et l'orientation de l'image. Pour les documents difficiles, vous pouvez appliquer des filtres de correction d'image pour améliorer la précision de la reconnaissance.

À quoi ressemble la section MRZ?

La MRZ se trouve généralement au bas de la page du passeport et consiste en deux lignes de texte normalisé. La compréhension de la structure MRZ permet de résoudre les problèmes d'extraction et de valider les résultats.

Page de passeport américain avec la zone de lecture automatique (MRZ) surlignée en rouge montrant les lignes de données alphanumériques codées

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

Comment déboguer et vérifier les résultats de l'extraction de passeports?

Nous pouvons é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 reprenant l'exemple ci-dessus, nous pouvons accéder aux propriétés Confidence et Text de l'objet OcrPassportResult.

À des fins de débogage, vous pourriez vouloir mettre en évidence des zones de texte pour vérifier visuellement quelles zones ont été reconnues. Cette fonctionnalité est particulièrement utile pour résoudre les problèmes d'extraction ou optimiser les zones de balayage.

: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

Console de débogage VS Code affichant les données de passeport avec les informations personnelles, les pays et les chaînes codées

  • Confidence : La propriété Confidence de OcrPassportResult est un nombre à virgule flottante indiquant le niveau de confiance de la précision statistique de l'OCR, calculé comme la moyenne de chaque caractère. Cette marge est plus faible si l'image du passeport est floue ou contient d'autres informations. Le chiffre un correspond à la valeur la plus élevée et la plus sûre, et le chiffre zéro à la valeur la plus basse et la moins sûre. Pour les applications de production, envisagez de mettre en place des seuils de confiance des résultats pour garantir la qualité des données.
  • Text : La propriété Text de OcrPassportResult contient le texte brut, non analysé, extrait de l'image du passeport. Les développeurs peuvent l'utiliser dans des tests unitaires pour vérifier le texte extrait de l'image du passeport. Pour les scénarios avancés, vous pouvez exporter les résultats au format hOCR pour une analyse plus approfondie.

Bonnes pratiques pour les applications de numérisation de passeports

Lors de la mise en œuvre de la numérisation des passeports dans des environnements de production, il convient de tenir compte de ces facteurs supplémentaires :

  1. Qualité des images : veillez à ce que les images d'entrée répondent à des normes de qualité minimales. L'Assistant de filtrage peut aider à optimiser les images pour une meilleure reconnaissance.

  2. Performance : Pour le traitement de gros volumes, mettez en œuvre la prise en charge async et envisagez le traitement par lots de plusieurs passeports.

  3. Sécurité : les données des passeports étant sensibles, il convient de veiller au traitement adéquat des données et d'envisager l'intégration avec des systèmes de gestion de documents sécurisés.

  4. Validation : mettre en œuvre la validation des chiffres de contrôle pour les données MRZ extraites afin d'en garantir l'exactitude. Le format MRZ comprend plusieurs chiffres de contrôle qui peuvent être utilisés pour vérifier l'intégrité des informations extraites.

  5. Gestion des erreurs : mettre en œuvre une gestion robuste des erreurs pour les cas où les images de passeport peuvent être endommagées, mal éclairées ou contenir des formats non standard.

Questions Fréquemment Posées

Comment extraire des données de passeport à partir d'images en C# ?

Vous pouvez extraire des données de passeport à l'aide de la méthode ReadPassport d'IronOCR. Il suffit de charger votre image de passeport avec OcrInput et d'appeler ReadPassport() pour obtenir des données structurées, notamment les noms, les numéros de passeport, les dates de naissance et les dates d'expiration, en une seule ligne de code.

Quelles informations relatives aux passeports peuvent être extraites automatiquement ?

La méthode ReadPassport d'IronOcr extrait les prénoms, le pays, le numéro de passeport, le nom de famille, la date de naissance et la date d'expiration des images de passeport. Toutes les données sont renvoyées sous forme de chaînes dans un objet structuré PassportInfo.

Ai-je besoin d'une configuration complexe pour lire les données des passeports MRZ ?

Aucune configuration complexe n'est nécessaire. IronOcr fournit une API simplifiée qui extrait les données MRZ des passeports en une seule ligne de code, contrairement aux implémentations traditionnelles de Tesseract qui nécessitent davantage de configuration.

Quelle est la technologie utilisée pour la lecture des passeports ?

IronOcr exploite Tesseract 5 sous le capot avec des améliorations d'apprentissage automatique et des techniques avancées de vision par ordinateur pour localiser et extraire automatiquement la zone MRZ (Machine Readable Zone) des images de passeport.

Peut-on l'utiliser pour les systèmes d'immigration dans les aéroports ?

Oui, IronOCR est idéal pour les applications d'immigration et de sécurité dans les aéroports où les agents traitent quotidiennement d'importants volumes de passeports. Il permet d'extraire de manière fiable des informations critiques sur les voyageurs afin de garantir l'efficacité des processus d'immigration.

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,571,678 | Version : 2026.4 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronOcr
lancez un échantillon regardez votre image se transformer en texte consultable.