Tesseract что это
Перейти к содержимому

Tesseract что это

  • автор:

Распознавание текста с помощью OCR

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

OCR использует нейронные сети для поиска и распознавания текста на изображениях.

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

На одном из проектов стояла задача распознать чеки с фотографий.

Инструментом для распознавания был использован Tesseract OCR. Плюсами данной библиотеки можно отметить обученные языковые модели (>192), разные виды распознавания (изображение как слово, блок текста, вертикальный текст), легкая настройка. Так как Tesseract OCR написан на языке C++, был использован сторонний wrapper c github.

Различиями между версиями являются разные обученные модели (версия 4 имеет большую точность, поэтому мы использовали её).

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

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

Также был найден способ обработки изображения для его дальнейшего распознавания путем использования библиотеки OpenCV. Так как OpenCV написан на языке C++, и не существует оптимального для нашего решения написанного wrapper’а, было решено написать собственный wrapper для этой библиотеки с необходимыми для нас функциями обработки изображения. Основной сложностью является подбор значений для фильтра для корректной обработки изображения. Также есть возможность нахождения контуров чеков/текста, но не изучено до конца. Результат получился лучше (на 5-10%).

language — язык текста с картинки, можно выбрать несколько путем их перечисления через «+»;

pageSegmentationMode — тип расположения текста на картинке;

charBlacklist — символы, которые будут игнорироваться ignoring characters.

Использование только Tesseract дало точность ~70% при идеальном изображении, при плохом освещении/качестве картинки точность была ~30%.

Vision + Tesseract OCR

Так как результат был неудовлетворителен, было решено использовать библиотеку от Apple — Vision. Мы использовали Vision для нахождения блоков текста, дальнейшего разделения изображения на отдельные блоки и их распознавания. Результат был лучше на ~5%, но и появлялись ошибки из-за повторяющихся блоков.

Недостатками этого решения были:

  1. Скорость работы. Скорость работы уменьшилась >4 раза (возможно, существует вариант распоточивания)
  2. Некоторые блоки текста распознавались более 1 раза
  3. Текст распознается справа налево, из-за чего текст с правой части чека распознавался раньше, чем текст слева.

MLKit

Еще одним из методов определения текста является MLKit от Google, развернутый на Firebase. Данный метод показал наилучшие результаты (~90%), но главным недостатком этого метода является поддержка только латинских символов и сложная обработка разделенного текста в одной строке (наименование — слева, цена — справа).

В итоге можно сказать, что распознать текст на изображениях — задача выполнимая, но есть некоторые трудности. Основной проблемой является качество (размер, освещенность, контрастность) изображения, которую можно решить путем фильтрации изображения. При распознавании текста при помощи Vision или MLKit были проблемы с неверным порядком распознавания текста, обработкой разделенного текста.

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

  • C++
  • Обработка изображений

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

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

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

2. Тессеракт​

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

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

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

3. Настройка​

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

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

 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 

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

 brew install tesseract-lang 

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

 yum install tesseract 

Аналогичным образом добавим языковую поддержку:

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

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

Для Windows мы можем получить установщики от Tesseract в UB Mannheim .

4. Командная строка Tesseract​

4.1. Бежать​

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

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

./f181645bd123518ed9ec561114e26be5.png

Затем мы запустим команду tesseract, чтобы прочитать снимок foreach.png и записать текст в файл output.txt :

 tesseract foreach.png output 

Файл 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 :

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

./cdf8e4539063d47e1097d35b11f965ce.png

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

 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 для обработки изображений.

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

./e23eeb71be633127fe10ae079b07f73a.png

4.4. Режим механизма оптического распознавания символов​

Точно так же мы можем использовать различные режимы движка, такие как устаревший и LSTM-движок, при обработке изображений.

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

 tesseract multiLanguageText.png output --oem 1 

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

4.5. Тессдата​

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

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

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

Если мы используем устаревший механизм 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 и либо сохранить их в расположении tessdata по умолчанию, либо объявить расположение с помощью аргумента –tessdata-dir :

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

4.6. Выход​

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

Например, чтобы получить PDF-файл с возможностью поиска:

 tesseract multiLanguageText.png output pdf 

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

Аналогично для вывода hOCR:

 tesseract multiLanguageText.png output hocr 

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

5. Тесс4Дж​

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

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

 dependency>   groupId>net.sourceforge.tess4jgroupId>   artifactId>tess4jartifactId>   version>4.5.1version>   dependency> 

Затем мы можем использовать класс Tesseract , предоставленный 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); 

Здесь мы установили значение пути к каталогу, содержащему файлы 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 для интеграции Tesseract в приложения Java. Это JNI-оболочка API-интерфейсов Tesseract, основанная на библиотеке пресетов JavaCPP .

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

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

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

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

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

  • 1. Обзор
  • 2. Тессеракт
  • 3. Настройка
  • 4. Командная строка Tesseract
    • 4.1. Бежать
    • 4.2. Языковая поддержка
    • 4.3. Режим сегментации страницы
    • 4.4. Режим механизма оптического распознавания символов
    • 4.5. Тессдата
    • 4.6. Выход

    Что такое тессеракт? Четырехмерный объект, который невозможно построить

    Тессеракт — это четырехмерный гиперкуб с 24 гранями, 32 ребрами и 16 вершинами. Он может быть создан путем утолщения куба в четвертом измерении. Хотя тессеракт невозможно построить физически, мы можем визуализировать его в нашем трехмерном мире.

    Идея четвертого пространственного измерения манила людей с момента ее появления. В физике три измерения представляют собой пространство (x,y,z), а четвертое измерение — время (t). Однако в абстрактной математической концепции может существовать бесконечное число пространственных измерений.

    Давайте попробуем понять четвертое измерение. В геометрии четырехмерный аналог куба называется тессерактом. Его легко экстраполировать, рассматривая более низкие измерения.

    • Нульмерный куб — это точка, вершина.
    • Одномерный куб — это отрезок прямой с 2 ​​вершинами (по одной на каждом конце). Его можно создать путем увеличения толщины точки в одном измерении.
    • Двумерный куб — это квадрат с 4 вершинами. Его можно создать, увеличив толщину отрезка линии во втором измерении.
    • Трехмерный куб — это куб с 8 вершинами, созданный путем увеличения толщины квадрата в третьем измерении.

    Аналогично, четырехмерный куб (также известный как гиперкуб или тессеракт) имеет 16 вершин. Он может быть создан путем сгущения куба в четвертом измерении. Но поскольку мы живем в трехмерном мире, построить четырехмерный объект невозможно.

    В целом можно сказать, что тессеракт относится к кубу так же, как куб относится к квадрату. У него 24 грани, 32 ребра и 16 вершин.

    Тессеракт очень трудно визуализировать

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

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

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

    С другой стороны, физики и математики, имеющие опыт работы с более высокоразмерными пространствами, более способны, чем остальные, визуализировать их в своем мозгу.

    Давайте попробуем визуализировать тессеракт

    Как куб можно спроецировать в двухмерное пространство, так и тессеракт можно спроецировать в трехмерное пространство.

    Поверхность трехмерного куба содержит 6 квадратных граней; аналогично гиперповерхность тессеракта содержит 8 кубических ячеек.

    Тессеракт можно развернуть на 8 кубиков в трехмерном пространстве (рис. 2). Это похоже на развертывание куба на 6 квадратов в двумерном пространстве. Разворачивание геометрического объекта [с плоскими сторонами] называется сеткой. В тессеракте 261 сетка.

    Существует два типа четырехмерных вращений:

    1) Простые вращения: трехмерная проекция Тессеракта (рис. 3), выполняющая простое вращение вокруг плоскости, разделяющей пополам фигуру сверху вниз и спереди слева направо.

    2) Двойное вращение: трехмерная проекция тессеракта (рис. 4), показывающая двойное вращение вокруг двух ортогональных плоскостей.

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

    Тессеракт был открыт в 1888 году

    Слово «тессеракт» было придумано британским математиком и писателем-фантастом Чарльзом Говардом Хинтоном. Он впервые использовал это слово в 1888 году в своей книге «Новая эра мышления». Он также придумал несколько новых слов для описания элементов в четвертом измерении.

    С тех пор слово «тессеракт» используется в различных видах искусства, архитектуры и научно-фантастических историях (таких, как «Мстители» и «Агенты «Щ.И.Т.»»), где оно не имеет ничего общего с четырехмерным гиперкубом.

    Последние исследования

    Пространственные представления человека не ограничены трехмерным миром

    Группа исследователей из Университета Иллинойса, США, провела исследование, чтобы выяснить, может ли человек развить интуитивное понимание четырехмерного пространства. Для получения точных результатов они использовали виртуальную реальность (VR).

    Данные показывают, что люди, не имеющие специальной практики, могут научиться делать пространственные суждения о длине и угле между линейными сегментами, встроенными в четырехмерное пространство, просматриваемое в виртуальной реальности. Их суждение включало данные как трехмерной проекции, так и четвертого измерения. Основные представления были основаны на визуальных образах (установленных алгебраической природы), хотя и примитивных и недолговечных.

    Общее число возможных измерений во Вселенной

    В то время как общая теория относительности рисует картину четырехмерной Вселенной, теория суперструн утверждает, что она имеет 10 измерений, а расширенная версия, называемая М-теорией, утверждает, что она имеет 11 измерений. В бозонической теории струн пространственное время 26-мерно. Эти теории просто представляют собой математические уравнения. Они настолько сложны, что никто не знает их точной формы.

    Эксперимент по изучению теоретических материалов в четырехмерном пространстве

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

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

    Как эти исследования могут быть полезны в нашем трехмерном мире? Скажем, квазикристаллы (широко используемые для покрытия некоторых антипригарных сковородок), как было показано, имеют скрытые измерения. Этот эксперимент может помочь нам понять физику этого скрытого измерения. Затем эта физика может быть использована в качестве принципа проектирования нового фотонного оборудования.

    Описание системы Tesseract OCR

    Tesseract – это программный движок с открытым исходным кодом, позволяющий распознавать символы с поддержкой кодировки Unicode и возможностью распознавания более 130 языков, а также с возможностью дополнения для распознавания других языков.

    Программное решение Tesseract (рус. Тессеракт) с открытым исходным кодом от компании Google предназначено для распознавания текста (англ. OCR). Программа распространяется бесплатно и доступна для использования по лицензии Apache 2.0.

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

    Программный движок Tesseract не имеет встроенного графического интерфейса (GUI), но есть несколько доступных вариантов графического интерфейса от третьих сторон. Система поддерживает широкий спектр языков для распознавания – более 130.

    Подробнее: https://opensource.google/projects/tesseract
    Читать далее

    Назначение системы Tesseract OCR

    Разработчик системы Tesseract OCR

    Компания-разработчик
    Страна
    Головной офис

    Маунтин-Вью, Калифорния

    Веб-сайт

    https://about.google/intl/ru_ru/

    Социальные сети

    Вопросы и ответы

    Возможно ли устанавливать Tesseract OCR на компьютер с ОС Windows?
    Поддерживает ли Tesseract OCR русский язык?
    Какие языки поддерживает Tesseract OCR?
    Есть ли у Tesseract OCR демонстрационная или бесплатная пробная версия?
    Какие существуют варианты установки Tesseract OCR?
    Существует ли бесплатная версия Tesseract OCR?

    Популярные аналоги Tesseract OCR

    МТС Видеонаблюдение и видеоаналитика – это онлайн-сервис для организации интеллектуального наблюдения за автомобилями, пассажирами, сотрудниками и иными рабочими объектами.

    Dataiku Data Science Studio – это система анализа данных для различных компаний, независимо от их опыта, отрасли или размера, стремящихся создать стратегические преимущества бизнеса, основанные на данных..

    Diffbot – это онлайн-сервис, включающий в себя набор инструментов (Extraction APIs, Knowledge Graph, Crawlbot) для превращения неструктурированных веб-данных в структурированную и полезную для бизнеса информацию.

    Программное обеспечение B3 – это корпоративное программное решение, объединяющее системы и сотрудников с бизнес-информацией, в которой они нуждаются, и прикладными знаниями, которые необходимы для бизнес-анализа.

    Yandex Vision – это онлайн-сервис визуальной аналитики, позволяющий реализовывать распознавание текста и объектов на изображениях с помощью программных моделей машинного обучения. Сервис используется на базе программного интерфейса (API).

    Видеоинтеллект – это программная система интеллектуализации видеонаблюдения для проведения автоматического анализа видеопотока и предиктивной видеоаналитики при помощи технологий AI и ML.

    Функции Tesseract OCR

    Наличие API
    Анализ визуально-графических данных
    Отчётность и аналитика
    Администрирование
    Многопользовательский доступ
    Анализ видео-данных
    Анализ структурированных данных
    Анализ данных текста
    Импорт/экспорт данных
    Анализ звуковых данных
    Главная > Системы оптического распознавания символов (OCR) > Tesseract OCR

    Информация о Tesseract OCR

    Tesseract OCR

    Специалист
    Подходит для
    Персональный компьютер, Сервер предприятия
    Развёртывание
    macOS, Windows, Linux
    Графический интерфейс
    Тарификация
    Русский, Английский, Азербайджанский, Арабский ещё 38
    Поддержка языков
    Не включен
    Реестр российского ПО
    Демо версия
    Пробная версия (триал)
    Свободное ПО

    Краткий обзор Tesseract OCR

    Tesseract – это программный движок с открытым исходным кодом, позволяющий распознавать символы с поддержкой кодировки Unicode и возможностью распознавания более 130 языков, а также с возможностью дополнения для распознавания других языков. Программное решение Tesseract (рус. Тессеракт) с открытым исходным кодом от компании Google предназначено для распознавания текста (англ. OCR). Программа распространяется бесплатно и доступна для использования по лицензии Apache 2.0.

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

    Программный движок Tesseract не имеет встроенного графического интерфейса (GUI), но есть несколько доступных вариантов графического интерфейса от третьих сторон. Система поддерживает широкий спектр языков для распознавания – более 130.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *