Extraire les données d'un passeport en C# ; avec IronOCR
La méthode ReadPassport d'IronOCR extrait les données structurées des images de passeport, y compris 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 ligneCet exemple montre comment charger une image de passeport en utilisant OcrInput, utiliser ReadPassport() pour extraire des données et accéder à des champs structurés tels que les noms, le numéro et les dates à partir de l'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.
-
1Install IronOCR with NuGet Package Manager
-
2Copiez et exécutez cet extrait de code.
var passportInfo = new IronOcr.IronTesseract().ReadPassport(new IronOcr.OcrInput("passport.jpg")).PassportInfo;C# -
3Déployez pour tester sur votre environnement de production.
Commencez à utiliser IronOCR dans votre projet dès aujourd'hui avec un essai gratuit
Flux de travail minimal (5 étapes)
- Téléchargez une bibliothèque C# pour lire les passeports
- Importez l'image du passeport pour la lecture
- Assurez-vous que le document ne contient que l'image du passeport, sans en-têtes ni pieds de page
- Utilisez la méthode
ReadPassportpour extraire les données de l'image. - Accédez à la propriété OcrPassportResult pour afficher et manipuler les données de passeport extraites.
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 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, DateOfExpiry, Gender, DocumentType, Nationalité, NationalityCode, IssuingCountryCode, PersonalNumber et DateOfIssue.
La méthode ReadPassport fait partie des capacités spécialisées de lecture de documents d'IronOCR, qui inclut également des méthodes pour lire les plaques d'immatriculation, les 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).
- 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 Mac, veuillez noter que la méthode
ReadPassportne 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é.

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.
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
' 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 UsingQuel 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 offre un accès complet à toutes les informations extraites.

Nous accédons ensuite au membre de données PassportInfo obtenu 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é dePassportInforenvoie les prénoms de l'entrée du 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é dePassportInforenvoie le pays de l'entrée du passeport 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é dePassportInforenvoie le numéro du passeport de l'entrée du passeport 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é dePassportInforenvoie 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, positions 4 à 44.DateOfBirth: Une propriété dePassportInforenvoie la date de naissance de l'entrée du passeport sous forme de chaîne de caractères au format AAAA-MM-JJ. Cela correspond à la deuxième ligne de données MRZ, positions 14 à 19.DateOfExpiry: Un membre de propriété dePassportInforenvoie la date d'expiration de l'entrée du passeport sous forme de chaîne de caractères au format AAAA-MM-JJ. Cela correspond à la deuxième ligne de données MRZ, positions 22 à 27.Gender: Renvoie le sexe depuis la position 21 de la MRZ en tant queGender.Male,Gender.FemaleouGender.Unspecified.DocumentType: Renvoie le type de document depuis les positions 1-2 de la MRZ, tel que "P" pour passeport, "PS" pour service ou "PD" pour diplomatique.Nationality: Renvoie le nom complet du pays en anglais dérivé des positions 11-13 de la MRZ.NationalityCode: Renvoie le code brut ISO 3166-1 alpha-3 des positions 11-13 de la MRZ.IssuingCountryCode: Renvoie le code brut ISO 3166-1 alpha-3 de l'état émetteur des positions 3-5 de la MRZ.PersonalNumber: Renvoie le numéro de carte d'identité nationale optionnel depuis les positions 29-42 de la MRZ.DateOfIssue: Renvoie la date d'émission extraite de la Zone d'Inspection Visuelle (VIZ) via le meilleur appariement d'étiquettes 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.

Première rangée
| Poste à pourvoir | Champ | Description du projet |
|---|---|---|
| 1 | Type de document | Généralement, " P " pour passeport |
| 2-3 | Pays émetteur | Code pays à trois lettres (ISO 3166-1 alpha-3) |
| 4-44 | Nom et prénom | Nom de famille suivi de '<<' puis prénoms séparés par '<' |
Deuxième rangée
| Poste à pourvoir | Champ | Description du projet |
|---|---|---|
| 1-9 | Numéro de passeport | numéro de passeport unique |
| 10 | Chiffre de contrôle (numéro de passeport) | Chiffre de contrôle du numéro de passeport |
| 11-13 | Nationalité | Code de nationalité à trois lettres (ISO 3166-1 alpha-3) |
| 14-19 | Date de naissance | Date de naissance au format AAMMJJ |
| 20 | Chiffre de contrôle (Date de naissance) | Chiffre de contrôle de la date de naissance |
| 21 | Sexe | Genre (" M " pour masculin, " F " pour féminin, " X " pour non spécifié) |
| 22-27 | Date d'expiration | Date d'expiration au format AAMMJJ |
| 28 | Chiffre de contrôle (date d'expiration) | Chiffre de contrôle de la date d'expiration |
| 29-42 | Numéro personnel | Numéro personnel facultatif (généralement numéro d'identification national) |
| 43 | Chiffre de contrôle (numéro personnel) | Chiffre de contrôle du numéro personnel |
| 44 | Chiffre 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 utilisant 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.
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: La propriétéConfidencedeOcrPassportResultest un flottant indiquant la confiance statistique de précision OCR comme une moyenne pour 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éTextdeOcrPassportResultcontient 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 :
-
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.
-
Performance : Pour le traitement de gros volumes, mettez en œuvre la prise en charge async et envisagez le traitement par lots de plusieurs passeports.
-
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.
-
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.
-
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.
What are the requirements for using the ReadPassport method on a Mac?
When using ReadPassport on a Mac, ensure the MRZ is at the bottom of the input image, as automatic rotation is not supported, and the project needs to run in x64 architecture on advanced .NET Framework.
What image formats are supported by IronOCR for passport OCR?
IronOCR supports various image formats, including JPG, PNG, TIFF, and BMP, for passport OCR and recommends images with a resolution of at least 300 DPI.
Can IronOCR handle non-standard passport formats?
IronOCR's MRZ parsing is designed to handle variations in passport print quality and image orientation, making it adaptable to different passport layouts and formats.
How does IronOCR ensure the accuracy of extracted passport data?
IronOCR provides the Confidence property in the OcrPassportResult, which indicates the statistical accuracy of the OCR process, and developers can implement thresholds for quality assurance.
What additional features does IronOCR offer for MRZ extraction validation?
IronOCR includes features like check digit validation for MRZ data fields, ensuring the accuracy and integrity of the extracted information.

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 et créer des manuels bien structurés et visuellement attrayants.