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)
VB   C#

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.

Comprender 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 de pasaporte:

Ubicación de MRZ

Primera Fila

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

Segunda fila

Posición Campo Descripción
-9Número de pasaporteNúmero de pasaporte único
0Dígito de Control (Número de Pasaporte)Dígito de control para el número de pasaporte
1-13NacionalidadCódigo de nacionalidad de tres letras (ISO 3166-1 alfa-3)
4-19Fecha de nacimientoFecha de nacimiento en formato AAMMDD
0Dígito de Control (Fecha de Nacimiento)Dígito de verificación para la fecha de nacimiento
1SexoSexo ('M' para masculino, 'F' para femenino, 'X' para no especificado)
2-27Fecha de vencimientoFecha de vencimiento en formato AAMMDD
8Dígito de verificación (Fecha de vencimiento)Dígito de verificación para la fecha de caducidad
9-42Número personalNúmero personal opcional (generalmente número de identificación nacional)
3Dígito de verificación (Número personal)Dígito de control para el número personal
4Dí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)
VB   C#

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.