
Я всегда находилТехнология 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. Наша компания использует его в своем веб-приложении уже год и мы планируем продлить лицензию. Очень хорошее качество распознавания, интерфейс командной строки, распознавание на многих языках.