-
Notifications
You must be signed in to change notification settings - Fork 3
Home
Исследование улучшения/ухудшения качества и скорости распознавания текста на экране с использованием обрезки изображения.
Проблема заключается в том, что текущая версия функции для распознавания текста на изображении find_text() не предоставляет достаточной точности и скорости обнаружения и требует улучшения.
Идея заключается в том, чтобы дать возможность пользователю указать область, в которой необходимо искать нужные слова. Изображение делится на 9 частей:
center
top-left
left
bottom-left
top
bottom
top-right
right
bottom-right
При вызове функции, изображение обрезается в соответствии с заданной областью и осуществляется поиск. Так же, может произойти ситуация, когда часть нужного слова обрежется и оно не будет найдено. На такой случай нужно увеличить область обрезки. Было решено проводить поиск текста в 2 итерации: с изображением размером 1/3 параметров ширины и высоты соответственно, и 1/2 в случае неудачи.
Для реализации данной идеи были разработаны 2 дополнительные функции: find_crop_image() и crop_image(). Для задания области в класс SearchedText была добавлена переменная area: str
.
Так же было принято решение в функцию find_text() добавить параметр extend
, определяющий параметр кадрирования (обычная или увеличенная область).
Функция find_text(), перед началом поиска, вызывает find_crop_image(). Она вызывает функцию crop_image(), передавая значения множителей ширины и высоты для верного выделения нужной части изображения. crop_image() возвращает новое обрезанное изображение или исходное, если area='all'
.
В функциях, использующих find_text(): find_text_on_screen(), check_text() и check_text_on_screen() был реализован алгоритм двойного поиска, если при обрезке со стандартным размером области не находится искомый текст, снова вызывается функция поиска с параметром extend=True
Из функции find_text() был удален алгоритм обработки изображения и преведения его к черно-белому формату, а так же параметр inv
. Данное решение было принято по нескольким причинам:
-
Обработка изображения занимает большое кол-во времени;
-
Алгоритм работал некорректно и для его использования нужно проводить дополнительные исследования.
Для проведения тестирования был выбран набор из 11 изображений. Всего осуществляется поиск 374 слов. Результаты представлены ниже:
-
Общее время выполнения: 2355 сек.
-
Общее кол-во тестов: 374
-
Общее количество успешно выполненных тестов: 307
-
Общее количество неуспешно выполненных тестов: 67
-
Процентное соотношение успешно выполненных тестов: 82.1%
-
Общее время выполнения: 647 сек.
-
Общее кол-во тестов: 374
-
Общее количество успешно выполненных тестов: 334
-
Общее количество неуспешно выполненных тестов: 40
-
Процентное соотношение успешно выполненных тестов: 89.3%
В результате данной работы, было уменьшено общее время выполнения тестов в более чем 3.5 раза, а так же увеличено процентное соотношение успешных тестов на 7.2%