Оптическое распознавание
Извлекаем текст из изображений
Для извлечения текста из изображений, используется метод, называемый оптическим распознаванием символов (OCR). Для обработки изображения в среде Diggernaut, диггеру необходимо сперва загрузить изображение, получить из него base64 запись в регистре и затем применить на него команду ocr.
Командой используются следующие параметры:
Параметр | Описание |
---|---|
resize | Опциональный параметр, который может содержать положительное целочисленное значение, показывывающее процент изменения в размере изображения от оригинального. Этот параметр используется для улучшения качества распознавания, если оригинальный размер распознается плохо. |
do | Набор команд, выполняемых в OCR контексте. |
Команда использует значение регистра как закодированное в base64 изображение. После использования команды диггер переходит в OCR контекст, в котором вы можете использовать команду text для переноса распознанного текста в регистр.
Рассмотрим пример, когда на странице присутствует изображение в уже готовом base64 виде:
<img src="data:image/png;base64,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">
В данном примере закодировано изображение:
Сценарий диггера в этом случае будет выглядеть следующим образом:
# НАЙДЕМ ИЗОБРАЖЕНИЕ
- find:
path: img
do:
# РАСПАРСИМ АТРИБУТ `src`
- parse:
attr: src
filter: data\:image\/png\;base64\,(.+)
# В РЕГИСТРЕ ТЕПЕРЬ МЫ ИМЕЕМ ИЗОБРАЖЕНИЕ ЗАКОДИРОВАННОЕ КАК base64
# ПЕРЕХОДИМ В КОНТЕКСТ OCR
- ocr:
do:
# ПЕРЕНОСИМ РАСПОЗНАННЫЙ ТЕКСТ В РЕГИСТР
- text
# В РЕГИСТРЕ ТЕПЕРЬ ЗНАЧЕНИЕ: Hello world
Теперь рассмотрим пример, когда изображение представлено в виде ссылки на графический файл:
---
config:
debug: 2
agent: Firefox
do:
# ПЕРЕЙДЕМ НЕПОСРЕДСТВЕННО НА САМО ИЗОБРАЖЕНИЕ
- walk:
to: https://www.diggernaut.com/sandbox/captcha_3.jpg
do:
# ДИГГЕР САМ ПЕРЕВЕДЕТ ИЗОБРАЖЕНИЕ В XML ФОРМАТ
# ГДЕ В ТЕГЕ `imgbase64` БУДЕТ НАХОДИТСЯ ЗАКОДИРОВАННОЕ В base64 ИЗОБРАЖЕНИЕ
- find:
path: imgbase64
do:
- parse
- ocr:
resize: 40
do:
- text
- variable_set: imgtext
# НА ВЫХОДЕ БУДЕТ ЗНАЧЕНИЕ: W68HP
Далее мы рассмотрим функции, предназначенные для автоматизированного обхода капчи.