30 de enero de 2014

Hipótesis y Objetivo

Investigación
Semana 2

La segunda reunión con mi asesora de tesis la llevé a cabo el 17 de Enero del 2014 desde el Starbucks sucursal Anáhuac donde recibí retroalimentación de los avances generados para la primer semana. Hubo sugerencias y correcciones por hacer en el documento de mi tesis, tal como cambiar los títulos en algunas de mis secciones, ser consistente con el uso de mayúsculas en los títulos, entre otras cosas.

Hipótesis

En lo que respecta a la segunda semana en la creación de mi tesis, se inició con las posibles hipótesis de las cuáles habrá que elegir alguna para determinar el camino a seguir en el desarrollo del proyecto. Se me pidió que antes de iniciar a escribir mi propia hipótesis leyera algunas cuantas hipótesis de otras personas, para conocer como otros redactan su hipótesis.

Entre las tesis en donde revise algunas hipótesis fueron de los alumnos anteriormente asesorados por Elisa Schaeffer. La razón por la cuál estas hipótesis me parecieron adecuadas fue debido a que estas están relacionadas a dar solución a un problema relacionado con el software.

En forma muy general lo que se redacta en la hipótesis está basado en la formación de una pregunta que se puede responder como un si o no. Es decir, se redacta el estado actual en que se encuentra alguna solución a un problema y se plantea un método con el que es posible hacer alguna mejora a lo ya existente, el cual en el resto de la tesis nos encargaremos de determinar si la solución se puede dar o no.

Las hipótesis que yo planteo para mi tesis son las siguientes, la marcada en negritas es la que más me gusta a mi, y las otras son también alternativas.
  • Es posible mediante el uso de técnicas de visión computacional procesar la información de la etiqueta de un producto, por ejemplo una caja de cereal o algún producto de limpieza, con el fin de ayudar a la persona a tomar decisiones inteligentes que apoyen en la selección de productos nutritivos y ecológicos.
  • Con ayuda del procesamiento de texto mediante visión computacional es posible ayudar a la gente a darse cuenta de si algún ingrediente esta o no presente en el producto que pretende comprar y alertar al consumidor de posibles riesgos de salud en caso de que estos ingredientes estén considerados como dañinos. Por ejemplo algunos productos de consumo diario contienen ingredientes que no todas las personas pueden asimilar bien como el caso de la Fenilalanina presente en los chicles.
  • Mediante el uso de técnicas de visión computacional es posible procesar, estructurar y analizar los textos que se encuentran en los empaques de productos en un tiempo suficientemente rápido que una persona usando un dispositivo móvil percibe como instantáneo.

Objetivo

En los objetivos siempre se escribe lo que se va a realizar y parten de la pregunta principal y de las preguntas subsecuentes se escriben los objetivos particulares.

En la reunión se me explicó que de forma general para redactar los objetivos, la oración se debe iniciar con un verbo que implique la acción que se desprende de cada una de las preguntas.

Objetivo general
En mi caso particular escribí algunos objetivos que independientemente de la hipótesis que se decida tomar son aplicables al desarrollo de mi proyecto.
  • Desarrollar una herramienta de software para reconocimiento de texto haciendo uso de un módulo de reconocimiento óptico de caracteres mejorado con técnicas de visión computacional y que esta herramienta este disponible mediante una interfaz de programación de aplicaciones a través de un servicio web.
  • Proporcionar una interfaz de programación de aplicaciones disponible mediante peticiones a un servicio en línea que envíe la foto tomada al empaque de un producto a un servidor y esta sea procesada para estructurar la información, guardarla y regresar un resultado en un lapso tiempo que se perciba como "instantáneo".
  • Garantizar que la herramienta de software funcione sin problema alguno en cualquier ambiente de desarrollo siempre y cuando permita hacer peticiones a un servidor mediante HTTP, ya sea desde un dispositivo móvil o un navegador web.
Objetivos específicos
  • Crear un módulo para reconocimiento de texto.
  • Crear un módulo para preprocesar la imagen u aplicar filtros.
  • Crear un módulo para procesamiento de información.
  • Desarrollar una API para obtención de datos.

Aplicación de filtros para el preprocesamiento de la imagen

Esta semana instalé OpenCV para procesar la imagen con técnicas de visión computacional. El proceso de instalación me tomó tiempo debido a que era la primera vez que lo hacía en Mac OS X, y tuve problemas con la instalación con Homebrew (instalador de paquetes), por lo que decidí que todo lo que instale de módulos de Python lo haré desde MacPorts, con el cuál fue más fácil resolver problemas que tenía con el otro instalador de paquetes.

El avance en código en la semana fue el uso de OpenCV desde Python para aplicar algunos filtros a la imagen antes de intentar extraer el texto.

Se probó con la foto de una etiqueta del envase de un refresco. La siguiente imagen es la captura original.


Con esta imagen al mandarla directamente a la herramienta para procesar el texto se obtenía lo siguiente.

’ , . 1"» ‘
: LN Avg .. . .......- .a., _
mo EN msxnco won maorsunoonts
AUTOMZADOS BAJO ucsucm as mswo, mc.
vuacmsz. u.v. szsrousnsu as msmcacrou
PEPSI-COLA MEXICANA, 8. DE R.L DE C.V.. BDSOUE DE
DURAZNOS N0. 67 P150 7, 001.. BOSOUES DE LAS
mmxs, DELEGACION MIGUEL HIDALGU, on moo.
M mace, D.F.
meaenesmtszAcuncnnpounmon.AzocAnss(Al00f;*
vm JARABE as MAIZ), cnnmvmo gmsc .
D0rEnvase7,5.Cantidad urPorcidn.Conten' .
9? Ca‘ (391 kJ); Proteinag 0 0i “'35-” 031:3: 23 a 0‘ "" F00“
Grasa Saturada 0 g~ Carhuhidratos ouspvflgadgo 27 ma {)5
L cualesz Azincares 23”g; Fihra Dietética 0 9«
Como se puede notar el resultado obtenido no es muy bueno, si existe información relevante, pero no la suficiente para hacer un análisis de la misma. Después se probó con aplicar filtros a la imagen antes de pasarla con el módulo de procesamiento de texto y la imagen obtenida con filtros es la siguiente.


Al aplicar el reconocimiento de texto se obtuvo lo siguiente.

nscuo EN Méxuco P08 smaommnonzs
AUTORIZADOS we ucemzm or PEPSICO, ma.
PURCHASE, N.Y. RESPONSABLE DE FABRICACION
PEPSI-COLA MEXICANA. 3. DE Bl. DE C.V.. BDSOUE DE
DURAZNOS N0. 67 PISO 7, COL BOSOUES DE LAS
LQMAS, oaeenmim MIGUEL mouse. on moo.
105 mexsco. o.r.
\NGREDlENTES:AGUACARBONATADA,AZUCARESWUW
Y/0 JARABE DE MAiZ), CARAMELO CLASE
coucmranno PEPSI-COLA. ® PEPSI, PEPSI-COLA YDE
LOGOTIPO ms: sou wumcns nscnsrnaoxzrsw
PEPSH30, mc. consumo PREFERENTE v L%7%E?BESC0.
cumo on ENVASE. coussm/sss EN L
CUKDA EL AMBIENTE RECICLA EL ENVASE .
‘ pomones
‘NFORMACION NUTRIMENTAL: Porcidn 200 EneygétiC0
[ Der Envase 7,5. Cantidad por Porcidn: Cont?!“
' 92 C3‘ (391 kJ); Proteinas 0 g: 033,35 0W;
V Grasa Saturada 0 g; Carbuhidratos DISD0,"'5oaio 27 m9 ea;
Wales: Azucares23 g; Fihra Dietética09~ T _ , ”
{5} 21”‘) <
Lmea . D.F.: 5281 2981 V 5 2004
pegs‘ Interior: 01  !“V'N
Como se puede ver, esta vez es posible recuperar más información que antes, no es perfecta pero hay más información entendible con respecto a la prueba anterior.

Se seguirá mejorando el preprocesamiento con el fin que sea posible crear un módulo que se encargue de aplicar los filtros correctos a la imagen antes de mandarla a la extracción de texto.

Los cambios están en el repositorio.

Fuentes consultadas:
OpenCV - Python

13 de enero de 2014

Planteamiento del Tema y Preparación de la Plantilla

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.