Мы с вами рассмотрим пример работы с библиотекой Tesseract ORC и на её основе построим приложение для распознавания текста с фото.
Что забавно, так это возраст библиотеки. Tesseract — является программой, разрабатывавшейся компанией Hewlett-Packard с середины 1980-х по середину 1990-х годов. Затем программа около 10 лет «пролежала на полке» и в августе 2006 года её купила Google. Google открыл исходный код под лицензией Apache 2.0 для продолжения разработки.
На сегодняшний день библиотека является наиболее крутым решением, если вам требуется считать данные из какого-либо фото.
Первое, что необходимо сделать, то это выполнить установку Tesseract ORC. Установка Tesseract удобна на Маке и Линукс. Если вы на Windows, то придется выполнить на одно движение больше.
Если вы на Маке, то скачайте brew install tesseract
. Если вы на Линукс, тогда в зависимости от операционной системы вам нужно прописать
И если вы на Windows, то вам нужно скачать приложение на ПК. Вам нужно скачать файл
С самой программой вам никак не придется взаимодействовать, а лишь скопировать её расположение. Обычно оно устанавливается на диск С в Program files. Найдите вашу программу и скопируйте путь к этой папке.
Полная разработка проекта показывается в видео. Вы можете просмотреть его ниже:
Полезные ссылки:
Код для реализации проекта из видео:
import cv2
import pytesseract
# Путь для подключения tesseract
# pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files\\Tesseract-OCR\\tesseract.exe'
# Подключение фото
img = cv2.imread('yourPhoto.png')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# Будет выведен весь текст с картинки
config = r'--oem 3 --psm 6'
# print(pytesseract.image_to_string(img, config=config))
# Делаем нечто более крутое!!!
data = pytesseract.image_to_data(img, config=config)
# Перебираем данные про текстовые надписи
for i, el in enumerate(data.splitlines()):
if i == 0:
continue
el = el.split()
try:
# Создаем подписи на картинке
x, y, w, h = int(el[6]), int(el[7]), int(el[8]), int(el[9])
cv2.rectangle(img, (x, y), (w + x, h + y), (0, 0, 255), 1)
cv2.putText(img, el[11], (x, y), cv2.FONT_HERSHEY_COMPLEX, 1, (255, 255, 255), 1)
except IndexError:
print("Операция была пропущена")
# Отображаем фото
cv2.imshow('Result', img)
cv2.waitKey(0)