Aprenda a reconocer correctamente el texto de una imagen con tesseract y ocrfeeder.

Muchos de ustedes ya deben conocer los programas de reconocimiento óptico de caracteres (OCR), si es así se han topado con algunos que no reconocen caracteres propios del idioma español como la eñe, la tílde entre otros (ñ,ó,ü).

Ahora gracias a tesseract y al paquete tesseract-ocr-spa podremos reconocer dichos caracteres y veremos como tratar ciertas imágenes donde los niveles de color o píxeles no son los correctos.

Primer deberemos instalar los siguientes programas:

tesseract-ocr
tesseract-ocr-spa
ocrfeeder

En Debian les aconsejo instalarlos sin instalar los softwares recomendados:

sudo apt-get --no-install-recommends install ocrfeeder tesseract-ocr-spa tesseract-ocr

Si contamos con una imagen (Documento escaneado) en el cual la letra sea legible sera posible reconocer el texto en un 90% aproximadamente de los casos, las tablas no serán reconocidas, si la imagen tiene 2 columnas este automáticamente reconocerá primero una columna y luego la otra para mantener el orden del texto.

Existen 2 formas de reconocer el texto, una mediante la línea de comandos en una terminal o mediante ocrfeeder, esta última requerirá más tiempo de procesado:

Método de línea de comandos:

tesseract "/entrada/fichero.jpg" "/salida/fichero.txt" -l spa -psm 3

Para la conversión de múltiples imágenes usaremos el siguiente comando:

cd /carpeta/imagenes
find ./ -name "*.jpg" | sort | while read file; do tesseract "$file" "`basename "$file" | sed 's/\.[[:alnum:]]*$//'`.txt" -l spa -psm 3; done

Para unir los ficheros de texto resultantes en dicha carpeta usaremos el siguiente comando con el cual los párrafos quedaran unidos correctamente.

cd /carpeta/imagenes
find ./ -name "*.txt" | sort | while read file; do cat "$file" | sed 's|^$|##|g' | tr '\n' " " | tr '##' "\n" >> Texto-unido.txt; done

Método con ocrfeeder:
1- Abrimos el programa ocrfeeder.
2- Editamos el motor dando un clic en Herramientas – Motores OCR, seleccionamos el motor esseract y damos un clic en editar, y donde dice argumentos del motor cambiamos la secuencia de comandos por esta:

$IMAGE $FILE -l spa -psm 3 > /dev/null 2> /dev/null; cat $FILE.txt; rm $FILE $FILE.txt

3- Importamos una imagen o una carpeta donde se encuentren varias imágenes.
4- Damos un clic en identificar documento, una vez identificado el documento se puede seleccionar manualmente que partes de este serán imágenes o texto.
5- Antes de exportar el documento damos un clic en Editar – Editar pagina, seleccionamos la pagina deseada, la más usual es carta (letter).
6- Para exportar el documento damos un clic en Archivo – Exportar, seleccionamos el formato de salida deseado, si el documento tiene imágenes les aconsejo usar el formato odt o html, si es solo texto lo mejor es usar el formato Texto Plano (txt).

Esto no acaba aquí porque existen muchas fotocopias cuya calidad no es la adecuada, para reparar estas usaremos el gimp y el filtro repujado (Este proceso puede ser lento):
1- Abrimos la imagen con el gimp.
2- Damos un clic en Filtros – Distorsiones – Repujado, Seleccionamos la casilla mapa de relieve ajustamos los niveles de azimut a 162,25 aproximadamente, elevación a 88,73 y profundidad en 6 o 3. Guardamos la imagen con un 100% de calidad si es jpg, en exportar – nombre.jpg.

Opcionalmente pueden ajustar los niveles de blanco dando un clic en Colores – Niveles – auto.