Cómo extraer datos de pasaportes con IronOCR
En aplicaciones y sistemas como el check-in en el mostrador y la inmigración de seguridad en aeropuertos, donde los agentes tienen que manejar un gran volumen de pasaportes diariamente, contar con un sistema confiable que extraiga con precisión información esencial y crítica sobre el viajero es crucial para garantizar un proceso eficiente y ágil a través de la inmigración.
IronOCR es una herramienta confiable que facilita la extracción y lectura de datos de un pasaporte. El proceso se vuelve sencillo con una llamada simple al método ReadPassport
.
Cómo extraer datos de pasaportes con IronOCR
- Descargar una biblioteca de C# para leer pasaportes
- Importar la imagen del pasaporte para su lectura
- Asegúrese de que el documento contenga solo la imagen del pasaporte, sin encabezados ni pies de página.
- Utilice el método
ReadPassport
para extraer datos de la imagen - Acceda a la propiedad OcrPassportResult para ver y manipular más los datos extraídos del pasaporte
Comience a usar IronOCR en su proyecto hoy con una prueba gratuita.
Para usar esta función, también debe instalar el paquete IronOcr.Extension.AdvancedScan.
Ejemplo de extracción de datos de pasaportes
Como ejemplo, utilizaremos una imagen de pasaporte como entrada para demostrar la funcionalidad de IronOCR. Después de cargar la imagen utilizando OcrInput, puedes utilizar el método ReadPassport
para identificar y extraer información del pasaporte. Este método devuelve un objeto OcrPassportResult, que contiene propiedades como GivenNames, Country, PassportNumber, Surname, DateOfBirth y DateOfExpiry. Todos los miembros del objeto PassportInfo son cadenas.
Atención
- El método actualmente solo funciona para pasaportes en inglés.
-
El uso de la exploración avanzada en .NET Framework requiere que el proyecto se ejecute en arquitectura x64.
Entrada de pasaporte

Código
: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)
Salida

A continuación, accedemos al miembro de datos PassportInfo
obtenido del objeto OcrPassportResult
.
- GivenNames: Una propiedad de
PassportInfo
que devuelve los nombres dados del pasaporte de entrada como una cadena. Esto corresponde a la primera fila de datos MRZ con posiciones del 4 al 44. - Country: Una propiedad de
PassportInfo
devuelve el país del pasaporte ingresado como una cadena. Esto corresponde a la primera fila de datos MRZ con posiciones de 2 a 3. La cadena devuelta deletrearía el nombre completo del país emisor en lugar de la abreviatura. En nuestro ejemplo, EE. UU. vuelve a ser Estados Unidos de América. - PassportNumber: Una propiedad de
PassportInfo
que devuelve los nombres dados del pasaporte de entrada como una cadena. Esto corresponde a la segunda fila de datos MRZ, con posiciones del 1 al 9. - Apellido: Una propiedad de
PassportInfo
devuelve el apellido del pasaporte de entrada como una cadena. Esto corresponde a la primera fila de datos MRZ con posiciones del 4 al 44. - DateOfBirth: Una propiedad de
PassportInfo
devuelve la fecha de nacimiento de la entrada del pasaporte como una cadena en el formato YYYY-MM-DD. Esto corresponde a la segunda fila de datos MRZ con posiciones del 14 al 19. - DateOfExpiry: Un miembro de propiedad de
PassportInfo
que devuelve la fecha de vencimiento del pasaporte ingresado como una cadena en el formato AAAA-MM-DD. Esto corresponde a la segunda fila de datos MRZ con las posiciones 22 a 27.
Comprendiendo la Información MRZ
IronOCR lee la información MRZ que se encuentra en las dos filas inferiores de cualquier pasaporte que siga el estándar de la (Organización de Aviación Civil Internacional) ICAO. Los datos MRZ consisten en dos filas de datos, cada conjunto de posiciones contiene información única. A continuación, se presenta una breve tabla sobre qué información corresponde al índice de la fila; para todas las excepciones e identificadores únicos, por favor consulte los estándares de documentación de ICAO.
Ejemplo de entrada:

Primera Fila
Position | Field | Description |
---|---|---|
1 | Document Type | Typically 'P' for passport |
2-3 | Issuing Country | Three-letter country code (ISO 3166-1 alpha-3) |
4-44 | Surname and Given Names | Surname followed by '<<' and then given names separated by '<' |
Segunda fila
Position | Field | Description |
---|---|---|
1-9 | Passport Number | Unique passport number |
10 | Check Digit (Passport Number) | Check digit for the passport number |
11-13 | Nationality | Three-letter nationality code (ISO 3166-1 alpha-3) |
14-19 | Date of Birth | Date of birth in YYMMDD format |
20 | Check Digit (Date of Birth) | Check digit for the date of birth |
21 | Sex | Gender ('M' for male, 'F' for female, 'X' for unspecified) |
22-27 | Date of Expiry | Expiry date in YYMMDD format |
28 | Check Digit (Date of Expiry) | Check digit for the date of expiry |
29-42 | Personal Number | Optional personal number (usually national ID number) |
43 | Check Digit (Personal Number) | Check digit for the personal number |
44 | Check Digit (Composite) | Overall check digit |
Depuración
También podríamos verificar los resultados de IronOCR obteniendo el texto extraído en bruto de la imagen del pasaporte y el nivel de confianza para confirmar si la información extraída es precisa. Usando el ejemplo anterior, podemos acceder a las propiedades Confidence
y Text
del objeto 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)
Salida de consola:

- Confianza: La propiedad
Confidence
deOcrPassportResult
es un valor flotante que indica la confianza estadística de precisión del OCR como un promedio de cada carácter. Este valor flotante sería menor si la imagen del pasaporte está borrosa o contiene otra información. Donde 1 es el más alto y más confiado, y 0 es el más bajo y el menos confiado. - Texto: La propiedad
Text
deOcrPassportResult
contiene el texto bruto, sin analizar, extraído de la imagen del pasaporte. Los desarrolladores podrían usar esto en pruebas unitarias para verificar el texto extraído de la imagen del pasaporte.