понедельник, 25 мая 2020 г.

Распознавание текста с Tesseract

Добрый день, дорогой друг!
Распознавание текста в изображении - это отдельная и очень интересная задача, на решении которой некоторые компании зарабатывают миллионы долларов. 
Но довольно часто перед разработчиком стоит задача попроще - из качественного изображения извлечь небольшой кусочек текста для последующей обработки. 
Именно это мы и научимся делать.

Что такое Tesseract

В далеких 1980-х годах, когда нейросети были всего лишь очень красивой, но далекой от практики, абстракцией, в компании  Hewlett-Packard разработали библиотеку распознавания текста Tesseract.
После этого библиотека была забыта на долгие годы, пока в 2006 году Google не выкупил ее и не опубликовал исходный код под лицензией Apache 2.0.
В настоящее время библиотека доступна практически на всех операционных системах, что не может не радовать.

Установка Tesseract

Для того, чтобы воспользоваться Tesseract, необходимо его установить на компьютер. 
Инструкцию по установке можно посмотреть тут. Я буду использовать Tesseract под Windows, поэтому скачаю соответствующий инсталлятор и установлю программу в папку по умолчанию - "C:\Program Files\Tesseract-OCR".

Использование Tesseract

В качестве примера, я хочу извлечь текст из png-файла:

Для извлечения текста напишем маленький скрипт на Python, в котором используем модуль pytesseract:
import pytesseract

pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract'
print(pytesseract.image_to_string(r'C:\4.png'))
где 'C:/4.png' - путь до изображения с текстом.
В результате работы этого скрипта мы увидим распознанный текст:
Tesseract is an optical character recognition engine for various operating
systems. It is free software, released under the Apache License. Originally
developed by Hewlett-Packard as proprietary software in the 1980s, it was

released as open source in 2005 and development has been sponsored by Google
since 2006.

In 2006, Tesseract was considered one of the most accurate open-source OCR
engines then available
Текст распознан, задача решена, поздравляю!))

Заключение

Конечно Tesseract по своим возможностям не может сравниться с промышленными системами распознавания, такими как Abbyy Fine Reader, но в простых случаях свою задачу решает. 
Также, по умолчанию, Tesseract не умеет распознавать русские буквы, хотя это можно настроить, но об этом - в следующий раз.
Для интересующихся - почитать про Tesseract и его возможности можно тут
Удачи!

Комментариев нет:

Отправить комментарий