Автор оригинала: 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 .