OCR в системах Linux

OCR в системах Linux

Я всегда находилТехнология OCRотставать от систем с открытым исходным кодом. Я также наблюдал заПроект Окропусс момента его появления. Я пробовал то, что, как я слышал, является лучшим движком OCR для Linux,Тессеракт, и обнаружили, что его катастрофически не хватает для деловых документов. Есть ли другие более многообещающие реализации OCR? А как насчет еще более многообещающей цели интерпретации рукописного текста? Что возможно в системах *nix в этой области?

решение1

Тессеракт

По состоянию на 2020 год лучшим доступным программным обеспечением OCR с открытым исходным кодом являетсяТессеракт 4с его новымМодель OCR нейронной сети LSTM. Его производительность OCR намного выше, чем у предыдущей модели OCR, используемой в версии 3.

Пример (создание PDF-файла output.pdfс текстовым слоем для отсканированного немецкого документа):

$ echo page-*.png > input.list
$ tesseract --oem 1 -l deu input.list output pdf

( --oem 1включает движок LSTM)

Вывести распознанный текст на стандартный вывод:

$ tesseract --oem 1 -l deu page page-0001.png stdout

Список установленных языков:

$ tesseract --list-langs

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

С новой моделью LSTM Tesseract черпает вдохновение изOCRopusисследовательский проект.

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

Клинопись

КлинописьПроизводительность OCR не так уж и плоха, но она не поддерживается активно (последний выпуск в 2011 году, версия 1.1) и часто дает сбои, а также имеет некоторые другие проблемы:

Отключить алгоритм макета можно следующим образом:

$ cuneiform --singlecolumn -l ger -f text -o foo.txt image-0001

( -lуказывает язык исходного документа)

окрад

Окрадпример вызова:

$ ocrad -F utf8 image-0001

По умолчанию текст выводится на стандартный вывод.

В деловом документе было пропущено подчеркнутое слово, тогда как в cuneiform/tesseract/gocr этого не было.

В руководстве Ocrad есть раздел, посвященныйиспользуемые алгоритмы, например:

5) Определить символы и сгруппировать их в строки.
6) Распознать символы (очень нестандартно; один алгоритм на символ).
7) Исправить некоторые неоднозначности (преобразовать 1.000 в 1.000 и т. д.).

ГОКР

ГОКРпример вызова:

$ gocr image-0001

По умолчанию текст выводится на стандартный вывод.

Документация GOCR не содержит подробной информации о том, какие модели/методы используются для OCR.

Аппаратное обеспечение

В своем умеимеет очень хорошую поддержку для некоторых сканеров с автоматической подачей документов (ADF), например, дляВидениеиФудзицуодни.

В комплект Sane входит scanimageпрограмма командной строки, которую можно использовать для создания скриптовых конвейеров сканирования (см., например, мойadf2pdf.pyсценарий).

решение2

Я нашеланалогичный вопрос на StackOverflowиAsprise OCR SDK, один из связанныхкоммерческийпродукты, может похвастаться версией для Linux.

решение3

... OCR — это больше, чем «только распознавание символов». Обработка изображений, предварительная обработка — анализ страницы/макета для поиска текстов, изображений, таблиц или штрихкодов. Для распознавания вам придется иметь дело с разными шрифтами, размерами и языками. Это важно, потому что для получения хороших результатов вам придется использовать словари и определения языков. Наконец, люди ожидают больше возможностей экспорта, чем просто текст (например, XML, RTF или PDF с возможностью поиска). Существуют некоторые коммерческие варианты для SDK, но они недешевы и бесплатны.

Недавно я нашелCLI OCR для Linux от ABBYY. Существует бесплатная пробная версия на 100 страниц.

решение4

Если у вас есть бюджет, я настоятельно рекомендуюABBYY FineReader Engine CLI для Linux. Наша компания использует его в своем веб-приложении уже год и мы планируем продлить лицензию. Очень хорошее качество распознавания, интерфейс командной строки, распознавание на многих языках.

Связанный контент