Volver al blog
Cómo hacer · · 9 min de lectura

Funcionamiento y uso de la automatización de operaciones GUI mediante reconocimiento de imágenes

Al grabar y reproducir macros, muchas personas se encuentran con que «ayer funcionaba, pero hoy el clic aparece desplazado». La causa suele ser que la macro grabada funciona tomando como referencia unas coordenadas fijas de la pantalla. Si la ventana se abre en otro lugar, cambia la resolución o la macro se reproduce en otro monitor, el clic termina en una ubicación incorrecta. La automatización mediante reconocimiento de imágenes resuelve este problema de raíz.

El reconocimiento de imágenes es una técnica que busca elementos en la pantalla basándose en su apariencia, no en sus coordenadas. Se registra previamente una pequeña imagen del botón que se desea pulsar y, durante la reproducción, la herramienta examina toda la pantalla para encontrar una ubicación que coincida con ella. No importa adónde se haya movido el botón: mientras conserve la misma apariencia, podrá localizarse y pulsarse con precisión. Esa es la gran ventaja del reconocimiento de imágenes.

Cómo encuentra elementos el reconocimiento de imágenes

El mecanismo es sencillo. Primero se captura y guarda una pequeña imagen del elemento que servirá de referencia, por ejemplo, el botón «Enviar» o un icono específico. Esta es la imagen de plantilla. Al ejecutar la macro, la herramienta captura la pantalla en ese momento y busca en ella una región que coincida con la imagen de plantilla. Cuando encuentra una coincidencia, devuelve las coordenadas de su centro y la macro mueve allí el ratón y hace clic.

Aquí es importante el ajuste denominado «umbral de coincidencia», es decir, la precisión de la comparación. Aunque las imágenes no coincidan al 100 %, puede configurarse, por ejemplo, que una similitud del 90 % o más se considere una coincidencia. Un umbral alto reduce las detecciones erróneas, pero una pequeña diferencia visual podría impedir que se encuentre el elemento. Por el contrario, un umbral bajo aporta flexibilidad, pero aumenta el riesgo de confundirlo con otro elemento parecido. La clave está en probar con la pantalla real hasta encontrar un valor adecuado.

Cuándo usar FIND_IMAGE y WAIT_IMAGE

makuroku incluye dos comandos principales para utilizar el reconocimiento de imágenes desde un script. FIND_IMAGE busca dónde se encuentra esa imagen en la pantalla en ese preciso instante. Como las coordenadas encontradas pueden guardarse en una variable, resulta adecuado para tareas como pulsar un botón cuya ubicación de aparición se desconoce.

Por otro lado, WAIT_IMAGE espera hasta que aparezca la imagen. Cargar una página web o iniciar una aplicación lleva tiempo, y ejecutar la siguiente operación antes de que el proceso termine provoca errores. Con WAIT_IMAGE se puede crear una automatización fiable que se adapte al estado de la pantalla, por ejemplo, esperando a que aparezca el icono que indica que la carga ha finalizado antes de continuar. Al combinar ambos comandos se obtiene una automatización resistente a las variaciones de tiempo habituales en el trabajo real y menos propensa a fallar.

Situaciones en las que el reconocimiento de imágenes resulta especialmente útil

El reconocimiento de imágenes resulta especialmente eficaz en las siguientes situaciones.

  • Aplicaciones en las que la posición de los botones o las ventanas cambia cada vez
  • Cuando se desea esperar a que termine la carga o el procesamiento antes de continuar
  • Pantallas con un diseño dinámico que no se pueden controlar adecuadamente mediante coordenadas
  • Cuando se desea iniciar un proceso al aparecer un icono o estado específico

Sin embargo, el reconocimiento de imágenes también tiene sus limitaciones. La detección de coincidencias tiende a ser inestable en diseños cuya apariencia cambia con frecuencia y en elementos semitransparentes o animados. Además, como se debe examinar toda la pantalla, el procesamiento tarda un poco más que al especificar coordenadas. En lugar de sustituirlo todo por reconocimiento de imágenes, conviene emplear cada método donde corresponda: «coordenadas donde sean suficientes y reconocimiento de imágenes solo donde cambie la posición». Esta es la clave para lograr una automatización práctica y rápida.

Consejos para preparar correctamente las imágenes de plantilla

La precisión del reconocimiento de imágenes depende en gran medida de la calidad de la imagen de plantilla registrada. Hay varios consejos útiles. En primer lugar, recorte el área que servirá de referencia para que sea «pequeña y distintiva». En vez de capturar el botón completo, recorte únicamente el icono o texto característico de ese botón para evitar confundirlo con otros elementos. Por el contrario, si el área es demasiado grande, pequeñas variaciones del entorno, como el color de fondo o un elemento adyacente, pueden impedir que se encuentre una coincidencia.

A continuación, evite las partes cuyo color o estado cambie con facilidad. Si se usa como referencia un botón que cambia de color al pasar el ratón por encima o una zona que se resalta al seleccionarla, puede que no haya coincidencia en determinados estados. Elija una parte estable que mantenga siempre la misma apariencia. Además, al cambiar la escala de visualización también cambia el tamaño de la imagen, por lo que lo más fiable es capturar la plantilla con la resolución y la escala que se usarán realmente. La suma de estas pequeñas precauciones aumenta considerablemente la tasa de éxito del reconocimiento de imágenes.

Combinar el reconocimiento de imágenes con otros métodos

El reconocimiento de imágenes es potente, pero no sirve para todo. Para crear una automatización sólida en un entorno de trabajo real, lo correcto es combinar varios métodos según resulte más adecuado. Para un botón cuya posición nunca cambia, basta con especificar rápidamente sus coordenadas. Reserve el reconocimiento de imágenes para botones que cambien de posición o elementos que tarden en aparecer. Si necesita leer texto de la pantalla, use OCR (reconocimiento de caracteres); si necesita integrarse con servicios externos, use comunicación HTTP. De este modo, se elige el método según el objetivo.

makuroku permite combinar libremente estos métodos en un único script. Por ejemplo: «esperar a que la pantalla esté lista con WAIT_IMAGE, buscar y hacer clic en un botón con FIND_IMAGE, leer el valor del resultado con OCR y dividir el procesamiento mediante condiciones». Así se puede describir como un único flujo una automatización flexible y similar al trabajo humano. En lugar de aferrarse a un solo método, hay que aprovechar las ventajas de cada uno y combinarlos. Esta idea es el camino más corto hacia una automatización realmente útil en la práctica.

Qué hacer cuando el reconocimiento de imágenes no funciona correctamente

Al empezar a usar el reconocimiento de imágenes, puede ocurrir que no se encuentre una imagen que supuestamente se había registrado. Puede haber varias causas. La más habitual es que la escala de visualización o la resolución de la pantalla sea distinta al capturar la imagen de plantilla y al buscarla realmente. En ese caso, el tamaño de la imagen cambia y no se produce ninguna coincidencia. La solución más segura es volver a capturar la plantilla con la misma configuración del entorno donde se utilizará.

La segunda causa más habitual es que el umbral de coincidencia sea demasiado estricto. Si se exige una coincidencia perfecta del 100 %, una mínima diferencia de color o de suavizado puede impedir que se encuentre la imagen. La detección suele estabilizarse al reducir ligeramente el umbral y considerar como coincidencia una similitud cercana al 90 %. Sin embargo, bajarlo demasiado aumenta los falsos positivos, por lo que conviene probar con la pantalla real hasta encontrar el valor adecuado.

Si aun así no se resuelve, revise la propia zona elegida como plantilla. Si se utiliza como referencia una parte cuyo fondo cambia con facilidad o que se resalta al seleccionarla, su apariencia variará según la situación y dejará de coincidir. Limitar la plantilla a una parte distintiva y estable que siempre conserve el mismo aspecto —como un icono o logotipo exclusivo— aumenta la tasa de éxito. Elegir una referencia fácil de encontrar es la clave principal para estabilizar el reconocimiento de imágenes.

Aunque al principio ajustar el reconocimiento de imágenes requiere cierto esfuerzo, una vez configurado correctamente ofrece una flexibilidad imposible de conseguir mediante coordenadas fijas. Aunque se mueva la ventana o cambie el diseño, responderá con precisión siempre que la apariencia sea la misma. Esta solidez aporta una gran tranquilidad al utilizar la automatización durante mucho tiempo en el trabajo real.

Escenario práctico con reconocimiento de imágenes

Veamos la capacidad del reconocimiento de imágenes mediante un escenario concreto. Supongamos que se desea automatizar la descarga periódica de datos desde una aplicación Web. Cada vez que se inicia sesión, el diseño de la pantalla cambia ligeramente y la posición del botón de descarga tampoco es fija. Una macro basada en coordenadas no puede adaptarse a estos cambios y pronto deja de funcionar.

Aquí es donde entra en juego el reconocimiento de imágenes. Primero, se registra el icono del botón de descarga como imagen de plantilla. La macro espera con WAIT_IMAGE a que termine de cargarse la página, utiliza FIND_IMAGE para localizar el botón de descarga en la pantalla y hace clic en su posición. Sin importar dónde aparezca el botón, podrá encontrarlo y pulsarlo con precisión siempre que su aspecto sea el mismo, logrando así una automatización estable que no depende de los cambios de diseño.

Además, si se usa WAIT_IMAGE para esperar a que aparezca el mensaje de descarga completada antes de continuar, no se omitirá nada ni siquiera cuando la conexión sea lenta. De este modo, el reconocimiento de imágenes incorpora a la automatización una decisión que las personas toman de forma natural: observar el estado de la pantalla y actuar en el lugar adecuado en el momento oportuno. Por eso permite crear automatizaciones resistentes incluso en el cambiante entorno del trabajo real.

Estos escenarios no solo pueden aplicarse a aplicaciones Web, sino también a aplicaciones de escritorio, sistemas empresariales y muchos otros ámbitos. Con el reconocimiento de imágenes, incluso las tareas cuya automatización se había descartado porque la posición cambia o el momento es impredecible pasan a estar al alcance. Empiece pensando en una tarea que le causaba problemas porque la posición cambiaba cada vez e intente estabilizarla mediante el reconocimiento de imágenes.

Cómo crear automatizaciones resistentes

Que una automatización sea realmente útil en el trabajo depende de cuánto pueda resistir las situaciones imprevistas. Una automatización que solo depende de coordenadas registradas puede funcionar bien la primera vez, pero suele detenerse ante el menor cambio del entorno. Al combinarla con el reconocimiento de imágenes, es posible incorporar decisiones que las personas toman de forma inconsciente, como hacer clic guiándose por la apariencia o esperar a que la pantalla esté lista.

Además de la grabación mediante GUI, makuroku incluye de serie comandos de reconocimiento de imágenes como FIND_IMAGE y WAIT_IMAGE. Primero, grabe las operaciones para crear una estructura básica y sustituya por reconocimiento de imágenes únicamente las partes cuya posición cambia o que requieren esperar al momento adecuado. Esta combinación permite crear automatizaciones que no se rompen ante el primer imprevisto, sino que resisten el desorden de los entornos reales. Como puede probar todas las funciones gratis, empiece por estabilizar mediante reconocimiento de imágenes esas tareas en las que «la posición se desplazaba cada vez y causaba problemas».

Pruébalo gratis

Automatízalo con makuroku

makuroku graba tu ratón y teclado y luego los reproduce automáticamente. Añade scripts SCR e integración con IA (MCP) cuando necesites más. Todas las funciones gratis en Windows.