Pues … me he quedado gratamente sorprendido de lo fácil que es hacer el reconocimiento óptico de caracteres en Python, siempre que tengas instaladas las herramientas necesarias.
Todo vino porque recibí un WhatsApp con el menú del comedor del cole, y pensé si tal vez no podía analizar …. qué le ponen de comer a los chavales! De momento, vamos con el tratamiento de imágenes y el reconocimiento de caracteres.
Antes de seguir, te animo a que apoyes a este blog con una donación para seguir escribiendo buen contenido!
Preparando las herramientas
Antes de nada, comentar que este pequeño manual es específico para Python 2.x. La verdad es que nada cómo una pequeña búsqueda para que te indiquen el camino. El caso es que la página que me dio las pistas fue esta: http://fosshelp.blogspot.com.es/2013/04/how-to-convert-jpg-to-tiff-for-ocr-with.html. Lo primero es instalar PIL, que es una librería para trabajar con imágenes. En el caso de que trabajes con Anaconda, mi caso, no hace falta que instales nada, pues … es una de los paquetes incluidos en la distribución.
Cómo podéis comprobar, se importa correctamente y sin fallos (si necesitas instalar PIL, aquí tienes una entrada anterior de cómo instalar paquetes en Python). Así que, lo siguiente es descargar e instalar tesseract-ocr.
Le damos a siguiente, y en uno de los pasos, se descarga los elementos que necesita:
Y llegamos al final:
El tercer paso es descargar la librería PyTesser (https://code.google.com/p/pytesser/downloads/detail?name=pytesser_v0.0.1.zip&can=2&q=), que es la que permite trabajar a Tesser desde Python. El fichero se descomprime en el mismo directorio donde guardaremos nuestro código.
Probando OCR con una imagen
Ya solo falta el disponer de la imagen, y aplicar el siguiente código:
from PIL import Image from pytesser import * image_file = 'menu.tif' im = Image.open(image_file) text = image_to_string(im) text = image_file_to_string(image_file) text = image_file_to_string(image_file, graceful_errors=True) print "=====output=======\n" print textConcretamente, menu.tif es la imagen de la que quiero extraer la información.
Cómo podéis ver, el reto se plantea difícil. Y este es el resultado:
Pues … sencillamente, funciona, si bien la imagen no era la mejor para trabajar.
Comprobando que funciona
Si queréis comprobar lo bien que funciona este código, no tenéis sino que cambiar el nombre de la imagen por la que incluye PyTesser de ejemplo, y veréis que lo hace perfecto!
y el resultado es:
En fin, espero que os sirva, y se te ha servido, puedes donar para el mantenimiento de este blog!!
De momento, para analizar la comida del comedor del cole necesito, bien mejorar las fotos del menú, o bien usar otro método. Pero … te lo cuento otro día!