Принцип роботи та використання автоматизації операцій GUI за допомогою розпізнавання зображень
Під час запису та відтворення макросів багато хто стикається із ситуацією: «Учора все працювало, а сьогодні клацання відбувається не там». Найчастіше причина в тому, що записаний макрос орієнтується на фіксовані координати екрана. Якщо вікно відкрилося в іншому місці, змінилася роздільна здатність екрана або макрос запускається на іншому моніторі, клацання потрапляє не туди, куди потрібно. Автоматизація на основі розпізнавання зображень розв’язує цю фундаментальну проблему.
Розпізнавання зображень — це технологія, яка шукає елементи на екрані не за координатами, а за їхнім зовнішнім виглядом. Невелике зображення потрібної кнопки заздалегідь реєструється, а під час відтворення інструмент сканує весь екран і знаходить область, що відповідає цьому зображенню. Куди б не перемістилася кнопка, її можна точно знайти й натиснути, якщо зовнішній вигляд не змінився. У цьому й полягає перевага розпізнавання зображень.
Як розпізнавання зображень знаходить елементи
Механізм простий. Спочатку потрібно зробити й зберегти невелике зображення елемента, який слугуватиме орієнтиром, наприклад кнопки «Надіслати» або певної піктограми. Це зображення-шаблон. Під час запуску макросу інструмент робить знімок поточного екрана й шукає на ньому область, що відповідає зображенню-шаблону. Знайшовши збіг, він повертає координати центра цієї області, після чого макрос переміщує туди вказівник миші та виконує клацання.
Важливим налаштуванням тут є поріг збігу, тобто точність зіставлення. Зображення не обов’язково мають збігатися на 100 %: наприклад, можна вважати збігом подібність на рівні 90 % і вище. Високий поріг зменшує кількість хибних спрацьовувань, але через незначні візуальні відмінності потрібний елемент може не знайтися. Низький поріг підвищує гнучкість, однак збільшує ризик помилково вибрати інший схожий елемент. Оптимальне значення найкраще підбирати дослідним шляхом на реальному екрані.
Коли використовувати FIND_IMAGE і WAIT_IMAGE
У makuroku передбачено дві основні команди для використання розпізнавання зображень зі скрипту. FIND_IMAGE шукає, де саме на екрані перебуває потрібне зображення в поточний момент. Знайдені координати можна зберегти у змінній, тому команда підходить, наприклад, для натискання кнопки, місце появи якої заздалегідь невідоме.
Команда WAIT_IMAGE, своєю чергою, очікує появи потрібного зображення. Завантаження вебсторінки або запуск програми потребують часу, і якщо перейти до наступної дії до завершення процесу, вона закінчиться помилкою. WAIT_IMAGE дає змогу надійно синхронізувати автоматизацію зі станом екрана, наприклад дочекатися появи піктограми завершення завантаження й лише потім продовжити. Поєднання цих двох команд робить автоматизацію стійкою до звичних для реальної роботи коливань часу виконання та менш схильною до збоїв.
Ситуації, у яких розпізнавання зображень особливо корисне
Розпізнавання зображень особливо ефективне в таких ситуаціях.
- • Програми, у яких розташування кнопок або вікон щоразу змінюється
- • Коли потрібно дочекатися завершення завантаження або обробки й лише потім продовжити
- • Екрани з динамічним компонуванням, для яких задання координат недостатньо
- • Коли потрібно запускати обробку після появи певної піктограми або стану
Однак розпізнавання зображень також має обмеження. Визначення збігів часто працює нестабільно для елементів, зовнішній вигляд яких постійно змінюється, а також для напівпрозорих чи анімованих елементів. Крім того, оскільки потрібно сканувати весь екран, обробка триває трохи довше, ніж за використання координат. Не варто замінювати розпізнаванням зображень усе. Краще розподіляти методи відповідно до ситуації: «там, де достатньо координат, використовувати координати, а розпізнавання зображень застосовувати лише там, де положення змінюється». У цьому секрет практичної та швидкої автоматизації.
Як правильно підготувати зображення-шаблони
Точність розпізнавання значною мірою залежить від якості зареєстрованого зображення-шаблону. Є кілька корисних прийомів. Насамперед область, що слугує орієнтиром, потрібно вирізати так, щоб вона була «невеликою та характерною». Краще вирізати не всю кнопку, а лише унікальну для неї піктограму чи текст — так її буде складніше сплутати з іншими елементами. І навпаки, якщо захопити надто велику область, навіть незначні зміни навколо, як-от колір тла або сусідній елемент, можуть завадити зіставленню.
Також слід уникати областей, колір або стан яких легко змінюється. Якщо орієнтиром обрати кнопку, що змінює колір під час наведення миші, або область, яка підсвічується у вибраному стані, зіставлення може не спрацювати залежно від ситуації. Вибирайте стабільну область, яка завжди має однаковий вигляд. Крім того, зі зміною масштабу екрана змінюється й розмір зображення, тому найнадійніше створювати шаблон із роздільною здатністю та масштабом, які фактично використовуватимуться. Сукупність таких невеликих заходів значно підвищує успішність розпізнавання зображень.
Поєднання розпізнавання зображень з іншими методами
Розпізнавання зображень — потужний, але не універсальний інструмент. Щоб створити надійну автоматизацію для практичної роботи, потрібно доречно поєднувати кілька методів. Для кнопки, положення якої взагалі не змінюється, достатньо швидко задати координати. Розпізнавання зображень варто застосовувати лише до кнопок зі змінним положенням або елементів, які з’являються із затримкою. Якщо потрібно зчитувати текст з екрана, використовуйте OCR (розпізнавання символів), а для інтеграції із зовнішніми сервісами — обмін даними через HTTP. Тобто метод слід вибирати відповідно до мети.
makuroku дає змогу вільно поєднувати всі ці методи в одному скрипті. Наприклад: «дочекатися готовності екрана за допомогою WAIT_IMAGE, знайти кнопку через FIND_IMAGE і натиснути її, зчитати числовий результат за допомогою OCR, а потім розділити обробку умовним розгалуженням». Так гнучку автоматизацію, подібну до роботи людини, можна описати як єдиний послідовний потік. Не варто зациклюватися на одному методі — краще поєднувати їх, використовуючи переваги кожного. Саме такий підхід є найкоротшим шляхом до автоматизації, справді придатної для практичної роботи.
Що робити, якщо розпізнавання зображень працює некоректно
Під час використання розпізнавання зображень іноді виникає ситуація, коли зображення, яке ви начебто зареєстрували, не вдається знайти. Причин може бути кілька. Найчастіше масштаб інтерфейсу або роздільна здатність екрана під час створення зображення-шаблону відрізняються від параметрів під час фактичного пошуку. Через це розмір зображення змінюється й збіг не виявляється. Найнадійніше рішення — повторно створити шаблон із тими самими налаштуваннями, що й у робочому середовищі.
Наступна за поширеністю причина — надто суворий поріг збігу. Якщо вимагати повного збігу на 100%, зображення може не знайтися навіть через ледь помітну різницю у відтінках або згладжуванні. Розпізнавання часто стає стабільнішим, якщо трохи знизити поріг і вважати збігом подібність приблизно на 90%. Однак надто низький поріг збільшує кількість хибних спрацьовувань, тому оптимальне значення варто підбирати шляхом перевірки на реальному екрані.
Якщо проблему все одно не вирішено, перегляньте саму область, вибрану для шаблону. Якщо орієнтиром є ділянка з мінливим тлом або область, яка підсвічується під час вибору, її вигляд змінюватиметься залежно від ситуації, і збіг не буде знайдено. Обмежте шаблон характерною та стабільною ділянкою, яка завжди виглядає однаково, наприклад унікальною піктограмою або логотипом. Це підвищить імовірність успіху. Вибір орієнтира, який легко знайти, — головний секрет стабільного розпізнавання зображень.
Спочатку налаштування розпізнавання зображень потребує певних зусиль, але після правильної конфігурації воно забезпечує гнучкість, недоступну за використання фіксованих координат. Навіть якщо вікно переміститься або зміниться компонування, система відреагує точно, доки зовнішній вигляд залишається незмінним. Така надійність дає впевненість у тривалому використанні автоматизації в реальній роботі.
Практичний сценарій із використанням розпізнавання зображень
Розгляньмо можливості розпізнавання зображень на конкретному прикладі. Припустімо, потрібно автоматизувати регулярне завантаження даних із певного Web-застосунку. Під час кожного входу компонування екрана трохи змінюється, а кнопка завантаження не має постійного розташування. Макрос із фіксованими координатами не може адаптуватися до таких змін і швидко перестає працювати.
Саме тут стане в пригоді розпізнавання зображень. Спочатку зареєструйте піктограму кнопки завантаження як зображення-шаблон. Макрос за допомогою WAIT_IMAGE очікує завершення завантаження сторінки, а потім використовує FIND_IMAGE, щоб знайти кнопку завантаження на екрані та клацнути в її розташуванні. Де б не з’явилася кнопка, система точно знайде її та виконає клацання, доки зовнішній вигляд залишається незмінним. Завдяки цьому автоматизація працює стабільно й не залежить від змін компонування.
Крім того, якщо за допомогою WAIT_IMAGE дочекатися повідомлення про завершення завантаження й лише після цього перейти до наступного етапу, нічого не буде пропущено навіть за повільного з’єднання. Так розпізнавання зображень переносить в автоматизацію звичну для людини логіку: оцінити стан екрана й у потрібний момент виконати дію в потрібному місці. Саме тому надійну автоматизацію можна створювати навіть у мінливому реальному робочому середовищі.
Такі сценарії застосовні не лише до Web-застосунків, а й до настільних застосунків, бізнес-систем і багатьох інших сфер. Завдяки розпізнаванню зображень можна автоматизувати навіть завдання, від яких раніше відмовлялися через переміщення елементів або непередбачуваний час їх появи. Для початку згадайте завдання, у якому розташування елемента щоразу зміщувалося й створювало проблеми, та спробуйте стабілізувати його за допомогою розпізнавання зображень.
Як створювати надійну автоматизацію
Практична придатність автоматизації визначається тим, наскільки добре вона витримує непередбачені ситуації. Автоматизація, що спирається лише на записані координати, може успішно спрацювати вперше, але часто зупиняється через найменшу зміну середовища. Додавши розпізнавання зображень, можна перенести в автоматизацію рішення, які людина приймає несвідомо, наприклад клацати, орієнтуючись на зовнішній вигляд, або чекати, доки екран буде готовий.
Окрім запису дій через GUI, makuroku стандартно підтримує команди розпізнавання зображень, як-от FIND_IMAGE і WAIT_IMAGE. Спочатку запишіть дії, щоб створити основу, а потім замініть розпізнаванням зображень лише ті етапи, де змінюється розташування елементів або потрібно дочекатися слушного моменту. Таке поєднання дає змогу створювати автоматизацію, яка не ламається за першої ж непередбаченої ситуації, а витримує хаотичність реальних умов. Усі функції можна випробувати безкоштовно, тож для початку стабілізуйте за допомогою розпізнавання зображень ті завдання, де «положення елементів щоразу зміщувалося й створювало проблеми».
Спробувати безкоштовно
Автоматизуйте це з makuroku
makuroku записує вашу мишу та клавіатуру, а потім відтворює автоматично. Додайте SCR-скрипти та інтеграцію зі ШІ (MCP), коли потрібно більше. Усі функції безкоштовні на Windows.
Більше статей