Extraer datos de pasaporte en C# con IronOCR

This article was translated from English: Does it need improvement?
Translated
View the article in English

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.

Nuget IconEmpieza a crear PDF con NuGet ahora:

  1. Instalar IronOCR con el gestor de paquetes NuGet

    PM > Install-Package IronOcr

  2. Copie y ejecute este fragmento de código.

    var passportInfo = new IronOcr.IronTesseract().ReadPassport(new IronOcr.OcrInput("passport.jpg")).PassportInfo;
  3. Despliegue para probar en su entorno real

    Empieza a utilizar IronOCR en tu proyecto hoy mismo con una prueba gratuita
    arrow pointer

¿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 ReadPassport actualmente 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.

Ejemplo de página de datos de pasaporte estadounidense que muestra campos biográficos, fechas y zona de lectura automática para demostración de extracción de datos

¿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.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)
$vbLabelText   $csharpLabel

¿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.

Consola de depuración que muestra los datos del pasaporte extraídos: nombre, país, número de pasaporte y fechas del procesamiento OCR

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 de PassportInfo devuelve 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 de PassportInfo devuelve 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 de PassportInfo devuelve 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 de PassportInfo devuelve 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 de PassportInfo devuelve 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 de PassportInfo devuelve 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.

Página del pasaporte estadounidense con la zona de lectura mecánica (MRZ) resaltada en un recuadro rojo que muestra las líneas de datos alfanuméricos codificados

Primera fila

PosiciónCampoDescripción
1Tipo de documentoNormalmente 'P' de pasaporte
2-3País emisorCódigo de país de tres letras (ISO 3166-1 alfa-3)
4-44Apellido y nombres de pilaApellido seguido de '<<' y luego nombres separados por '<'

Segunda fila

PosiciónCampoDescripción
1-9Número de pasaporteNúmero de pasaporte único
10Dígito de control (Número de pasaporte)Dígito de control del número de pasaporte
11-13NacionalidadCódigo de nacionalidad de tres letras (ISO 3166-1 alfa-3)
14-19Fecha de nacimientoFecha de nacimiento en formato AAMMDD
20Dígito de control (Fecha de nacimiento)Dígito de control para la fecha de nacimiento
21SexoGénero ('M' para masculino, 'F' para femenino, 'X' para no especificado)
22-27Fecha de vencimientoFecha de vencimiento en formato AAMMDD
28Dígito de control (fecha de vencimiento)Dígito de control para la fecha de caducidad
29-42Número personalNúmero personal opcional (normalmente el número de identificación nacional)
43Dígito de control (Número personal)Dígito de control del número personal
44Dí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.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

Consola de depuración de VS Code que muestra la salida de datos del pasaporte con detalles personales, países y cadenas codificadas

  • Confidence: La propiedad Confidence de OcrPassportResult es 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 propiedad Text de OcrPassportResult contiene 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:

  1. 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.

  2. Rendimiento: Para el procesamiento de grandes volúmenes, implemente soporte async y considere el procesamiento por lotes de múltiples pasaportes.

  3. 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.

  4. 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.

  5. 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.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
Revisado por
Jeff Fritz
Jeffrey T. Fritz
Gerente Principal de Programas - Equipo de la Comunidad .NET
Jeff también es Gerente Principal de Programas para los equipos de .NET y Visual Studio. Es el productor ejecutivo de la serie de conferencias virtuales .NET Conf y anfitrión de 'Fritz and Friends', una transmisión en vivo para desarrolladores que se emite dos veces a la semana donde habla sobre tecnología y escribe código junto con la audiencia. Jeff escribe talleres, presentaciones, y planifica contenido para los eventos de desarrolladores más importantes de Microsoft, incluyendo Microsoft Build, Microsoft Ignite, .NET Conf y la Cumbre de Microsoft MVP.
¿Listo para empezar?
Nuget Descargas 5,246,844 | Versión: 2025.12 recién lanzado