Extraer datos de pasaporte en C# con IronOCR
El método ReadPassport de IronOCR extrae datos estructurados de imágenes de pasaportes, incluidos nombres, números de pasaporte, fechas de nacimiento y fechas de caducidad en una sola línea de código C#, lo que lo hace ideal para aplicaciones de inmigración y seguridad.
En aplicaciones y sistemas como los mostradores de facturación y la inmigración de seguridad en los aeropuertos, donde los agentes manejan grandes volúmenes de pasaportes a diario, contar con un sistema fiable que extraiga con precisión la información crítica del viajero es crucial para garantizar un proceso de inmigración eficiente y ágil. La biblioteca IronOCR ofrece funciones avanzadas de OCR optimizadas específicamente para la lectura de pasaportes, aprovechando Tesseract 5 con mejoras de aprendizaje automático.
Inicio rápido: Extraer la información MRZ del pasaporte en una línea
Este ejemplo muestra cómo cargar una imagen de pasaporte utilizando OcrInput, utilizar ReadPassport() para extraer datos y acceder a campos estructurados como nombres, números y fechas desde el PassportInfo devuelto. No se requiere una configuración compleja, solo una línea directa. A diferencia de las implementaciones tradicionales de Tesseract, IronOCR proporciona una API simplificada diseñada específicamente para la extracción de documentos.
Empieza a crear PDF con NuGet ahora:
Instalar IronOCR con el gestor de paquetes NuGet
Copie y ejecute este fragmento de código.
var passportInfo = new IronOcr.IronTesseract().ReadPassport(new IronOcr.OcrInput("passport.jpg")).PassportInfo;Despliegue para probar en su entorno real
Empieza a utilizar IronOCR en tu proyecto hoy mismo con una prueba gratuita
Flujo de trabajo mínimo (5 pasos)
- Descargue una biblioteca de C# para leer pasaportes
- Importe la imagen del pasaporte para su lectura
- Asegúrese de que el documento contiene solo la imagen del pasaporte, sin encabezados ni pies de página
- Utilice el método
ReadPassportpara extraer datos de la imagen - Acceda a la propiedad OcrPassportResult para ver y manipular aún más los datos del pasaporte extraídos
¿Cómo extraer datos de pasaporte en C#?
Como ejemplo, utilizaremos una imagen de pasaporte como entrada para mostrar la funcionalidad de IronOCR. Después de cargar la imagen usando OcrInput, puede 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 de texto.
El método ReadPassport forma parte de las capacidades especializadas de lectura de documentos de IronOCR, que también incluye métodos para leer matrículas, cheques MICR y otros documentos estructurados. El método utiliza técnicas avanzadas de visión por ordenador para localizar y extraer automáticamente la zona MRZ (Machine Readable Zone).
[{i:(
- Actualmente, el método sólo funciona con pasaportes en inglés.
- Usar escaneo avanzado en .NET Framework requiere que el proyecto se ejecute en arquitectura x64.
- Para usuarios de Mac, tenga en cuenta que el método
ReadPassportactualmente no rota automáticamente la entrada. Al usar la entrada, asegúrese de que el MRZ esté siempre en la parte inferior del archivo; de lo contrario, el proceso fallará.
@@--CIERRE DE SOPORTE--@@
¿Qué formato de imagen de pasaporte debo usar?
IronOCR es compatible con varios formatos de imagen, incluidos JPG, PNG, TIFF y BMP. Para obtener resultados óptimos, asegúrese de que la imagen de su pasaporte tiene una resolución adecuada (al menos 300 DPI) y una iluminación apropiada. La configuración DPI puede ajustarse si se trabaja con escaneados de menor calidad.

¿Qué código necesito para extraer los datos del pasaporte?
El siguiente ejemplo muestra el proceso completo de extracción de datos de pasaportes. Para las aplicaciones que procesan varios pasaportes, considere implementar soporte multihilo para mejorar el rendimiento. También puede realizar un seguimiento del progreso de OCR para operaciones de larga duración.
:path=/static-assets/ocr/content-code-examples/how-to/read-passport-read-passport.csusing 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)¿Qué resultados puedo esperar de ReadPassport?
Los datos extraídos se devuelven en un formato estructurado que facilita la integración con los sistemas existentes. La clase OcrResult proporciona un acceso completo a toda la información extraída.

Luego accedemos al miembro de datos PassportInfo obtenido del objeto OcrPassportResult. El proceso de extracción maneja automáticamente varios diseños y formatos de pasaporte, proporcionando resultados coherentes en los distintos países emisores.
GivenNames: Una propiedad dePassportInfodevuelve los nombres dados de la entrada del pasaporte como una cadena. Corresponde a la primera fila de datos MRZ, posiciones 4 a 44.Country: Una propiedad dePassportInfodevuelve el país de la entrada del pasaporte como una cadena. Esto corresponde a la primera fila de datos MRZ, posiciones 2 a 3. La cadena devuelta indica el nombre completo del país emisor en lugar de la abreviatura. En nuestro ejemplo, USA significa "Estados Unidos de América".PassportNumber: Una propiedad dePassportInfodevuelve el número de pasaporte de la entrada del pasaporte como una cadena. Esto corresponde a la segunda fila de datos MRZ, posiciones 1 a 9.Surname: Una propiedad dePassportInfodevuelve el apellido de la entrada del pasaporte como una cadena. Corresponde a la primera fila de datos MRZ, posiciones 4 a 44.DateOfBirth: Una propiedad dePassportInfodevuelve la fecha de nacimiento de la entrada del pasaporte como una cadena en el formato AAAA-MM-DD. Esto corresponde a la segunda fila de datos MRZ, posiciones 14 a 19.DateOfExpiry: Un miembro de propiedad dePassportInfodevuelve la fecha de vencimiento de la entrada del pasaporte como una cadena en el formato AAAA-MM-DD. Esto corresponde a la segunda fila de datos MRZ, posiciones 22 a 27.
¿Qué información MRZ puedo extraer de los pasaportes?
IronOCR lee la información MRZ contenida 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 de MRZ constan de dos filas de datos, y cada conjunto de posiciones contiene información única. He aquí una breve tabla que muestra qué información corresponde al índice de la fila.
La funcionalidad de análisis de MRZ en IronOCR está diseñada para manejar variaciones en la calidad de impresión y orientación de la imagen. En el caso de documentos difíciles, puedes aplicar filtros de corrección de imagen para mejorar la precisión del reconocimiento.
¿Cómo es la sección MRZ?
El MRZ se encuentra normalmente en la parte inferior de la página del pasaporte y consta de dos líneas de texto normalizado. La comprensión de la estructura MRZ ayuda a resolver problemas de extracción y a validar los resultados.

Primera fila
| Posición | Campo | Descripción |
|---|---|---|
| 1 | Tipo de documento | Normalmente 'P' de pasaporte |
| 2-3 | País emisor | Código de país de tres letras (ISO 3166-1 alfa-3) |
| 4-44 | Apellido y nombres de pila | Apellido seguido de '<<' y luego nombres separados por '<' |
Segunda fila
| Posición | Campo | Descripción |
|---|---|---|
| 1-9 | Número de pasaporte | Número de pasaporte único |
| 10 | Dígito de control (Número de pasaporte) | Dígito de control del número de pasaporte |
| 11-13 | Nacionalidad | Código de nacionalidad de tres letras (ISO 3166-1 alfa-3) |
| 14-19 | Fecha de nacimiento | Fecha de nacimiento en formato AAMMDD |
| 20 | Dígito de control (Fecha de nacimiento) | Dígito de control para la fecha de nacimiento |
| 21 | Sexo | Género ('M' para masculino, 'F' para femenino, 'X' para no especificado) |
| 22-27 | Fecha de vencimiento | Fecha de vencimiento en formato AAMMDD |
| 28 | Dígito de control (fecha de vencimiento) | Dígito de control para la fecha de caducidad |
| 29-42 | Número personal | Número personal opcional (normalmente el número de identificación nacional) |
| 43 | Dígito de control (Número personal) | Dígito de control del número personal |
| 44 | Dígito de control (compuesto) | Dígito de control general |
¿Cómo puedo depurar y verificar los resultados de la extracción de pasaportes?
También podemos verificar los resultados de IronOCR obteniendo el texto en bruto extraído 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.
Con fines de depuración, es posible que desee resaltar regiones de texto para verificar visualmente qué áreas se reconocieron. Esta función es especialmente útil para solucionar problemas de extracción u optimizar regiones de escaneado.
:path=/static-assets/ocr/content-code-examples/how-to/read-passport-debug.csusing 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 propiedadConfidencedeOcrPassportResultes un flotante que indica la precisión estadística del OCR como un promedio de cada carácter. Esta flotación es menor si la imagen del pasaporte es borrosa o contiene otra información. El uno es la puntuación más alta y de mayor confianza, y el cero es la más baja y de menor confianza. Para las aplicaciones de producción, considere la implementación de umbrales de confianza en los resultados para garantizar la calidad de los datos.Text: La propiedadTextdeOcrPassportResultcontiene el texto crudo y sin analizar extraído de la imagen del pasaporte. Los desarrolladores pueden utilizarlo en pruebas unitarias para verificar el texto extraído de la imagen del pasaporte. Para escenarios avanzados, puede exportar los resultados en formato hOCR para su posterior análisis.
Prácticas recomendadas para aplicaciones de escaneado de pasaportes
Al aplicar el escaneado de pasaportes en entornos de producción, tenga en cuenta estos factores adicionales:
Calidad de las imágenes: Garantizar que las imágenes de entrada cumplen unos estándares mínimos de calidad. El Asistente de filtrado puede ayudar a optimizar las imágenes para un mejor reconocimiento.
Rendimiento: Para el procesamiento de grandes volúmenes, implemente soporte async y considere el procesamiento por lotes de múltiples pasaportes.
Seguridad: Dado que los datos de los pasaportes son confidenciales, hay que garantizar una gestión adecuada de los datos y considerar la posibilidad de integrarlos con sistemas seguros de gestión de documentos.
Validación: Implementar la validación de dígitos de control para los datos MRZ extraídos con el fin de garantizar la precisión. El formato MRZ incluye varios dígitos de control que pueden utilizarse para verificar la integridad de la información extraída.
- Manejo de errores: Implementar un manejo de errores robusto para casos en los que las imágenes del pasaporte pueden estar dañadas, mal iluminadas o contener formatos no estándar.
Preguntas Frecuentes
¿Cómo extraer datos de pasaporte de imágenes en C#?
Puede extraer los datos del pasaporte utilizando el método ReadPassport de IronOCR. Simplemente cargue su imagen de pasaporte con OcrInput y llame a ReadPassport() para obtener datos estructurados incluyendo nombres, números de pasaporte, fechas de nacimiento y fechas de caducidad en una sola línea de código.
¿Qué información sobre pasaportes puede extraerse automáticamente?
El método ReadPassport de IronOCR extrae los Nombres, País, Número de Pasaporte, Apellido, Fecha de Nacimiento y Fecha de Expiración de las imágenes de pasaporte. Todos los datos se devuelven como cadenas en un objeto PassportInfo estructurado.
¿Necesito una configuración compleja para leer datos MRZ de pasaporte?
No se requiere ninguna configuración compleja. IronOCR proporciona una API simplificada que extrae datos MRZ de pasaporte en solo una línea de código, a diferencia de las implementaciones tradicionales de Tesseract que requieren más configuración.
¿Qué tecnología permite la lectura de pasaportes?
IronOCR utiliza Tesseract 5 con mejoras de aprendizaje automático y técnicas avanzadas de visión por ordenador para localizar y extraer automáticamente la zona MRZ (Machine Readable Zone) de las imágenes de pasaportes.
¿Puede utilizarse para los sistemas de inmigración de los aeropuertos?
Sí, IronOCR es ideal para aplicaciones de inmigración y seguridad en aeropuertos donde los agentes manejan grandes volúmenes de pasaportes a diario. Proporciona una extracción fiable de la información crítica del viajero para garantizar procesos de inmigración eficientes.







