info@severcart.org
Русский English

Установка Tesseract для OCR

11 января 2018 г.    Программирование

OCR — механический или электронный перевод изображений рукописного, машинописного или печатного текста в текстовые данные, использующихся для представления символов в компьютере.

Знакомство с программой

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

Программное обеспечение Tesseract работает со многими естественными языками от английского (первоначально) до панджаби. С момента обновления в 2015 году он поддерживает более 100 письменных языков и содержит обучаемый код для других языков. Поддержка русского языка реализована подключением дополнительных модулей.

Первоначально программа была написана на C, в 1998 году была перенесена на C ++. У неё нет графического интерфейса, но есть сторонние программные проекты, которые обертывают Tesseract для предоставления графического интерфейса пользователя.

Установка Tesseract

Чтобы использовать библиотеку Tesseract, необходимо установить её в операционную систему.

Для пользователей MacOS воспользуемся brew:

$ brew install tesseract

Если используется операционная система Ubuntu:

$ sudo apt-get install tesseract-ocr

Пользователям Windows официальных бинарных сборок Tesseract не предоставляется, поэтому рекомендуется воспользоваться поисковыми системами для поисков сторонних сборок.

Проверка правильности установки

Чтобы проверить, что Tesseract был успешно установлен, выполним следующую команду:

$ tesseract -v
tesseract 3.05.00
 leptonica-1.74.1
  libjpeg 8d : libpng 1.6.29 : libtiff 4.0.7 : zlib 1.2.8

В командную строку должна распеваться версия Tesseract, а также список совместимых библиотек форматов файлов изображений.

Если появилась ошибка:

-bash: tesseract: command not found

тогда вернитесь к предыдущему шагу и устраните ошибки установки. Кроме того, может потребоваться обновить переменную окружения PATH (только для продвинутых пользователей).

Проверка Tesseract OCR

Для того чтобы получить разумные результаты в Tesseract OCR нужно предварительно обработать цифровыми фильтрами поступающие изображения.

При использовании Tesseract рекомендуется:

  • Использовать входные изображения с максимально высоким разрешением и DPI;
  • Применение пороговых фильтров для выделения текста из фона;
  • Максимально чёткое сегментирование переднего плана по сравнению с задним фоном, без пикселяции или деформаций символов.
  • Применение коррекции текста к входному изображению для обеспечения правильного выравнивания текста.

Отклонения от этих рекомендаций могут привести к неправильным результатам OCR.

Теперь применим OCR к следующему изображению:

Запустим команду в терминале:

$ tesseract tesseract_inputs/example_01.png stdout 
Warning in pixReadMemPng: work-around: writing to a temp file
Testing Tesseract OCR

Tesseract правильно распознал текст «Testing Tesseract OCR» и распечатал его в терминале.

Ограничения Tesseract

К сожалению, этот синтетический пример достаточно далёк от реальности. Если распознаваемый текст плохо отделим от фона или он сильно пикселирован, то Tesseract скорее всего вернёт ошибочные результаты. Tesseract лучше всего подходит для конвейерной обработки документов, в которых изображения сканируются, обрабатываются цифровыми фильтрами, а затем к ним применяется оптическое распознавание символов.

Следует отметить, что Tesseract не является готовым решением для OCR, которое сможет работать во всех приложениях обработки изображений и компьютерного зрения. Для сложных частных случаев необходимо применить методы извлечения признаков, машинное обучение и искусственный интеллект.

Резюме

Если обрабатываемые изображения не будут содержать чёткого текста, Tesseract даст плохие результаты. В случае зашумлённых входных изображений, получить лучшую точность можно обучая пользовательскую модель машинного обучения.

Tesseract лучше всего подходит для ситуаций с изображениями высокого разрешения, где текст переднего плана чётко отделим от фона.