Script en Python 3 para reconocer texto de una imagen o una pantalla

El objetivo de este tutorial es la creación de varios scripts para la automatización de tareas a través de reconocimiento de texto por pantalla o en una imagen utilizando Python3.

Podéis descargar el repositorio con el código de ejemplo del tutorial en la url https://github.com/al118345/Ejemplo_bot_python/blob/main/ejemplo_lectura_texto_en_imagen.py y consultar el artículo https://1938.com.es/bot-click-imagen

Instalación.

Para instalar este proyecto lo único que necesitarás es tener las librería pytesseract y PIL en tu entorno. Para ello puedes utilizar el comando comando:

Es posible que os toque instalar algún idioma en especial, por si acaso, os dejo los comandos para mac y ubuntu:

Ejemplo. Mostrar el texto que contiene una imagen por pantalla.

El siguiente código simplemente muestra por terminal el texto que contiene una imagen.

Básicamente, tenemos una primera parte que es cargar la imagen a través de la librería de PIL.

Una vez cargada, simplemente utilizamos pytesseract para leer la imagen y obtener su texto.

Ejemplo. Mostrar el texto que contiene una parte de la pantalla

Este código es muy parecido al anterior, simplemente hay que obtener la porción de pantalla que quieres consultar con ImageGrab de PIL y las coordenadas del rectángulo consultado.

Una vez obtenido, obtenemos el texto de las coordenadas seleccionadas.

Como mejorar la precision del OCR

Tesseract funciona mucho mejor cuando la imagen de entrada esta limpia. Antes de enviar la imagen al OCR, recorta solo la zona util, aumenta el contraste, evita fuentes muy pequeñas y elimina ruido visual cuando sea posible. Si el origen es una captura, normalmente es mas fiable procesar un rectangulo pequeño que toda la pantalla.

La seleccion de idioma tambien importa. El parametro lang debe coincidir con el texto esperado. Para texto en castellano instala y usa spa; para ingles, eng. Las capturas con varios idiomas pueden funcionar, pero suelen producir mas errores y conviene probarlas con ejemplos reales.

Cuando OCR no es la herramienta adecuada

Si el texto esta disponible en HTML, JSON, CSV o una respuesta de API, es mejor leer esa fuente directamente. El OCR tiene sentido cuando el texto solo existe como pixeles: capturas, documentos escaneados, ventanas de software legado o imagenes generadas por otro sistema.

En flujos de automatizacion, OCR encaja bien con la deteccion de imagenes por pantalla. Puedes localizar primero una zona y despues leer el texto que contiene, pero manten una validacion manual si el resultado va a activar pagos, mensajes o acciones irreversibles.

En proyectos reales, guarda algunas capturas fallidas y revisalas antes de cambiar el script. La mayoria de errores de OCR vienen de la calidad de entrada, no del wrapper de Python, asi que un pequeño conjunto de pruebas suele valer mas que añadir muchas condiciones.

Pipeline OCR recomendado

Un flujo OCR fiable suele tener cuatro pasos. Primero, capturar la zona mas pequeña que contiene el texto. Segundo, normalizar la imagen: redimensionar si la fuente es pequeña, pasar a escala de grises y aumentar contraste cuando el texto se mezcla con el fondo. Tercero, ejecutar Tesseract con el idioma y el modo de segmentacion adecuados. Por ultimo, validar el resultado antes de usarlo en otra accion automatizada.

Esa validacion final es importante en bots. El OCR puede devolver acentos perdidos, caracteres confundidos o saltos de linea inesperados. Si el valor extraido va a usarse para hacer click, enviar un mensaje o actualizar un registro, añade una comprobacion de confianza o una revision manual.

Errores comunes y depuracion

  • Una salida vacia suele indicar que el recorte es incorrecto o que el texto es demasiado pequeño.
  • Caracteres incorrectos apuntan a problemas de contraste, paquete de idioma o fuente.
  • Una ejecucion lenta normalmente aparece al enviar imagenes mas grandes de lo necesario.
  • Diferencias entre equipos pueden venir de versiones distintas de Tesseract o idiomas no instalados.

Para un flujo completo de automatizacion, combina este articulo con el bot de clicks por imagen en Python y el ejemplo de automatizacion con teclado y raton. OCR lee la pantalla; esos tutoriales explican como actuar sobre el resultado.

Mantén el paso OCR observable: guarda el recorte, el idioma detectado y la salida cruda durante las pruebas, para poder rastrear cada decision incorrecta hasta la imagen exacta que la produjo.

Podéis descargar el repositorio con el código de ejemplo del tutorial en la url https://github.com/al118345/Ejemplo_bot_python/blob/main/ejemplo_lectura_texto_en_imagen.py y consultar el siguiente video con la explicación del script: