febrero 18, 2022 10:00 am

Jesús

Otra de las poderosas aplicaciones que podemos explotar una vez contamos con el texto de una imagen, es la de corregir automáticamente los errores ortográficos presentes en él.

Este es un paso muy importante, ya que, afrontémoslo, las posibilidades de escanear a la perfección un pedazo de texto son, en el mejor de los casos, remotas.

Es a través de múltiples etapas e iteraciones de pre y pos procesamiento que podemos, eventualmente, arribar a un resultado de alta calidad.

Así, pues, en este post nos centraremos en combinar los poderes de Tesseract y TextBlob una vez más para crear un “spellchecker” o autocorrector de texto.

Al final de este artículo sabrás:

  • Cómo usar Tesseract y TextBlob para autocorrección del texto proveniente de una imagen.

¡Empecemos!

Creación del Entorno de Desarrollo con Anaconda

Esta es la estructura del proyecto:

Acorde a la imagen anterior, el único archivo ejecutable es spellcheck.py, ubicado en el directorio datasmarts. Es allí donde vivirá nuestra implementación.

Si deseas descargar el proyecto, puedes hacerlo en el formulario de abajo:

El siguiente paso es configurar el ambiente de Anaconda mediante este comando:

conda env create -f pytesseract-spellchecking

El ambiente que acabas de crear responde a esta configuración (pytesseract-spellchecking):

Puedes activar el ambiente recién creado como sigue:

conda activate pytesseract-spellchecking

Prosigamos.

Corrección de Texto con Tesseract y TextBlob

Abre el archivo datasmarts/spellcheck.py, e inserta estas líneas para importar las dependencias del programa:

Para que TextBlob funcione adecuadamente, tenemos que descargar los modelos y demás datos suplementarios de los que depende:

Si estás trabajando en Windows, es posible que tengas que añadir esta línea para que el script funcione:

Evidentemente, cambia la ruta para que apunte a la ubicación del ejecutable tesseract.exe en tu máquina. 

Si usas Ubuntu/Debian o macOS, puedes ignorar este paso.

Definimos el menú del programa, compuesto solamente por el parámetro -i/--image, la ruta a la imagen de entrada:

Cargamos la imagen y la desplegamos en pantalla:

A continuación, transformamos la imagen de BGR a RGB, puesto que Tesseract espera este último formato:

Usamos la función pytesseract.image_to_string() para extraer el texto de la imagen:

Imprimimos el texto en la consola antes de pasarlo por el corrector:

Ahora sí, para corregir el texto, primero debemos instanciar un objeto de tipo TextBlob(), pasándole dicho texto al constructor. Luego, llamamos el método correct():

Mostramos el texto corregido:

Cerramos las ventanas creadas durante la ejecución del script:

¡ATENTO!

Antes de ejecutar el código, asegúrate de hallarte en la raíz del proyecto para que los comandos funcionen correctamente.

Para correr el código, introduce este comando en tu consola:

python datasmarts/spellcheck.py -i image.png

En principio, veremos esta imagen en pantalla:

En ella nos percatamos de que las palabras clerly, misspelld y yu están mal escritas. 

En la consola veremos el texto escaneado por Tesseract:
Texto ANTES del autocorrector
this ts clerly
misspelld

are yu ok

En líneas generales, lo hizo bien, aunque confundió la palabra is con ts, que, de hecho, no es una palabra válida.

Ahora, veremos el texto corregido por TextBlob:
CORREGIDO
this to clearly
misspelled

are you ok

Un resultado grandioso: clerly fue reemplazado por clearly, misspelld por misspelled, y yu por you.

Curiosamente, TextBlob también reemplazó ts por to, lo cual tiene sentido, puesto que sería la palabra válida más cercana, aunque como sabemos, el error inicial lo cometió Tesseract OCR.

Resumen

Hoy hemos aprendido a combinar, una vez más, el poder de computer vision con el de NLP, particularmente en lo tocante al procesamiento de texto.

De forma más específica, empezamos utilizando OCR para, como viene siendo la norma en los últimos artículo, extraer el texto presente en una imagen digital.

No obstante, convertir píxeles a texto es un proceso propenso a errores, por lo que el siguiente paso lógico sería corregir los prácticamente inevitables errores gramaticales y ortográficos derivados del escaneado.

Pero OCR no tiene manera de corregir texto, ¿a qué herramienta acudimos?

TextBlob, la cual incluye algoritmos, heurísticas y el conocimiento necesario para lidiar con un amplio abanico de errores ortográficos comunes.

En este punto es necesario mencionar que, siendo OCR el primer eslabón en la cadena, tenemos que hacer todo lo posible para que el texto escaneado por Tesseract sea de la mayor calidad possible, ya que la efectividad y utilidad de los procesos subsiguientes (traducción, corrección, análisis, etc) depende 100% de ello.

No olvides descargar el proyecto asociado a este artículo en el formulario siguiente:

¡Hasta la próxima!

Sobre el Autor

Jesús Martínez es el creador de DataSmarts, un lugar para los apasionados por computer vision y machine learning. Cuando no se encuentra bloggeando, jugando con algún algoritmo o trabajando en un proyecto (muy) cool, disfruta escuchar a The Beatles, leer o viajar por carretera.