Bot en python3, cómo conseguir que tu ordenador reconozca imágenes por pantalla.

El objetivo de este tutorial es continuar el proyecto https ://1938.com.es/bot-click-python y unificar la automatización de tareas a través de clicks con la búsqueda de imágenes por pantalla en Python 3.

Podéis descargar el repositorio con el código de ejemplo del tutorial en la url https://github.com/al118345/Ejemplo_bot_python o el siguiente video:

Instalación.

Para instalar este proyecto lo único que necesitarás es tener la librería pynput y screen-search en tu entorno. Para ello ejecuta el siguiente comando cuando descargue el proyecto:

En caso de utilizar Linux y Python 3.7 ejecuta también el siguiente comando y te aparece un error NOTE: You must install tkinter on Linux to use MouseInfo. Run the following: sudo apt-get install python3-tk python3-dev

Otro detalle es que, si tu versión es 3.8 , la versión a instalar es python 3.8-tk. De no hacerlo, aparece un error

Buscar una imagen de la pantalla y realizar click sobre ella.

El siguiente código simplemente busca una imagen por pantalla para, una vez encontrada, presionar sobre ella.

Básicamente, tenemos un bucle infinito que, cada 150 segundos, busca la imagen en la pantalla cómo se muestra a continuación

El método para buscar por pantalla es muy sencillo, simplemente imagesearch() busca la imagen que desees. Si no la encuentra devuelve [-1,-1], en caso contrario, proporciona las coordenadas. EL método se utiliza de la siguiente forma:

Por último, presionamos en las coordenadas con la siguiente función:

Limites de fiabilidad

La automatizacion basada en imagen funciona mejor cuando la interfaz es estable: misma resolucion, mismo tema, mismo nivel de zoom y posicion predecible de la ventana. Si el boton cambia de color, si el navegador escala la pagina o si el sistema operativo usa otra densidad de pantalla, la busqueda por captura puede dejar de coincidir.

Por eso conviene entender este enfoque como una tecnica practica de automatizacion de escritorio, no como sustituto de una API real. Cuando exista una API, es preferible usarla. La deteccion por imagen tiene sentido cuando la aplicacion objetivo no ofrece un punto de integracion fiable.

Lista de seguridad

  • Anade una condicion de parada visible o una interrupcion por teclado antes de dejar el bucle ejecutandose.
  • Usa una espera razonable para evitar clicks descontrolados.
  • Prueba primero con ventanas inofensivas antes de automatizar software importante.
  • Usa capturas pequeñas y especificas para reducir falsos positivos.

Si el siguiente paso es leer texto de la pantalla, continua con el tutorial de OCR con Python y Tesseract.

Una regla util en pruebas es registrar cada coincidencia detectada con sus coordenadas y marca de tiempo. Si el bot hace click en el sitio equivocado, esos logs ayudan a saber si el problema estaba en la imagen plantilla, la escala de pantalla, la espera o el estado de la aplicacion. Conserva esos logs solo para depurar y elimina capturas sensibles cuando ya no sean necesarias.

Como hacer el bot mas mantenible

Una mejora practica consiste en separar la automatizacion en tres funciones pequenas: capturar la pantalla, decidir si la imagen objetivo esta presente y ejecutar el click. Cuando esos pasos son independientes, puedes probar la logica de reconocimiento con capturas guardadas antes de permitir que el bot mueva el raton. Eso reduce el riesgo de clicks accidentales mientras ajustas la imagen plantilla.

Tambien conviene anadir un numero maximo de intentos y un timeout. Los bucles infinitos son comodos para el primer prototipo, pero una automatizacion de produccion necesita un estado final claro: objetivo encontrado, objetivo no encontrado, usuario cancela o pantalla inesperada. Esos estados hacen los logs mas legibles y evitan que el script siga horas ejecutandose sin trabajo util.

Si la aplicacion objetivo cambia a menudo, guarda varias imagenes plantilla y pruebalas con un umbral de confianza. Una sola captura puede ser demasiado fragil cuando la interfaz tiene modo oscuro, estados hover, traducciones o diferentes configuraciones de DPI.

Cuando el bot forma parte de un flujo repetido, anade un fichero de configuracion para rutas de imagenes, esperas y numero maximo de intentos. Los valores hard-coded sirven para una primera leccion, pero la configuracion permite reutilizar el mismo script en varios entornos sin editar codigo fuente cada vez que cambia la pantalla.