Actualizado 16 de febrero, 2025
Compartir:

Cómo extraer datos de pasaportes con IronOCR

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

por Curtis Chau

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 simple llamada al método ReadPassport.

Comience a usar IronOCR en su proyecto hoy con una prueba gratuita.

Primer Paso:
green arrow pointer

Para usar esta función, también debe instalar el IronOcr.Extension.AdvancedScan paquete.

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 usando 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

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

Salida

Salida de resultado

A continuación, accedemos al miembro de datos PassportInfo obtenido del objeto OcrPassportResult.

  • GivenNames: Una propiedad de PassportInfo devuelve los nombres de pila del pasaporte introducido como una cadena de texto. 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 devuelve los nombres dados del pasaporte ingresado como una cadena. Esto corresponde a la segunda fila de datos MRZ, con posiciones del 1 al 9.
  • Apellido: Una propiedad de PassportInfo que devuelve el apellido del pasaporte ingresado como una cadena de texto. 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 del pasaporte de entrada como una cadena en el formato AAAA-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 expiración 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(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 el ICAOestándares de documentación.

Ejemplo de entrada:

Ubicación de MRZ

Primera Fila

Posición Campo Descripción
1Tipo de documentoNormalmente 'P' para pasaporte
2-3País emisorCódigo de país de tres letras (ISO 3166-1 alfa-3)
4-44Apellido y NombresApellido seguido de '<<' and then given names separated by '<'

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 para el 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 verificación para la fecha de nacimiento
21SexoSexo ('M' para masculino, 'F' para femenino, 'X' para no especificado)
22-27Fecha de vencimientoFecha de vencimiento en formato AAMMDD
28Dígito de verificación (Fecha de vencimiento)Dígito de verificación para la fecha de caducidad
29-42Número personalNúmero personal opcional (generalmente número de identificación nacional)
43Dígito de verificación (Número personal)Dígito de control para el 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 en bruto de la imagen del pasaporte y el nivel de confianza para confirmar si la información extraída es precisa. Utilizando 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:

Depurar
  • Confianza: La propiedad Confidence de OcrPassportResult es un flotante que indica la confianza en la precisión estadística 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 de OcrPassportResult contiene el texto en 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.
Chaknith Bin

Chaknith Bin

Ingeniero de software

 LinkedIn

Chaknith trabaja en IronXL e IronBarcode. Tiene una gran experiencia en C# y .NET, ayudando a mejorar el software y a apoyar a los clientes. Sus conocimientos de las interacciones con los usuarios contribuyen a mejorar los productos, la documentación y la experiencia general.