A continuación se detalla el modo de uso del programa, configuraciones y diferentes diagramas de uso explicativos.
Este software fue creado para hallar un método que sirviera como alternativa eficiente a los métodos de detección de objetos tradicionales, ya que habitualmente pueden llegar a ser algo lentos. Se utiliza este algoritmo sobre DNIs para ver su funcionamiento y aprovechar su funcionalidad detectando un DNI en cualquier imagen digitalizada.
Este software fue realizado como Trabajo Fin de Grado en la Universidad Rey Juan Carlos.
Para la ejecución del programa es necesario:
- Tener instalado Python 2.7
- Tener instalado Tesseract OCR-Engine
- Tener instalado OpenCV 3.0.0 o superior
- Tener instaladas librerías propias de python (se instalan con pip install -U seguido del nombre de la librería) como puede ser numpy, matplotlib, imutils y cPickle.
- Sistema operativo que soporte las anteriores tecnologías.
Para instalar OpenCV, se recomienda:
- Instalar Anaconda
- A continuación escribir en shell
$~ anaconda search opencv
- Esto último te mostrará un listado de imágenes no oficiales de OpenCV que tiene Anaconda. Elegir uno que sea compatible con vuestro sistema operativo y escribir:
$~ conda install -c NombreRepositorio NombreArchivo
Por ejemplo:
```sh
$~ conda install -c menpo opencv3
```
Lo primero, es necesario tener descargado el proyecto, para ello habrá que hacer desde la consola de comandos
$~ git clone NombreRepositorio
Posteriormente, dirigirse a la carpeta DetectDNI y ejecutar el programa:
$~ cd {path}/DetectDNI
$~ {path}/DetectDNI python DetectDNI.py --images ruta/imagenes --type tipo_dni
En este apartado se detalla cuales son los argumentos que recibe el programa:
-
--images (Opcional) : Este argumento recibe la ruta de la imagen o la carpeta de imágenes en las que se va a detectar si hay un DNI.
-
--front (Opcional) : Este argumento recibe la ruta de la imagen perteneciente a la cara frontal del DNI.
-
--back (Opcional) : Este argumento recibe la ruta de la imagen perteneciente a la cara trasera del DNI.
-
--type (Obligatorio) : Este argumento determina el tipo de DNI que se quiere detectar en la imagen. Puede ser old, old_back, new, new_back.
-
--mode (Opcional): Este argumento determina el modo de ejecución del programa, puede ser recognition o detect
A continuación se detallan las funcionalidades que tiene el software
El software puede leer de manera iterativa las imágenes de una carpeta (o la ruta de una imagen individual) de manera que detectará en todas ellas si hay un DNI y en que posición. Por otro lado, extraerá toda la información del mismo si se especifica el modo recognition o se mostrará la detección mediante detect
$~ {path}/DetectDNI python DetectDNI.py --images ruta/imagenes --type tipo_dni --mode mode
El software también se puede utilizar para extraer la información de un DNI pasándole una foto de ambas caras del mismo, detectaría y extraería la información de ambos. En este caso, también se hará un proceso de validación para comprobar que la mayoría de la información extraída ha sido correctamente leída y de este modo, avisar si fuese necesario hacer una nueva foto del DNI.
$~ {path}/DetectDNI python DetectDNI.py --front /ruta/DNI/frontal --back /ruta/DNI/trasera --type tipo_dni --mode mode
El programa está preparado para leer dos tipos de DNI tanto por delante como por detrás.
El primero, tipo old para la parte frontal y old_back para la trasera, sería de este tipo:
El segundo, tipo new para la parte frontal y new_back para la trasera, sería de este tipo:
La carpeta config contiene los diferentes parámetros de configuración del programa, en ellos se incluye:
- Puntos de interés de cada canal de la imagen RGB modelo.
- Descriptores de cada canal de la imagen RGB modelo.
- Configuración de los parámetros que indican las posiciones de la información a extraer en la imagen modelo.
Titulo : Detector de DNIs y reconocimiento de caracteres OCR Autor : Adrián Suárez (Suaro) Email : [email protected] Última actualización: 21 de Mayo de 2017