Investigación
Semana 1
Como parte de mi último semestre de la carrera de Ingeniero en Tecnología de Software, tome la decisión de llevar el módulo de Investigación, el cuál consiste en preparar una investigación científica y/o un desarrollo tecnológico que tendrá como producto una tesis de licenciatura, publicaciones en revistas o participación en congresos, supervisados por
Elisa Schaeffer.
La primer reunión inicial la lleve a cabo el día 13 de Enero del 2014 desde una sala de juntas dentro del CIIDIT - PIIT. La reunión fue tomada con un grupo de compañeros de carrera, Cecilia, Juan, Rafael, Isaías y Saúl, que también llevan el módulo de Investigación en el mismo semestre que yo.
En esta primer reunión se explicaron los requisitos con los que había que cumplir para poder dar inicio a nuestro proyecto de investigación, el cuál dará como resultado el escrito de una tesis de licenciatura, y se hablo de forma general las tareas que se estará realizando a lo largo del semestre.
Nuestra tesis constará de 3 elementos:
- Blog (para contribuciones técnicas).
- Archivos LaTex (en Dropbox compartidos con nuestra asesora).
- Repositorio Git (para el código implementado).
Como evidencias de trabajo para la primer semana se nos pidió lo siguiente:
- Enlace al blog y repositorio en línea, y compartir el directorio con nuestra plantilla de tesis (1 punto).
- Prueba de concepto con código en el repositorio (4 puntos).
- Creación del esqueleto con secciones para la tesis y escrito que diga lo que deseo hacer de tesis (4 puntos).
- Reunión final de la primer semana para el viernes 17 de Enero (1 punto).
La liga a mi repositorio es la siguiente:
Repositorio GitHub
¿Qué quiero hacer para mi tema de tesis?
Para mi proyecto de tesis quiero realizar un módulo en python usando la librería pytesser y herramienta OCR para el reconocimiento de texto en imágenes, haciendo uso de otras herramientas/librerías complementarias que ayuden a filtrar la imagen a procesar, como OpenCV, con el fin de lograr un mejor resultado en la obtención de información y evitar en lo mínimo el ruido que se puede generar con imágenes borrosas o de no muy alta calidad.
El texto obtenido de la imagen de un producto será analizada y se obtendrá información de utilidad que luego será almacenada y posiblemente enviada de regreso a quién hizo la petición para mostrar un extracto de datos con algún sentido informativo como mostrar la ubicación en donde el producto fue empacado, el prestigio de la marca que elabora el producto, etc.
Se creará una API para consulta de todos los datos almacenados en una BD, esto accesible mediante HTTP y su respectiva seguridad, y enviada a quién hizo la petición en forma de archivos JSON, con el fin de que sean procesados nuevamente o solo mostrarlos en alguna interfaz como dispositivo móvil mediante aplicación Android o iOS, gafas de realidad aumentada o navegadores web.
Toda la parte de backend se podría crear haciendo uso de algún framework MVC, como Ruby on Rails, Django o Laravel, con el fin de facilitar el desarrollo, mantenimiento y mejora del mismo, y todos dando buen resultado en modo producción con una escalabilidad alta en caso de ser necesario.
El aporte que me gustaría realizar es hacer de esto una herramienta o módulo de código libre, que sea fácil de personalizar y adaptar a cualquier otro proyecto con fines parecidos, además de optimizar el tiempo de procesamiento para evitar demoras altas, así como enfocarse en un bajo coste de transferencia de datos entre el servidor y la aplicación que solicita información.
Exploración de trabajos relacionados a mi Tesis
Se hizo una búsqueda de trabajos relacionados a mi propuesta de tesis y encontré algunos proyectos/servicios que ya dan en parte una solución para el reconocimiento de texto.
Los primeros dos son servicios que permiten integrar el reconocimiento de texto a tus proyectos, tienen buen soporte de lenguajes de programación, pero no son totalmente libres ya que es necesario comprar un plan o ajustarse al plan libre pero limitado.
Los otros dos son servicios en línea que no tienen opciones para el desarrollador, y solo son una fuente de consulta en línea.
Prueba del módulo python
Para realizar la prueba de extracción de texto en una imagen se instaló una herramienta para reconocimiento óptico de caracteres llamada
tesseract-ocr disponible desde este sitio:
tesseract-ocr.
Haciendo uso del módulo
Pytesser se realizó una prueba de la utilidad de esta herramienta. Se creo un pequeño programa que recibe una imagen como entrada y usando los métodos ofrecidos por el módulo de python, se observó el resultado generado por el reconocimiento de texto.
En una de las pruebas se uso la siguiente imagen.
Esta imagen generó el resultado mostrado a continuación. Y como se puede apreciar existe algo de ruido en la obtención de texto, pero la parte principal, donde se encuentra la información de valor, fue rescatada correctamente.
c..\R.\N Y CA N" L lxmnmx mu \t‘\_)ll|\\\ «iv In x .-ululmi «iv
% muwum pt mm: (Us tune as nu quedd
sntnstmluo, Wal Mm! de Mmucu Iv
devuolvo N 100% de su dlne!‘0.
HECHO PARA: Nueva Wal-Mart de México, S. de R.L.
de CV. R.F.C. NWM-970924-4W4 ® Marca registrada
propiedad de Wal-Mart Stores, Inc. 702 SW. 8th
Street, 72716-8095 Bentonville, Arkansas, U.S.A.
LICENCIADA A: Wa|—Mart de México, S.A.B. de CV.
USADA BAJO SUBLICENCIA POR: Nueva Wal-Marl: de
México, S. de R.L. de C.V., Nextengo No. 78, Col. Santa
Cruz Acayucan, Del. Azcapotzalco, México, [).F., C.jP,
HECHO EN MEXICO.
Este programa se irá mejorando usando otras técnicas de visión computacional, con el fin de eliminar el ruido que se puede generar en la imagen, y recuperar el texto sin problema alguno.
Tareas por hacer:
- Concretar el problema a resolver con mi tesis.
- Seguir alguna guía de estilo para LaTeX.