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, 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.
-
Installez IronOCR avec le Gestionnaire de Packages NuGet
PM > Install-Package IronOcr -
Copiez et exécutez cet extrait de code.
var passportInfo = new IronOcr.IronTesseract().ReadPassport(new IronOcr.OcrInput("passport.jpg")).PassportInfo; -
Dé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 à 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).
- 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
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.
: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
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.
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é dePassportInforenvoie 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é dePassportInforenvoie 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é dePassportInforenvoie 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é dePassportInforenvoie 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é dePassportInforenvoie 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é dePassportInforenvoie 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 formeGender.Male,Gender.FemaleouGender.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.
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 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)

Confidence: La propriétéConfidencedeOcrPassportResultest 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é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.

