Extraer datos del pasaporte en C# con IronOCR

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

En aplicaciones y sistemas como el check-in en mostradores y la inmigración de seguridad en aeropuertos, donde los agentes tienen que lidiar con un gran volumen de pasaportes diariamente, tener un sistema confiable que extraiga con precisión información esencial y crítica sobre la misión del viajero es crucial para asegurar un proceso eficiente y sin problemas a través de la inmigración.

Inicio rápido: Extraer la información MRZ del pasaporte en una línea

Comience a leer pasaportes en segundos: este ejemplo muestra lo fácil que es cargar una imagen de pasaporte usando OcrInput, usar ReadPassport() para extraer datos y luego acceder a los campos estructurados como nombres, número y fechas del PassportInfo devuelto. No se necesita una configuración pesada, solo una línea sencilla.

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

Ejemplo de extracción de datos de pasaporte

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.

@@--SOPORTE-i-ABIERTO--@@

  • El método actualmente solo funciona para pasaportes basados 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--@@

Pasaporte

Imagen de muestra

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

Resultado

Salida de resultados

Luego accedemos al miembro de datos PassportInfo obtenido del objeto OcrPassportResult.

  • GivenNames: Una propiedad de PassportInfo devuelve los nombres dados de la entrada del pasaporte como una cadena. Esto corresponde a la primera fila de datos MRZ, con posiciones de 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, con posiciones de 2 a 3. La cadena devuelta deletreará el nombre completo del país emisor en lugar de la abreviatura. En nuestro ejemplo, los EE.UU. devuelven '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, con posiciones de 1 a 9.
  • Surname: Una propiedad de PassportInfo devuelve el apellido de la entrada del pasaporte como una cadena. Esto corresponde a la primera fila de datos MRZ, con posiciones de 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, con posiciones de 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, con posiciones de 22 a 27.

Entender la información de 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 constan de dos filas de datos, cada conjunto de posiciones contiene información única. Aquí hay una breve tabla sobre qué información corresponde al índice de la Fila.

Entrada de ejemplo

Ubicación de MRZ

Primera fila

Posición Campo Descripció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ón Campo Descripció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

Depuración

También podríamos verificar los resultados de IronOCR obteniendo el texto extraído crudo 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)
$vbLabelText   $csharpLabel

Salida de consola

  • 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. Este flotante sería menor si la imagen del pasaporte está borrosa o contiene otra información. Uno es el más alto y más confiado, y 0 es el más bajo y el menos confiado.
  • Text: La propiedad Text de OcrPassportResult contiene el texto crudo y 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.

Preguntas Frecuentes

¿Cómo puedo extraer datos de un pasaporte usando OCR en C#?

Puede usar el método ReadPassport de IronOCR para extraer datos del pasaporte en C#. Primero, instale la biblioteca IronOCR y el paquete IronOcr.Extension.AdvancedScan. Importe la imagen del pasaporte y luego llame a ReadPassport para recuperar los datos.

¿Qué información se puede extraer de un pasaporte usando IronOCR?

IronOCR puede extraer detalles como nombres, país, número de pasaporte, apellido, fecha de nacimiento y fecha de vencimiento de un pasaporte.

¿Qué es la Zona de Lectura Mecánica (MRZ) de un pasaporte?

La MRZ se encuentra en las dos últimas filas de un pasaporte y contiene datos cruciales. IronOCR lee esta zona para extraer información según los estándares de la OACI.

¿Cuáles son los requisitos para usar el método ReadPassport en IronOCR?

Necesita instalar el paquete IronOcr.Extension.AdvancedScan y asegurarse de que su proyecto se ejecute en arquitectura x64 para capacidades de escaneo avanzadas.

¿Se puede usar IronOCR para verificar la precisión de los datos extraídos del pasaporte?

Sí, puede verificar la precisión de los datos extraídos usando la propiedad Confidence del objeto OcrPassportResult, donde un valor cercano a 1 indica alta confianza.

¿Qué idiomas son compatibles con IronOCR para la extracción de datos de pasaportes?

Actualmente, IronOCR admite pasaportes basados en inglés para la extracción de datos.

¿Cómo maneja IronOCR el texto extraído de un pasaporte?

Los datos extraídos se almacenan en el objeto OcrPassportResult, con cada miembro representado como una cadena para facilitar el acceso y la manipulación.

¿Para qué se utiliza la propiedad 'Text' en el objeto OcrPassportResult?

La propiedad 'Text' le permite acceder y verificar el texto extraído de un pasaporte, asegurándose de que la información sea precisa y completa.

¿Qué debo hacer si la imagen del pasaporte incluye encabezados o pies de página?

Asegúrese de que la imagen del pasaporte esté libre de encabezados o pies de página antes de usar IronOCR, ya que estos pueden interferir con la precisión del proceso de extracción de datos.

¿Cuáles son los consejos comunes para solucionar problemas al usar IronOCR para pasaportes?

Verifique que tenga los paquetes correctos instalados, asegúrese de que la imagen sea clara y esté correctamente recortada y compruebe la compatibilidad de la arquitectura (x64) para un rendimiento óptimo.

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,167,857 | Version: 2025.11 recién lanzado