Cómo extraer datos de pasaportes con IronOCR
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
.
Cómo extraer datos de pasaportes con IronOCR
- Descargar una biblioteca de C# para leer pasaportes
- Importar la imagen del pasaporte para su lectura
- Asegúrese de que el documento contenga solo la imagen del pasaporte, sin encabezados ni pies de página.
- Utiliza el
LeerPasaporte
método para extraer datos de la imagen - Acceder a la OcrPassportResult propiedad para ver y seguir manipulando los datos del pasaporte extraídos
Comience a usar IronOCR en su proyecto hoy con una prueba gratuita.
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
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)
Salida
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:
Primera Fila
Posición | Campo | Descripción |
---|---|---|
Tipo de documento | Normalmente 'P' para pasaporte | |
-3 | País emisor | Código de país de tres letras (ISO 3166-1 alfa-3) |
-44 | Apellido y Nombres | Apellido seguido de '<<' and then given names separated by '<' |
Segunda fila
Posición | Campo | Descripción |
---|---|---|
-9 | Número de pasaporte | Número de pasaporte único |
0 | Dígito de Control (Número de Pasaporte) | Dígito de control para el número de pasaporte |
1-13 | Nacionalidad | Código de nacionalidad de tres letras (ISO 3166-1 alfa-3) |
4-19 | Fecha de nacimiento | Fecha de nacimiento en formato AAMMDD |
0 | Dígito de Control (Fecha de Nacimiento) | Dígito de verificación para la fecha de nacimiento |
1 | Sexo | Sexo ('M' para masculino, 'F' para femenino, 'X' para no especificado) |
2-27 | Fecha de vencimiento | Fecha de vencimiento en formato AAMMDD |
8 | Dígito de verificación (Fecha de vencimiento) | Dígito de verificación para la fecha de caducidad |
9-42 | Número personal | Número personal opcional (generalmente número de identificación nacional) |
3 | Dígito de verificación (Número personal) | Dígito de control para el número personal |
4 | Dí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)
Salida de consola:
- Confianza: La propiedad
Confidence
deOcrPassportResult
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
deOcrPassportResult
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.