ESCANEO DEL CODIGO PDF417 DEL DNI (Documento Nacional de Identidad digital)

 

 PARSEO DEL CODIGO PDF417 DEL DNI 


A partir de una lectora de codigo de barras 2D podemos leer y extraer los datos de un DNI para incorporarlos en nuestra base de datos sin necesidad de tipear los mismos en el teclado.





El código incluido en el frente de la credencial, es del tipo PDF417 e incluye los siguientes campos separados por un carácter @:

  1. Número de Tramite
  2. Apellidos (ambos separados por un espacio)
  3. Nombres (ambos separados por un espacio)
  4. Sexo (M / F)
  5. Número de DNI
  6. Ejemplar
  7. Fecha Nacimiento (DD/MM/AAAA)
  8. Fecha de Emisión del documento (DD/MM/AAAA)
  9. Inicio y fin de CUIL (3 caracteres, los 2 que van antes del primer guión y el último que va luego del segundo guión) 




Esperamos que esta información les sea de utilidad y cualquier consulta si esta a nuestro alcance con gusto les responderemos.

Sin duda que escanear el DNI y poder extraer los datos  de apellido, nombre, sexo, número de documento y fecha de nacimiento sin tipearlos en el teclado tiene ventajas notables. El tipeo en el teclado siempre tiene un importante porcentaje de error humano con la consiguiente generación de registros erróneos. El problema es que el PDF417 en el modo texto solo soporta los caracteres ASCII imprimibles, los que llegan a 127 (la "ñ" es un caracter ASCII extendido). 


Actualmente contamos con una herramienta importante de identificación. Se ha logrado un gran avance al renovar las tarjetas de DNI (Documento Nacional de Identidad digital) de casi la totalidad de la población. Esto incluye a los ciudadanos nativos o naturalizados, y a los extranjeros que lo hayan tramitado, ya sea que tengan o no residencia temporaria o permanente. De esta manera, se realizó la transcripción digital de los datos personales, foto y huella dactilar, logrando consolidar una gran base de datos nacional de alta calidad en el RENAPER (Registro Nacional de las Personas). Actualmente existen servicios web oficiales de RENAPER que permiten obtener los datos identificatorios de un ciudadano brindando datos clave como el número de documento y el sexo, o incluso realizar una validación biométrica mediante la huella dactilar o el rostro. Esto puede utilizarse para mejorar la calidad de los registros, pero en esencia son procesos de validación de identidad (comparación 1 a 1), ya que la persona debe previamente identificarse y proveer información personal. Para determinados usos como el de identificación de personas NN, cuestiones de seguridad ciudadana o judiciales también se aplican estas tecnologías (ej. comparación de una huella dactilar con toda la base nacional, 1 a n). Muchos caracteres extendidos que usamos en español como por ejemplo la ñ, ü , á, é, ú, í, ó  no están en el pdf 417.  El tratamiento de estos caracteres en las distintas versiones de DNI varían.
Cada palabra de código representa dos dígitos de base-30 que son usados por un sistema de cuatro submodos para representar los caracteres ASCII imprimibles (más retorno de carro, nueva línea y tabulador):
  • Mayúsculas: A-Z, espacio, cambiar a minúsculas, cambiar a mixto e interpretar el siguiente dígito como puntuación.
  • Minúsculas: a-z, espacio, interpretar el siguiente dígito como mayúsculas, cambiar a mixto, interpretar el siguiente dígito como puntuación
  • Mixto: 0, &, retorno de carro, tabulador, coma,:, #, -, punto, $, /, +,%, *, =, ^, cambiar a puntuación, espacio, cambiar a minúsculas, cambiar a mayúsculas, interpretar el siguiente dígito como puntuación.
  • Puntuación: ;, <, >, @, [, \, ], _, `, ~, !, retorno de carro, tabulador, coma, nueva línea, guion, punto, $, /, ", |, *, (, ),?, {,}, ', cambiar a mayúsculas.
La identificación de las personas resulta fundamental para la prestación eficiente y efectiva de los servicios de prestadores del ambito de la salud.
En la mayoría de las versiones de DNI los caracteres se ingresan con mayúsculas sin acentos, pero no en todas las versiones. Las mayúsculas sin acento están dentro de los caracteres ASCII imprimibles y no hay problema para su reconocimiento. En algunas versiones  de DNI, en el código PDF417, se suele omitir la letra acentuada y cuando parseamos (leemos el código PDF417) no podemos obtener los datos.
Las apóstrofes no representan un problema ya están dentro de los caracteres ASCII imprimibles y son reconocidos sin problemas por las lectoras de código PDF417





Respecto de los acentos en la mayoría de los DNI, los nombres y apellidos están cargados con letras mayúsculas sin acento, sin embargo,  en algunas versiones no lo esta, y ahí pueden suceder 2 cosas dependiendo de la versión: directamente la transforma a una letra sin acento, o la omite.





Por ejemplo en este caso el escaneo del pdf417 en lugar de traer el apellido Duré trae DUR y omite la letra E,   en cambio en el código OCR, al reverso del documento ,lo trae correctamente sin acento:DURE. Para resolver esto necesitamos un escáner que lea también OCR como vamos a ver a continuación . 

Para las letras ñ  y ü , en la mayoría de las versiones , el código PDF417 del DNI suele ponerles NXX O UXX en lugar de ñ  y ü ,  con lo cual nos permite hacer una programación que transforme el parseo que obtenemos del documento  para ingresar los datos correctamente.

Casos de Apellidos con ñ leidos como Nuñez y Muñoz vienen en el pdf417 como NUXXES o MUXXOZ , lo que permiten ser corregidos.



Respecto a la  ü  con diéresis  como es el caso de Agüero, el pdf417 suele devolver ACUXXERO  lo que permite ser corregido.




Para este estudio hemos analizado unos cuarenta mil DNI y, dependiendo de la versión, no siempre ocurre lo antes mencionado : a veces omiten la letra o ponen la letra N sin estar seguida de XX , con lo cual no hace posible programar un código que lo corrija y ahí dependemos de otros métodos  para resolver estas cuestiones.








Como vemos arriba, la lectura del código PDF417  devuelve la palabra "Nunez" , con lo cual para este documento no funcionarán las reglas antes mencionadas. 
En la figura a continuacion,  en el código OCR que está al reverso  del documento, se lee NUNXXEZ pero no está así en el pdf417




Para resolver esta problemática,  necesitamos un escáner que lea el  código OCR además del pdf417. Este tipo de equipos son los que usa migraciones . Obviamente estos equipos son más costosos.Aparatos como el OCR-B, Scanner de Pasaportes y DNI permiten guardar la imagen total de DNI  y extraer los datos por OCR. Otros dispositivos como el IDe200 captura imágenes a todo color y también imágenes ultravioleta (UV) e infrarrojo (IR) de la tarjeta de identificación, cédula / Carnet de identidad o de la licencia de conducir.
Ademas, son compatible con reconocimiento óptico de caracteres (OCR, Optical Character Recongition) para la zona legible por máquina (MRZ, machine readable zone). Estos dispositivos cumplen con la norma ICAO9303, y también realizan la lectura de códigos de barras PDF417 y QR.

  • En nuestro estudio analizamos 40.000 DNI Argentinos y la incidencia de errores no procesables    ( sin posibilidad de corregir por alguna programación) es del 0,025 %  Es decir que el 99,975 % de los DNI podrían leerse correctamente con un escáner de código pdf417 sin necesidad de recurrir a un scanner mucho mas costoso.
  • Las nuevas versiones de DNI corrigen estos errores, por lo cual a medida que la gente actualice sus documentos, los problemas que detectamos van a tender a desaparecer.
Referencias

  • Lectores de dni:
  • Libreria en webassembly (basada en ZXing) para leer dni argentinos


Comentarios