Операции распознавания текста (OCR)¶
В этой главе описывается, как использовать OCR для помощи в операциях с интерфейсом. В таких случаях, как игровые приложения, где обычные селекторы интерфейса могут быть недоступны, вы можете использовать методы OCR. Метод распознавания OCR поддерживает только такие операции, как проверка существования элемента, клик, создание скриншота и т.д. Библиотека бэкенда OCR поддерживает использование paddleocr, easyocr, а также пользовательские HTTP-интерфейсы бэкенда.
Настройка бэкенда OCR¶
Перед использованием метода распознавания OCR необходимо сначала настроить бэкенд OCR. Вам необходимо самостоятельно заранее установить необходимые зависимости.
Внимание
Использование paddleocr в качестве бэкенда, качество скриншота для распознавания установлено на 80, используется ускорение на GPU.
d.setup_ocr_backend("paddleocr", quality=80, use_gpu=True, drop_score=0.85, use_space_char=True)
Использование easyocr в качестве бэкенда, качество скриншота для распознавания установлено на 80, распознаются упрощенный китайский и английский языки.
d.setup_ocr_backend("easyocr", ["ch_sim", "en"], quality=80)
Дополнительные параметры в setup_ocr_backend должны быть параметрами для инициализации этого экземпляра. Если вы не уверены, как правильно пишутся эти параметры, посмотрите на официальные параметры инстанцирования ниже и сравните их с приведенными выше.
paddleocr.PaddleOCR(use_gpu=True, drop_score=0.85, use_space_char=True)
easyocr.Reader(["ch_sim", "en"])
Пользовательский бэкенд OCR в основном используется для управления большим количеством устройств или в случаях, когда на локальной машине нет ускорения на GPU. Вы можете развернуть написанный вами сервис распознавания как HTTP-сервис и запрашивать удаленное распознавание из вашего пользовательского бэкенда. Вам потребуется самостоятельно реализовать класс, унаследованный от MyCustomOcrBackend, и форматировать результаты распознавания в соответствии с требуемым форматом. Определение формата ответа можно найти в предоставленном нами файле paddle_ocr_http_backend.py, который также можно немного изменить и развернуть напрямую.
class HttpOcrBackend(CustomOcrBackend):
def __init__(self, url, auth):
self.auth = auth
self.url = url
def ocr(self, image: bytes):
r = requests.post(url, headers={"X-Auth": self.auth},
data=image)
return r.json()
Затем просто установите пользовательский класс сервиса в качестве бэкенда для распознавания OCR.
d.setup_ocr_backend(HttpOcrBackend, "http://server/ocr", "Secret")
Селекторы OCR¶
В настоящее время селекторы распознавания OCR поддерживают только следующие типы.
text¶
Полное совпадение текста.
element = d.ocr(text="我的")
textContains¶
Совпадение по содержанию текста (подстрока).
element = d.ocr(textContains="我的")
textMatches¶
Совпадение текста по регулярному выражению.
element = d.ocr(textMatches=".*?我的")
Операции OCR¶
В настоящее время селекторы распознавания OCR поддерживают только следующие связанные операции.
click¶
Кликнуть по выбранному элементу.
element.click()
click_exists¶
Кликнуть по выбранному элементу, если он существует.
element.click_exists()
exists¶
Существует ли элемент.
element = d.ocr(textMatches=".*?我的")
screenshot¶
Сделать скриншот элемента, соответствующего условию.
element.screenshot(100, ).save("element.png")
info¶
Получить информацию о найденном с помощью OCR элементе.
element.info()
Совет