Определение подобных изображений с помощью компьютерного зрения

Определение подобных изображений с помощью компьютерного зрения в Human Emulator

При работе с защищенными сайтами или сайтами полностью построенными на скриптах могут возникнуть проблемы с определением элементов. На таких сайтах как правило при каждой загрузке меняются все id и name элементов, может также меняться их порядок, а также появляться скрытые элементы, которые меняют DOM дерево и не дают возможность стабильной работы по номеру элемента. Автоматизировать работу с такими «хитрыми» сайтами довольно трудно и единственным выходом было использование реальных мыши и клавиатуры и жёстко заданных координат. В случае когда страница часто менялась, то и этот способ не помогал, так как приходилось при каждом изменении страницы опять перезадавать координаты.

К счастью таких сайтов не много, но специально для работы с такими сайтами в версии Human Emulator 4.0.10 были добавлены функции get_x_in_webpage_picture и get_y_in_webpage_picture. Эти функции получают координаты части страницы, которая соответствует шаблонному изображению. То есть вы делаете скриншот, например, кнопки или текста ввода и сохраняете его в файл. После передаёте в функцию путь к этому файлу и программа возвращает вам координаты этой кнопки или поля ввода. Таким образом вы имеете возможность работать с этими элементами.

Создание шаблона для поиска кнопки 
Создание шаблона для поиска кнопки 

В Human Emulator Studio 7.0.3 и 7.0.6 это функционал был существенно улучшен и расширен. Для поиска соответствия была задействована так называемая технология компьютерного зрения. Это технология позволяет определять элементы с использованием коэффициента подобия. То есть определяемый элемент может быть только частично похож на вашу шаблонную картинку. В версии 7.0.6 в функции сохранения скришота был добавлен дополнительный параметр is_gray этот параметр позволяет сохранять картинки не цветными. Дело в том что, если ваши шаблонные картинки будут не цветные, то это существенно увеличивает скорость определения шаблонной картинки на странице. Надо также учесть такой момент, что определение работает только для видимой части страницы. Если вам нужно найти элемент, который находиться ниже этой части, то нужно прокрутить страницу так чтобы этот элемент появился в видимой области браузера.

Функция get_pos_in_webpage_picture.

В Human Emulator Studio 7.0.3 к функциям get_x_in_webpage_picture и get_y_in_webpage_picture была добавлена функция $webpage->get_pos_in_webpage_picture($picture_filepath, $similar_koeff=0.95, $similar_algoritm = 5)

Параметры функции:
picture_filepath — путь к файлу с шаблонной картинкой.
similar_koeff — коэффициент подобия. Это дробное значение от 0 до 1, оптимальное значение 0.95. Этим значением вы выставляете соответствие искомой картинки шаблонной. Условно можно обозначить как 95% подобия от шаблонной картинки.
similar_algoritm — выбор алгоритма поиска. Может быть от 0 до 5. Дело в том что, технология компьютерного зрения позволяет использовать для распознавания несколько алгоритмов. По умолчанию в функции используется наиболее подходящий алгоритм. Но в случае если с его помощью вам не удалось добиться положительного результата вы можете использовать ещё 5 алгоритмов.

Эти же параметры были добавлены в функциям get_x_in_webpage_picture и get_y_in_webpage_picture.

В отличие от этих функций get_pos_in_webpage_picture возвращает координаты заданного изображения на странице в виде объекта XHEPosition, у которого есть X и Y.

Пример использования функции:

С какими функциями можно использовать данный функционал.

Получив координаты мы можем получить и элемент по этим координатам. Например, сделав через клик активным любое поле куда нам надо ввести текст и после этого вызываем $webpage->get_active_element() или мы можем сразу получить элемент по координатам с помощью функции $webpage->get_element_from_point($x,$y).

В какие функции был добавлен параметр is_gray.

Параметр is_gray для создания упрощенных скриншотов был добавлен в следующие функции :

Полезные функции для работы с картинками.

В Human Emulator есть ещё функции, которые работают с картинками. Это такие функции как $webpage->save_url_to_file($url,$filepath,$timeout=9999) позволяет сохранять картинку по её URL,
$image->get_image($src_path,$image_path,$x,$y,$width,$height)  — получить новую картинку — как часть заданной, $image->add_image($src_path,$image_path,$side=»right»)  — добавить картинку к заданной, $image->get_x_of_image($src_path,$image_path)  — получить x — координату вхождения заданной картинки, $image->get_y_of_image($src_path,$image_path)  — получить y — координату вхождения заданной картинки. Не говоря уже о функционале по распознаванию капч.

Как видим Хуман Эмулятор даёт огромные возможности по работе с разнообразного вида картинками и графическими элементами страниц.


Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.