Рубрики
Без рубрики

Оптическое распознавание символов с помощью Tesseract

В этом учебнике мы изумим Tesseract, оптический двигатель распознавания символов (OCR), с несколькими примерами обработки изображения к тексту.

Автор оригинала: Anshul Bansal.

1. Обзор

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

В этом учебнике мы изумим Tesseract, оптический двигатель распознавания символов (OCR), с несколькими примерами обработки изображения к тексту.

2. Тессеракт

Тессеракт — двигатель OCR с открытым исходным кодом, разработанный компанией HP распознает более 100 языков, а также поддерживает идеографические и левые языки. Кроме того, мы можем обучить Tesseract распознавать другие языки .

Содержит два двигателя OCR для обработки изображений — двигатель OCR LSTM (Long Short Term Memory) и устаревший двигатель OCR, который работает, распознавая шаблоны символов.

Двигатель OCR использует Библиотека Лептоники чтобы открыть изображения и поддерживает различные форматы вывода, такие как простой текст, hOCR (HTML для OCR), PDF и TSV.

3. Настройка

Tesseract доступен для скачивания/установки на всех основных операционных системах.

Например, если мы используем macOS, мы можем установить двигатель OCR с помощью Доморощенная :

brew install tesseract

Мы будем наблюдать, что пакет содержит набор файлов языковых данных, таких как английский язык, а также ориентации и обнаружения скриптов (OSD), по умолчанию:

==> Installing tesseract 
==> Downloading https://homebrew.bintray.com/bottles/tesseract-4.1.1.high_sierra.bottle.tar.gz
==> Pouring tesseract-4.1.1.high_sierra.bottle.tar.gz
==> Caveats
This formula contains only the "eng", "osd", and "snum" language data files.
If you need any other supported languages, run `brew install tesseract-lang`.
==> Summary
/usr/local/Cellar/tesseract/4.1.1: 65 files, 29.9MB

Тем не менее, мы можем установить тессеракт-ланг модуль для поддержки других языков:

brew install tesseract-lang

Для Linux мы можем установить Tesseract с помощью yum команда:

yum install tesseract

Кроме того, давайте добавим языковую поддержку:

yum install tesseract-langpack-eng
yum install tesseract-langpack-spa

Здесь мы добавили данные, обученные языку, для английского и испанского языков.

Для Windows, мы можем получить установщиков от Тессеракт в UB Мангейм .

4. Тессеракт командная линия

4.1. Бегите

Мы можем использовать командно-линейный инструмент Tesseract для извлечения текста из изображений.

Например, давайте снимок нашего сайта:

Тогда мы замоем тессеракт команда читать Baeldung.png моментальный снимок и написать текст в выход.txt файл:

tesseract baeldung.png output

выход.txt файл будет выглядеть так:

a REST with Spring Learn Spring (new!)
The canonical reference for building a production
grade API with Spring.
From no experience to actually building stuff.
y
Java Weekly Reviews

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

4.2. Поддержка языка

По умолчанию движок OCR использует английский язык при обработке изображений. Тем не менее, мы можем объявить язык, используя -l аргумент:

Рассмотрим другой пример с многоязычным текстом:

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

tesseract multiLanguageText.png output

Выход будет выглядеть так:

Der ,.schnelle" braune Fuchs springt
iiber den faulen Hund. Le renard brun
«rapide» saute par-dessus le chien
paresseux. La volpe marrone rapida
salta sopra il cane pigro. El zorro
marron rapido salta sobre el perro
perezoso. A raposa marrom rapida
salta sobre 0 cao preguicoso.

Затем давайте обработать изображение с португальским языком:

tesseract multiLanguageText.png output -l por

Таким образом, двигатель OCR также обнаружит португальские буквы:

Der ,.schnelle" braune Fuchs springt
iber den faulen Hund. Le renard brun
«rapide» saute par-dessus le chien
paresseux. La volpe marrone rapida
salta sopra il cane pigro. El zorro
marrón rápido salta sobre el perro
perezoso. A raposa marrom rápida
salta sobre o cão preguiçoso.

Аналогичным образом, мы можем объявить комбинацию языков:

tesseract multiLanguageText.png output -l spa+por

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

4.3. Режим сегментации страниц

Tesseract поддерживает различные режимы сегментации страниц, такие как OSD, автоматическая сегментация страниц и редкий текст.

Мы можем объявить режим сегментации страницы с помощью -psm аргумент со значением от 0 до 13 для различных режимов:

tesseract multiLanguageText.png output --psm 1

Здесь, определив значение 1, мы объявили автоматическую сегментацию страницы с OSD для обработки изображений.

Рассмотрим все поддерживаемые режимы сегментации страниц:

4.4. Режим двигателя OCR

Аналогичным образом, мы можем использовать различные режимы двигателя, такие как наследие и двигатель LSTM при обработке изображений.

Для этого мы можем использовать -Ом аргумент со значением от 0 до 3:

tesseract multiLanguageText.png output --oem 1

Режимы двигателя OCR:

4.5. Тессдата

Tesseract содержит два набора обученных данных для двигателя LSTM OCR – наиболее подготовленные модели LSTM и быстрые версии версий обученных моделей LSTM .

Первый обеспечивает лучшую точность, а второй предлагает лучшую скорость в обработке изображений.

Кроме того, Tesseract предоставляет комбинированные обученные данные с поддержкой как устаревшего, так и LSTM OCR двигателя.

Если мы используем движок Legacy OCR без предоставления вспомогательных обученных данных, Tesseract добросит ошибку:

Error: Tesseract (legacy) engine requested, but components are not present in /usr/local/share/tessdata/eng.traineddata!!
Failed loading language 'eng'
Tesseract couldn't load any languages!

Таким образом, мы должны скачать необходимые .traineddata файлов и либо держать их в режиме тессдата местоположение или объявить местоположение с помощью -тессдата-дир аргумент:

tesseract multiLanguageText.png output --tessdata-dir /image-processing/tessdata

4.6. Выход

Мы можем объявить аргумент, чтобы получить необходимый формат вывода.

Например, для получения поискового вывода PDF:

tesseract multiLanguageText.png output pdf

Это создаст выход.pdf файл с поисковым текстовым слоем (с узнаваемым текстом) на предоставленном изображении.

Аналогичным образом, для вывода hOCR:

tesseract multiLanguageText.png output hocr

Кроме того, мы можем использовать tesseract -помощь и tesseract -помощь-дополнительная команды для получения дополнительной информации об использовании командной строки tesseract.

5. Tess4J

Tess4J — это обертка Java для API Tesseract, которая обеспечивает поддержку OCR для различных форматов изображений, таких как JPEG, GIF, PNG и BMP.

Во-первых, давайте добавим последние tess4j Maven зависимость от нашей пом.xml :


    net.sourceforge.tess4j
    tess4j
    4.5.1

Тогда мы можем использовать Тессеракт класс, предоставляемый tess4j для обработки изображения:

File image = new File("src/main/resources/images/multiLanguageText.png");
Tesseract tesseract = new Tesseract();
tesseract.setDatapath("src/main/resources/tessdata");
tesseract.setLanguage("eng");
tesseract.setPageSegMode(1);
tesseract.setOcrEngineMode(1);
String result = tesseract.doOCR(image);

Здесь мы установили значение datapath в расположение каталога, который содержит osd.traineddata и eng.traineddata Файлы.

Наконец, мы можем проверить Струнные выход обработанного изображения:

Assert.assertTrue(result.contains("Der ,.schnelle" braune Fuchs springt"));
Assert.assertTrue(result.contains("salta sopra il cane pigro. El zorro"));

Кроме того, мы можем использовать setHocr метод получения html-вывода:

tesseract.setHocr(true);

По умолчанию библиотека обрабатывает все изображение. Тем не менее, мы можем обработать определенный раздел изображения с помощью java.awt.Rectangle объект при вызове doOCR метод:

result = tesseract.doOCR(imageFile, new Rectangle(1200, 200));

Как и Tess4J, мы можем использовать Тессеракт Платформа для интеграции Tesseract в Java-приложения. Это обертка JNI API Tesseract на основе Пресеты JavaCPP библиотека.

6. Заключение

В этой статье мы исследовали двигатель Tesseract OCR с несколькими примерами обработки изображений.

Во-первых, мы изучили тессеракт командно-линейный инструмент для обработки изображений, а также набор аргументов, таких как -l , -psm и -Ом .

Затем мы изучили tess4j , обертка Java для интеграции Tesseract в Java-приложениях.

Как обычно, все реализации кода доступны более на GitHub .