28 de febrero de 2014

Diseño de la Solución Propuesta

Investigación
Semana 6

La sexta reunión con mi asesora de tesis la lleve a cabo en línea el 21 de Febrero del 2014 donde se dio revisión a mi avance de tesis de acuerdo a lo contemplado para la semana, se pidieron hacer correcciones en el documento de la tesis, se pidió completar los primeros capítulos por completo, y por último se explicó de forma general lo que había que hacer para esta semana.

Tareas realizadas

De forma general las tareas realizadas fueron las que se listan a continuación:
  • Corrección de errores.
  • Se cambio el diseño de la matriz de características.
  • Agregar más contenido a algunos párrafos.
  • Terminar los primeros capítulos.
  • Redactar la autobiografía.
  • Proponer la metodología.
  • Estructurar el contenido que se hará para la solución propuesta
  • Avance de código en el pre-procesamiento de la imagen.

Metodología y solución propuesta

En el capítulo de solución propuesta se agregará todo lo que contribuimos. En forma general se explica qué y cómo hicimos el proyecto. Algunas secciones pueden ser:
  • El diseño para la interfaz de usuario.
  • El diseño de la arquitectura.
  • La implementación de algoritmos.
  • Especificaciones.
  • Casos de uso.
  • Características, funcionalidades y módulos.
En el capítulo de metodología se incluyen una explicación de como se hace lo que haremos en términos de fases y técnicas. Se agregan secciones como:
  • La planeación del proyecto.
  • La selección de herramientas.
  • Las fases de desarrollo.
  • Requisitos del sistema.
Para esta semana la tarea asignada fue comenzar la estructura de estos capítulos, y comenzar la redacción en caso de ser posible.

Mejora del pre-procesamiento de la imagen

Se realizaron cambios en el módulo encargado de procesar la imagen antes de pasarlo al módulo de reconocimiento de texto.

En esta ocasión se tomó la siguiente imagen como muestra y se probó la nueva secuencia de filtros para conocer el resultado. Como se puede ver en esta imagen original, el texto es menos visible que en ejemplos usados anteriormente, lo cual dificulta mucho el reconocimiento de texto ya que se pierde con el color de fondo.


En este caso usando binarización invertida se logró el siguiente resultado.

memories:research ramongonzalez$ python improvement.py

Tesseract Open Source OCR Engine v3.02.02 with Leptonica
RESPONSABLE DE LA FABRICACION: UNILEVER DE MEXICO, 3.
P: E2: DL cv. IEPALCAPA ND. 2. COL. RANCHO STO. DOMINGO,
mg‘: AN. EDO. DE MEXICO. C.P. 54900. HECHO EN MEXICO.

:mWD=.uxDLw v DISTRIBUIDO POR UNILEVER DE CENTROAMERLCA,
SA, EN GUATEMALA, 24 AVENIDA CALZADA ATANASIO TZUL
356?. ZONA 12 , REG. D.G.R.V.C.S.-D.R.C.A. A-40091; EL
SALVADOR, BLVD. DEL EJERCITO NAC. KM 3 1/2, SAN

SWADOR, RLEG.19849D.G.S.; HONDURAS, ANILLO PERLEERLCD.
TEGUCIGALPA, REGRSA; NICARAGUA CARRETERA NUEVA A LEON
  KM 10 1/2, MANAGUA. REG. No.; COSTA RLCA, DEL CRUCEDE I
1 SAN ANTONIO DE BELEN, 400 m OE _  800 g.- E
L LEREDLA, REGLSIRD SANDADLD     L   ,  

:1-:“:¢\:.;¥€9‘

memories:research ramongonzalez$
También inicié con pruebas para aplicar otra buena práctica para el pre-procesamiento de la imagen, que es recortar la imagen dejando únicamente el área donde se tiene texto, pero para esto primero se necesita conocer donde recortar. Entonces usando detección de líneas podemos encontrar zonas donde debería de haber texto.

El resultado en la misma imagen fue el siguiente, y como podemos ver el trazo de las líneas verdes coinciden con la ubicación de líneas de texto.


Después de esto faltará crear un cuadro delimitador que encierre sólo el texto, recortarlo y probar nuevamente con el reconocimiento de texto.

Avances para la siguiente semana

  • Implementación de la solución propuesta.
  • Hacer cambios sugeridas a la tesis.
  • Implementar el modelo de la base de datos.

21 de febrero de 2014

Resumen de Trabajos Relacionados Relevantes

Investigación
Semana 5

La quinta reunión con mi asesora de tesis la lleve a cabo en línea el 14 de Febrero del 2014 donde se dio revisión a mi avance de tesis de acuerdo a lo contemplado para la semana, se sugirieron algunas modificaciones para los archivos de LaTeX, se sugirió tratar de completar los primeros capítulos por completo, y por último se explicó de forma general la tarea con que habría de cumplir para esta semana.

Tareas realizadas

De forma general las tareas realizadas fueron las que se listan a continuación:
  • Corrección de errores en el documento de tesis.
  • Creación de una matriz comparativa de características con los trabajos relacionados.
  • Explicación breve de estos trabajos relacionados.
  • Explicación de las características para el nuestro trabajo de tesis.
  • Avance de código en el modulo de servicio web.

Resumen de trabajos relacionados relevantes

En la sección de matriz de características dentro de mi tesis agregue los trabajos que tienen mayor similitud en ciertos aspectos en comparación con el trabajo que estoy desarrollando.

Se creó una tabla que en sus columnas muestra características de los trabajos, y por cada fila se evalúa a alguno de los trabajos relacionados relevantes.

Se marcó con una "paloma" aquellos que si cumplen con la característica, con una "cruz" los que no, y con un "asterisco" aquellos que cumplen parcialmente.

Prueba de procesamiento a través del servicio web

Como prueba de concepto se añadió un método que se encarga de ejecutar el script de python con una imagen de prueba almacenada previamente en el servidor, la cual será procesada para obtener el texto encontrado en la misma y posteriormente desplegar el resultado en la página web.


Avances para la siguiente semana

  • Diseño de la solución propuesta.
  • Terminar el contenido de los primeros capítulos.
  • Crear diccionario de palabras y evaluar el porcentaje de texto recuperado en comparación con el original.

14 de febrero de 2014

Búsqueda y Clasificación de Trabajos Relacionados

Investigación
Semana 4

La cuarta reunión con mi asesora de tesis la lleve a cabo en línea el 7 de Febrero del 2014 donde se dio revisión a mi avance de tesis de acuerdo a lo contemplado para la semana, se sugirieron algunas modificaciones para los archivos de LaTeX, hubo algunos consejos generales en cuanto a la extensión que deben de llevar los textos a lo largo de todo el trabajo de tesis, y por último se explicó de forma general la tarea con que habría de cumplir para esta semana.

Tareas realizadas

De forma general las tareas realizadas fueron las que se listan a continuación:
  • Corrección de errores en el documento de tesis.
  • Búsqueda de trabajos relacionados con mi tesis.
  • Explicación de cada trabajo relacionado encontrado con su respectiva cita.
  • Avance de código para el modulo de servicio web.

Búsqueda de trabajos relacionados

En la sección de trabajos relacionados dentro de mi tesis agregue los trabajos encontrados divididos en algunas subsecciones de acuerdo a la temática de cada uno. Para la búsqueda de trabajos relacionados utilice algunos buscadores/servicios como Google Scholar, ACM Digital Library, ScienceDirect, IEEE Xplore y Springer Link donde encontré gran cantidad de información de artículos y algunos libros, de los cuales algunos es posible la descarga de forma gratuita, pero esto depende de la red a donde estés conectado, por ejemplo dentro la red de la universidad es posible acceder de forma gratuita a muchos de los mismos, cumpliendo la condición de que los mismos sean para uso personal y con fines de investigación.

Para lograr encontrar los trabajos relacionados fue necesario hacer búsquedas con palabras claves, las cuales pudieran arrojar un buen listado de artículos y/o libros similares a la temática de mi tesis. Entre las palabras/frases que usé para esta búsqueda se encuentran las siguientes:
  • ocr
  • text recognition
  • image processing for text recognition
  • analysis of text information
  • information analysis
  • text analysis
Encontré un total de 15 trabajos relacionados, veamos algunos de estos:
  • Data Management And Analysis Methods
    Gery W. Ryan and H. Russell Bernard
  • A method for text localization and recognition in real-world images
    Lukas Neumann and Jiri Matas
  • Untangling Text Data Mining
    Marti A. Hearst
  • Speech and Text-Image Processing in Documents
    Marcia A. Bush
  • Robust Pre-processing Techniques for OCR Applications on Mobile Devices
    Loh Zhi Chang
  • Language-support System Using Character Recognition
    Kikuo Asai
  • Effective Text Extraction and Recognition for WWW Images
    Jun Sun
  • Information Retrieval and OCR: From Converting Content to Grasping Meaning
    Jamie Callan
Para cada uno de los anteriores y de los faltantes en esta lista, se escribió una pequeña explicación de que temática abordan y por qué estos están relacionados a mi trabajo.

Creación de una API para obtención de datos

Usando el framework Ruby on Rails cree una API sencilla que se encarga de recuperar datos almacenados en una base de datos, y los devuelve en formato JSON.

En pocas palabras para esta API se hace llamar a una URL, tal y como se puede hacer con AJAX de Javascript desde el navegador, y esta regresa como contenido información estructurada en su formato JSON, el cual después puede ser utilizado para un posterior procesamiento o simplemente mostrar esta información por algún medio.

La siguiente imagen muestra como se ve el resultado para la consulta de un producto con el ID 2.


Cuando se intenta consultar una URL de un producto el cual no existe en la base de datos se muestra un mensaje de error.


También se puede acceder a toda la lista de productos de una sola vez.


Los datos fueron agregados para la prueba por medio de formularios básicos. Se muestra la vista web donde esta el listado de los productos y las opciones de eliminar, editar y visualizar.


Avances para la siguiente semana

  • Resumen de trabajos relacionados relevantes.
  • Corrección de errores y avance de más textos dentro de la tesis.
  • Mejorar la detección de texto en imágenes siguiendo las sugerencias proporcionadas por la comunidad de OCR.

7 de febrero de 2014

Identificación y Estructuración de Antecedentes

Investigación
Semana 3

La tercera reunión con mi asesora de tesis la lleve a cabo el 30 de Enero del 2014 desde el CIIDIT donde se dio la revisión al trabajo realizado en la semana anterior, así como explicación de las tareas generales a realizar para la semana tres. Nuevamente hubo sugerencias y correcciones por hacer en el documento de mi tesis, esta vez se mencionó todo lo necesario en cuanto código de LaTeX que había que agregar para poder continuar con el capítulo de antecedentes.

Tareas generales realizadas

  • Fue necesario cambiar a quién estaba contemplado como coasesor de tesis debido a que esta persona era externa a la facultad, y decidí colocar como un revisor más a la Dra. Sara Elena Garza Villarreal, quién forma parte del grupo de investigadores involucrados en el proyecto de toma de decisiones ecológicas, en el cual participo de manera voluntaria.
  • Se agregaron dos comandos para aplicar colores a ciertos textos en el documento de LaTeX con el fin de resaltar aquellos contenidos que están pendientes de revisión o que aún se trabaja en corregir algunos textos.
  • El orden de algunas secciones dentro de los capítulos fueron cambiados, con el fin de que todo lleve una secuencia lógica y entendible, como el caso de la introducción donde ahora los motivos y justificación serán mencionados antes de iniciar con la hipótesis y objetivos del proyecto.
  • Se añadieron los archivos necesarios y faltantes para la inclusión de la bibliografía al final del documento.
  • También se hizo una reestructuración más "limpia" de la carpeta con todos los contenidos, ya que eran muchos archivos que se mezclaban con los autogenerados por LaTeX.
  • Se creó un script de bash simple para automatizar la generación del pdf de salida, ya que siempre había que ejecutar los mismos comandos una y otra vez cada que se quería ver el resultado.

Identificación de antecedentes

Para el capítulo de antecedentes se buscaron aquellos temas y conceptos de los cuales hay que tener conocimiento previo para lograr entender completamente que es lo que se esta realizando y desarrollando junto con el trabajo de tesis.

Debido a que hay que contemplar todo aquello que puede no ser de conocimiento general, se listaron algunos conceptos y definiciones de palabras que seguramente todo aquel que esta involucrado con temas de tecnología y desarrollo de software son de uso cotidiano.

Entre algunos de los conceptos que incluí fueron pixel, resolución y filtro, que si bien parecen muy simples, es necesario definirlos para evitar confusión al lector.

Módulo básico para análisis de información

En cuanto a código esta semana trabajé en un módulo encargado únicamente de procesar información básica que se puede encontrar en la etiqueta o empaque de un producto. Entre la información clave será necesario identificar:
  • Lugar de origen.
  • Empresa quien elabora el producto.
  • Información de contacto.
  • Información nutrimental/ingredientes o material con que se fabrica.
  • Información que previene al consumidor de cierta acción o uso del producto.
  • Etcétera.

Por el momento hice pruebas para detección de lugar en base a un diccionario de lugares conocidos.

También se hizo una prueba para reconocer si un texto parece ser positivo o negativo, con el fin de estar preparados en su momento para un módulo que busque tuits relacionados al uso de un producto y conocer si la impresión es positiva o negativa.

El programa tiene incluido una serie de lineas de texto con la información a analizar.
fragments = [
    "Nueva Wal-Mart de Mexico",
    "PEPSI-COLA",
    "COCA-COLA",
    "Smart product",
    "Tastes horrible",
    "the 28th of december",
    "the ticket is 212-323-1239",
    "from Mexico",
    "number 1 800 567-4321",
    "costs $23 per person",
    "website http://theevent.com",
    "some comments at #coolevent",
    "David david32@gmail.com"
]
La ejecución de prueba resulto como se ve a continuación.
memories:research ramongonzalez$ python language_processor.py 
mexico is a known place
<<Nueva Wal-Mart de Mexico>> contains a place
****************************
smart is positive word
so <<Smart product>> is a positive text
****************************
horribleis negative word
so <<Tastes horrible>> is a negative text
****************************
mexico is a known place
<<from Mexico>> contains a place
****************************
<<some comments at #coolevent>> has a hashtag
****************************
memories:research ramongonzalez$
Para tener una idea de a donde se puede llegar con la implementación de este módulo, analicé el funcionamiento de esta herramienta creada en Javascript, que es un acercamiento a un procesador de lenguaje natural, el cual identifica información proveniente de un texto.

Esta herramienta se encuentra disponible en Knwl.js.

La meta será llegar a tener algo muy parecido implementado en Python. Mientras tanto el código implementado se encuentra en el repositorio.

Trabajo por realizar

  • Mejorar los textos redactados hasta el momento y ampliar algunos contenidos.
  • Continuar con el escrito de los antecedentes en donde solo se mencionó la referencia bibliográfica.
  • Iniciar con la creación del modelo encargado de la escritura en una base de datos.
  • Prueba de una API sencilla de donde se pueda consultar información almacenada en el servidor.
  • Investigar sobre proyectos y trabajos relacionados.