🔤 Распознавание текста на Python | easyocr
Зависимости
easyocr — Python библиотека для распознания текста с поддержкой более 80 языков и всех популярных письменностей, включая латиницу, китайский, арабский, деванагари, кириллицу и т.д.
pyscreeze* — это простой кроссплатформенный
модуль для создания скриншотов экрана.
* В данном руководстве используется для примера.
pip install easyocr
pip install PyScreeze
Создание скриншота
import pyscreeze
# скриншот всего экрана
im = pyscreeze.screenshot("./file.png")
# скриншот области экрана
im = pyscreeze.screenshot(
"./region.jpg",
region=(
100, # x координата от края
100, # y координата от края
500, # ширина области захвата
500, # высота области захвата
),
)
Путём манипуляций с размерами области и координатами захвата получилось
сделать скриншот области спидометра из игры
FUEL.
С этим файлом я буду дальше работать.
Распознание текста
Для распознания текста необходимо объявиться Reader и выполнить функцию readtext
.
import easyocr
reader = easyocr.Reader(["en"], verbose=False)
result = reader.readtext("./img.jpg")
print(result)
Reader
принимает обязательный аргумент
lang_list
, который представляет из себя список с языками в формате ISO 639.
verbose=False
я установил, чтобы не получать нижеуказанное предупрежение:
CUDA not available - defaulting to CPU. Note: This module is much faster with a GPU.
Программа вернёт следующую строку.
Я вручную привёл её к читаемому виду.
[
([[40, 0], [148, 0], [148, 72], [40, 72]], '84', 0.9997769398378397),
([[138, 44], [216, 44], [216, 76], [138, 76]], 'km]h', 0.9896810054779053),
([[34, 82], [192, 82], [192, 114], [34, 114]], '000030633', 0.9984012808546263)
]
Здесь видно, что easyocr
возвращёт массив, с тремя кортежами.
Первый элемент похож на массив координат или региона, в котором была распознана строка.
Второй аргумент собственно сама распознанная строка.
Третий аргумент похож на точность распознания
в диапазоне 0–1 в формате числа с плавающей точной.
Присваеваем значения распознанного текста переменным и выводим результат.
speed = result[0][1]
traveled = result[2][1][0:8]
print("{1} km : {0} km/h".format(speed, traveled))