Linux text from image

Use gImageReader to Extract Text From Images and PDFs on Linux

Last updated March 8, 2021 By Ankush Das 33 Comments

Brief: gImageReader is a GUI tool to utilize tesseract OCR engine for extracting texts from images and PDF files in Linux.

gImageReader is a front-end for Tesseract Open Source OCR Engine. Tesseract was originally developed at HP and then was open-sourced in 2006.

Basically, the OCR (Optical Character Recognition) engine lets you scan texts from a picture or a file (PDF). It can detect several languages by default and also supports scanning through Unicode characters.

However, the Tesseract by itself is a command-line tool without any GUI. So, here, gImageReader comes to the rescue to let any user utilize it to extract text from images and files.

Let me highlight a few things about it while mentioning my experience with it for the time I tested it out.

gImageReader: A Cross-Platform Front-End to Tesseract OCR

To simplify things, gImageReader comes in handy to extract text from a PDF file or an image that contains any kind of text.

Whether you need it for spellcheck or translation, it should be useful for a specific group of users.

To sum up the features in a list, here’s what you can do with it:

  • Add PDF documents and images from disk, scanning devices, clipboard and screenshots
  • Ability to rotate images
  • Common image controls to adjust brightness, contrast, and resolution
  • Scan images directly through the app
  • Ability to process multiple images or files in one go
  • Manual or automatic recognition area definition
  • Recognize to plain text or to hOCR documents
  • Editor to display the recognized text
  • Can spellcheck the text extracted
  • Convert/Export to PDF documents from hOCR document
  • Export extracted text as a .txt file
  • Cross-platform (Windows)

Installing gImageReader on Linux

Note: You need to explicitly install Tesseract language packs to detect from images/files from your software manager.

You can find gImageReader in the default repositories for some Linux distributions like Fedora and Debian.

For Ubuntu, you need to add a PPA and then install it. To do that, here’s what you need to type in the terminal:

You can also find it for openSUSE from its build service and AUR will be the place for Arch Linux users.

All the links to the repositories and the packages can be found in their GitHub page.

Experience with gImageReader

gImageReader is a quite useful tool for extracting texts from images when you need them. It works great when you try from a PDF file.

For extracting images from a picture shot on a smartphone, the detection was close but a bit inaccurate. Maybe when you scan something, recognition of characters from the file could be better.

So, you’ll have to try it for yourself to see how well it works for your use-case. I tried it on Linux Mint 20.1 (based on Ubuntu 20.04).

I just had an issue to manage languages from the settings and I didn’t get a quick solution for that. If you encounter the issue, you might want to troubleshoot it and explore more about it how to fix it.

Other than that, it worked just fine.

Do give it a try and let me know how it worked for you! If you know of something similar (and better), do let me know about it in the comments below.

Like what you read? Please share it with others.

Источник

Оптическое распознавание символов в Linux

Введение

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

Пару слов для того, чтобы вникнуть в суть описываемых процессов.
OCR – оптическое распознавание символов.
Технология необходима для оцифровки печатных документов; некоторые используют OCR в целях автоматизации (к примеру, для распознавания капчи или для защиты от спам-ботов).

OCR в Linux

Повторюсь еще раз: здесь будут рассмотрены программы, распознающие русский язык. Под Linux есть несколько OCR, предназначенных для работы с латиницей, есть специализированные комплексы, работающие только с ивритом, к примеру, – все это не относится к нашей теме.
По сути, речь будет идти только о трех продуктах: Cuneiform, Tesseract и Finereader Engine. Все они сами по себе предоставляют только консольный интерфейс, хотя для первых двух разработано достаточно GUI.

Я использую Debian Squeeze, но зачастую буду давать ссылки на исходники и пояснять сборку пакетов (можете воспользоваться репозиториями на notesalexp.org или репозиториями вашего дистрибутива — я просто даю пример сборки).
Тема будет раскрываться в следующем порядке:

1. Установка OCR для Linux (3 движка), их установка.
2. Сравнение CLI OCR на примерах.
3. GUI для OCR, их сравнение.
4. Небольшой тест online-OCR.
5. Выводы и некоторые прогнозы и предложения.

Установка OCR для Linux

Cuneiform

Страница о проекте на Википедии.

Заявленные возможности: поддержка множества языков, сохранение форматирования исходного документа, вывод в txt, hocr, html, распознавание факсов и текстов, отпечатанных на матричном принтере.

Мы рассмотрим два реальных пути использования Cuneiform под Linux: нативный и с помощью Wine (в этом есть необходимость, ниже вы сможете убедиться сами).

1. Нативный Cuneiform

Приступим к установке.
Скачиваем исходники и распаковываем их.
Далее все стандартно (см. readme.txt в комплекте с исходниками). Переходим в директорию с исходниками и последовательно выполняем:

2. Установка под Wine.

Плюс этого способа в том, что мы сразу получаем оригинальный функциональный GUI. Версия Wine не важна (Cuneiform работал и под Wine 1.0). Единственная особенность: необходимо в настройках Wine указать новое замещение для библиотеки msvcrt.
Дистрибутив доступен по этой ссылке.

Tesseract.

Страница о проекте на Википедии.
Страница на Google Code.

Заявленные возможности: поддержка множества языков, вывод в txt и hocr, тренировка программы на своих примерах (я это рассматривать не буду, работаем as is), использование файла конфигурации для конкретного образца.

Я в кратком и вольном варианте описываю данный Readme.

Читайте также:  C windows winsxs filemaps что это

Разрешение зависимостей перед установкой:

Также Tesseract зависит от libleptonica-dev версии не ниже 1.67. В Squeeze этот пакет устарел, поэтому пришлось его собирать.
Получаем исходный код, распаковываем и выполняем сборку:

Теперь получаем исходники Tesseract, распаковываем и переходим в директорию с ними.
Далее выполняем:

Tesseract установлен. Получим пакеты для распознавания языков: русского и английского — и распакуем их в директорию tessdata ( /usr/local/share/tessdata по умолчанию).
Можно работать.

FineReader Engine

Анонс можно просмотреть здесь.

Как получить? Идем сюда, внимательно читаем и запрашиваем триал (лимит в 100 распознаваний). Можно попросить и на русском.

Установка проста: скачать, запустить под рутом abbyyocr.run и выполнить текстовые указания.

Заявленные возможности: поддержка множества языков, различных кодировок, работа с паролями, нумерацией страниц, распознавание таблиц, штрихкодов, текстов, отпечатанных на матричном принтере, печатной машинке, готических шрифтов и т.д., вывод в txt, rtf, html, xml, xls.

Rubyquet+

Раз уж я заговорил о CLI OCR, упомяну CLI Rubyquet+ для Tesseract и Cuneiform.
Тестировать я его не стал (этим можете заняться вы) – тот же CLI для вышеупомянутых OCR доступен и сам по себе.

Сравнение CLI OCR

*CLI – command line interface – интерфейс командной строки (“консоль”).

Предупреждаю сразу: этот раздел достаточно объёмный. Если вы хотите обойтись без лишних подробностей и множества букв — рекомендую не раскрывать спойлеры.

Помните: я не претендую на абсолютную объективность сравнения. У вас могут получиться другие результаты и другие выводы.

Обозначу критерии тестирования.

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

Критерий “Неверных слов” — неверно распознанных слов (от одного неверного символа в слове вплоть до полного отсутствия слова) для простоты расчета – самый важный критерий.

Критерий “Неверных символов” — неверно распознанных символов при невозможности применения первого критерия (лишние символы, знаки препинания и т.д.).

Критерий “Ошибки форматирования” — служит для определения качества работы с таблицами, рисунками, определения написания болдом и курсивом.

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

Теперь об образцах.
Что мы чаще всего распознаем? Либо документацию, прошедшую через сканер, либо фотографию документа. Естественно, с различным качеством и разрешением (для OCR рекомендуется сканирование в качестве не ниже 300 dpi, поэтому сравним сканированные образцы 200dpi, 300 dpi и 600dpi; для фотографий используем съемку с качеством 2МП и 5МП). К тому же, на некоторых образцах будут таблицы и картинки.

Распознаваемые изображения я буду давать в виде ссылок на них (их непосредственное присутствие в статье будет только мешать). Результат распознавания по первой ссылке будет доступен на Google Docs, по второй ссылке с пометкой «Оригинал» — в исходном виде на Dropbox

Чтобы не захламлять обзор, вместо путей исходного изображения и полученного текста я буду писать соответственно INPUT и OUTPUT.

Образец №1 (нумерованный список).

Так сложилось, что этот список вопросов, отсканированный в 200 dpi (точек на дюйм), первым попался под руку и постоянно использовался по ходу исследования.
0001.png

Особенности образца: он фактически разделен на 2 столбца (нумерация и сам текст), язык русский с несколькими латинскими символами.

1. Cuneiform.
cuneiform -l ruseng -f rtf —singlecolumn -o ‘OUTPUT’ ‘INPUT’
Синтаксис:
-l ruseng – распознавать в тексте русский и английский (по отдельности было бы, соответственно, rus или eng );
-f rtf – формат вывода RTF (пытаемся сохранить форматирование);
—singlecolumn – воспринимать текст как единый столбец;
-o ‘OUTPUT’ – путь к файлу с текстом;
‘INPUT’ – путь к изображению.

Неверных слов: 14 (в тексте 728 слов)
Неверных символов: 7
Ошибки форматирования: местами не поставил абзацы, ошибочно вводил курсив.

Вывод: правильность распознавания слов – около 98%. Основная ошибка – путаница с “и” и “н”. В одном месте сумел распознать вставку латиницей.
В целом хорошо.

2. Tesseract.
tesseract ‘INPUT’ ‘OUTPUT’ -l rus -psm 6
Синтаксис:
-l rus – 2 языка сразу tesseract не поддерживает;
-psm 6 — “Assume a single uniform block of text”, т.е. форматировать полученный текст единым блоком (иначе нумерация будет аккуратно размещена поперед всего текста – блок все-таки).

Неверных слов: 6 (в тексте 728 слов)
Неверных символов: 5
Ошибки форматирования: при выводе в текстовый файл невозможно сохранить форматирование оригинала, с абзацами работает лучше, чем cuneiform, вставки латиницей распознать не может технически.

Вывод: правильность распознавания слов – около 99%. Текст выглядит приятнее, чем при работе с cuneiform.

3. Finereader.
Сразу отмечу большой минус: насколько я понял, Finereader работает только с правами суперпользователя.
sudo abbyyocr9 -rl Russian English -if ‘INPUT’ -f RTF -of ‘OUTPUT’
Синтаксис:
-rl Russian English – русский и английский языки текста.
-f RTF – вывод в RTF.

Неверных слов: 2 (в тексте 728 слов)
Неверных символов: 0
Ошибки форматирования: почти идеально. 2 ошибки в словах – не смог распознать латиницу.

Вывод: фактически стопроцентная точность.

Вывод по образцу №1: первое место занимает Finereader, второе – Tesseract, третье с минимальным отрывом – Cuneiform.

Образец №2 (сканированный учебник английского).
200dpi.

1. Cuneiform.
cuneiform -l eng -f rtf —singlecolumn -o ‘OUTPUT’ ‘INPUT’

Неверных слов: 2 (в тексте 534 слова)
Неверных символов: 6
Ошибки форматирования: распознал сноски как одинарные кавычки, не справился с квадратными скобками, дефисом и тире; не смог распознать транскрипцию слова.

Вывод: 99% слов. Хорошо.

Результат близок к результату нативной версии.

2. Tesseract.
tesseract ‘INPUT’ ‘OUTPUT’ -l eng -psm 6

Неверных слов: 1 (в тексте 534 слова)
Неверных символов: 4
Ошибки форматирования: нашел пару лишних символов, не справился со сносками.

Вывод: 99% слов. Лучше, чем у cuneiform.

3. Finereader.
sudo abbyyocr9 -rl English -if ‘INPUT’ -f RTF -of ‘OUTPUT’

Неверных слов: 0 (в тексте 534 слова)
Неверных символов: 2
Ошибки форматирования: не распознал одну сноску и номер страницы.

Вывод: 100% слов, распознал курсив. Лучший результат.

Тот же учебник, 300 dpi.

Качество распознавания на том же уровне.

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

Качество распознавания на том же уровне.

Тот же учебник, 600 dpi.

Качество ухудшилось. Появляются лишние символы, дефисы и тире все так же не распознает, потерял букву “U” в слове “Unit”.

Отсутствует “Unit 6”, нет номера страницы, появилось несколько лишних кавычек.

Читайте также:  Windows 10 компьютер не выключается гаснет только монитор

Появился номер страницы, а вместе с ним и горизонтальная линия, превратившаяся в набор точек. Качество не улучшилось.

Вывод по образцу №2: для всех трех систем оптимальным было изображение качеством 200 dpi. При увеличении плотности точек на дюйм либо происходило ухудшение распознавания, либо просто не было подвижек в лучшую сторону.
На первое место по качеству работы я ставлю Finereader, на второе – Tesseract (следует помнить, что он не поддерживает RTF), на третье (с минимальным отставанием) – Cuneiform.

Образец №3 (сфотографированный учебник английского).

Основными особенностями такого изображения являются неравномерность распределения яркости и возможные смазы (“шевеленка” при съемке на длинных выдержках без использования вспышки)
Сразу договоримся, что никаких ручных коррекций изображения проводить не будем (кроме одного примера): как сняли, так сняли.

5МП со вспышкой.

Распознал около 40% текста, остальное превратилось в месиво различных символов.

CuneiformV12 под Wine на этом изображении распознал буквально пару слов. Пример не привожу.

Результат намного лучше, чем у Cuneiform. Верно распознано около 80% текста.

Неверных слов: 3 (в тексте 534 слова)
Неверных символов: 0
Ошибки форматирования: не распознал одну сноску и номер страницы.

Вывод: 99% точность. Отлично.

5МП без вспышки.

Распознал около 20% текста, результат совершенно негодный.

Распознал около 30% текста.

Распознал около 95% текста.

Приведу простой пример того, что предварительная обработка изображения повысит качество распознавания (используем imagemagick для повышения констраста путем нормализации на предыдущем изображении):
convert ‘INPUT’ -normalize ‘OUTPUT’
Результат:
0006_2.JPG

Можете сами сравнить: сейчас результаты определенно лучше.

2МП со вспышкой.

Распознал несколько слов.

Распознал пару десятков слов.

И все равно Finereader показывает высший класс: распознано около 85% текста.

2МП без вспышки.

Распознал пару десятков слов.

Распознал около 60% текста.

Распознал около 95% текста.

Вывод по образцу №3: здесь становится ясно, почему Finereader Engine имеет размер около 400 МБ: у него в комплекте с OCR есть алгоритмы обработки изображений, за счет чего при распознавании фотографий он дает неизменно хороший результат. Средствами же Cuneiform и Tesseract фотографии без хорошей предварительной обработки лучше не распознавать.

Образец №4 (распознавание таблиц и рисунков сканированного изображения).

1. Cuneiform.
cuneiform -l ruseng -f rtf -o ‘OUTPUT’ ‘INPUT’

Вывод: не справился.

В то же время CuneiformV12 под Wine дает неплохой результат (потерял половину изображения, но справился с таблицей).
0009.cun.wine.rtf
(Оригинал)

Форматированный текст он, к сожалению, дать не может.

Когда я открыл этот документ во Writer’е — я очень удивился: таблицы не было (странно: различие реализации такого старого и простого формата, как RTF. ). Однако Word и Google Docs открыли этот RTF правильно.
Finereader отлично справился и с рисунком, и с таблицей.

Вывод по образцу №4: на первом месте Finereader, на втором — CuneiformV12 (нативный Cuneiform с задачей не справился).

Образец №5 (сканированный учебник “Металлические конструкции”).
200dpi.

1. Cuneiform.
cuneiform -l ruseng -f rtf —singlecolumn -o ‘OUTPUT’ ‘INPUT’

Неверных слов: 17 (в тексте 310 слов)
Неверных символов: 12
Ошибки форматирования: не распознал тире, знаки параграфов и процентов. Проблемы с распознаванием “Й”. Ошибочно распознал курсив.

Вывод: 95% слов. Выглядит не очень.

Качество явно выше, чем у нативной версии.

2. Tesseract.
tesseract ‘INPUT’ ‘OUTPUT’ -l rus -psm 6

Неверных слов: 8 (в тексте 310 слов)
Неверных символов: 15
Ошибки форматирования: проблемы с распознаванием “Й”.

Вывод: 97% слов. Лучше, чем у cuneiform.

3. Finereader.
sudo abbyyocr9 -rl Russian English -if ‘INPUT’ -f RTF -of ‘OUTPUT’

Неверных слов: 0 (в тексте 310 слов)
Неверных символов: 5
Ошибки форматирования: проблемы с капитализацией символов.

Вывод: 100% слов. Лучший результат.

300dpi.

В отличие от предыдущего результата, появились больше “Й” и римские цифры. Для части слов распознавание улучшилось, однако вместе с тем появились и новые ошибки и лишние символы.

Вывод: ошибок меньше не стало.

Вывод: ситуация как и в случае с Cuneiform: ошибок меньше не стало.

Вывод: ничего не изменилось.

600dpi.

И Cuneiform, и Tesseract показали снижение качества распознавания, как и в случае с англоязычным образцом. Примеры не привожу (можете проверить сами).

Вывод по образцу №5: подтвердилось наблюдение о том, что использование изображения качеством более, чем 200 dpi, не приводит к улучшению результата.
Первое место занимает Finereader, второе — Tesseract, третье — Cuneiform (причем под Wine он работает лучше).

Образец №6 (сканированная страница рассказа О’Генри).
200dpi.

Неверных слов: 28 (в тексте 316 слов)
Неверных символов: множество.
Ошибки форматирования: ошибочный курсив.

Вывод: 91% слов, очень много ошибок, что неприемлимо для такого образца

Неверных слов: 15 (в тексте 316 слов)
Неверных символов: несколько.
Ошибки форматирования: нету.

Вывод: 95% слов, результат лучше, чем у нативной версии.

Неверных слов: 30 (в тексте 316 слов)
Неверных символов: множество.
Ошибки форматирования: лишние символы.

Вывод: 90% слов, плохо.

Неверных слов: 3 (в тексте 316 слов)
Неверных символов: нету.
Ошибки форматирования: нету.

Вывод по образцу №6: у Cuneiform и Tesseract замечены однотипные ошибки распознавания букв «и»,«н» и «п» из шрифта образца.
Первое место — Finereader, второе — Cuneiform под Wine (нативный Cuneiform сработал хуже), третье — Tesseract.

Образец №7 (сканированная страница книги «Момент истины»).
200dpi.

Неверных слов: 11 (в тексте 323 слова)
Неверных символов: упорно не распознает дефисы и тире.
Ошибки форматирования: ошибочный курсив.

Вывод: 91% слов, плохо.

И версия, распознанная с помощью CuneiformV12:
0014.cun.win.rtf
(Оригинал)

Неверных слов: 1 (в тексте 323 слова)
Неверных символов: 1.
Ошибки форматирования: нету.

Вывод: 99% слов, отлично.

Неверных слов: процентов 30.
Неверных символов: множество.
Ошибки форматирования: лишние символы.

Неверных слов: 0 (в тексте 323 слова)
Неверных символов: нету.
Ошибки форматирования: нету.

Вывод: 100% слов. Идеально.

Вывод по образцу №7: Первое место — Finereader, второе — Cuneiform под Wine (нативный Cuneiform сработал гораздо хуже), третье — Tesseract (результат бесполезно даже корректировать).

Образец №8 (Панграмма с разными шрифтами).

Наконец, последний тест, который выявит зависимость OCR от шрифта (оригинал отпечатан на струйном принтере со средним качеством).

В этом примере для наглядности я при необходимости откорректирую абзацы и наименования шрифтов.

200dpi.

Без ошибок (не считая злосчастного дефиса) распознаны только Arial и Trebuchet MS.

Ошибки только в Courier New и ISOCPEUR.

Без ошибок распознаны Sans-serif, Arial, Courier New, DejaVu Sans, DejaVu Serif, Palladio Uralic, Trebuchet MS, Verdana.

Разница по сравнению с портированным Cuneiform налицо.

Внезапно ошибок раза в три больше, чем в нативной версии.

Ошибки (опять же, не считая проблем с дефисами) есть только в Palladio Uralic, Verdana и ISOCPEUR.

Вывод по образцу №8: С русским лучше всего отработали CuneiformV12 (под Wine) и Tesseract. С английским без ошибок справился Tesseract.

Читайте также:  Компьютер засыпает как отключить windows 10

GUI для Linux.

Зависимости при сборке: libaspell-dev и libqt4-dev не ниже версии 4.5. Для запуска необходимы Qt 4.5 и aspell (см. документацию, поставляемую с исходниками).

Установка (начинаем в директории с исходниками):

Yagf хорошо локализован, может получать изображение из буфера обмена, из файла, со сканера, импортировать pdf, позволяет выравнивать изображение.

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

Cuneiform-Qt

Проект начал и окончил свою активную жизнь в апреле 2009-го года в рамках проекта Altlinux. Cuneiform-Qt предоставляет простой GUI для Cuneiform.

Поскольку ничего особого я от этого GUI не ожидал, то решил ограничиться установкой готового пакета версии 0.1.1-1 (последняя версия исходников 0.1.2 – разработка ушла недалеко).

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

Делаем вывод: этот GUI бесполезен.

KBookOCR

К сожалению, в зависимостях тянет за собой кусок KDE. Запланированная более года назад версия 2.2 предполагает поддержку Tesseract, однако подвижек похоже нету.
Для обзора я использовал Kubuntu 12.04 в Virtualbox.

Версия 2.1 этой софтины умеет получать изображение из файла или путем сканирования, выводить полученный результат в html или открыть в текстовом редакторе. Выделять блоки для распознавания KBookOcr, в отличие от Yagf, не умеет.

Вывод: KBookOcr проигрывает Yagf по функционалу да и предназначен только для KDE.

OCRFeeder


GUI для Cuneiform, Tesseract и пары других OCR, русский язык не поддерживающих. В deb-пакетах представлены только очень старые версии, поэтому будем собирать из исходного кода.

Сразу появляется раздражение: Readme написан к версии 0.3, текущая версия – 0.7.1. Структура файлов изменилась, никакого требуемого setup.py нету. Зато есть ./confugure
Зависимости:

Далее оказывается, что:
Your intltool is too old. You need intltool 0.35.0 or later.
По умолчанию установлен старый пакет intltool-debian: ставим из репозитория пакет intltool версии 0.41.

Набор функций стандартный: открыть/сканировать, сохранить/открыть в редакторе. Есть несколько бонусов: поддерживается unpaper, настройки движка распознавания позволяют передать ему в текстовом виде любые поддерживаемые параметры (к примеру, выбор языка распознавания производится именно так); можно выделять текстовые блоки.

Ocropus

http://code.google.com/p/ocropus/ — то ли GUI, то CLI для Tesseract.
Следуя инструкции, попытался собрать последнюю версию, однако python сказал в отношении какой-то строки исходников:
SyntaxError: invalid syntax
В код лезть не хочется, делаю вывод, что продукт скорее мёртв, чем жив.

gImageReader


GUI для Tesseract.
Берем deb-пакет отсюда.

gImageReader максимально прост: позволяет открыть изображение, подкорректировать на ходу яркость и контраст и распознать текстовую область или все сразу.

Tesseract-gui


Страница проекта.
Пакеты лежат здесь.
У меня распознавать что-либо отказался.

Вывод о GUI:
Единственным реальным плюсом представленных GUI может быть функция распознавания отдельных текстовых блоков (некоторые не могут и этого).
Поэтому я считаю, что существующие GUI для OCR в Linux не функциональны. Если уж выбирать среди них, то по сути единственными приемлемыми окажутся только два: Yagf и OCRFeeder. При этом, Yagf сообществом используется и упоминается гораздо чаще.
Пробуйте и оставляйте свои впечатления.

Тест online-OCR

Небольшой список online-OCR.
Online OCR очень много, и, в принципе, все они реализованы на трех вышеперечисленных движках: Cuneiform, Tesseract и Finereader.
Поскольку данные OCR подпадают под тему этой статьи, рассмотрим пару из них, заодно сделаем интересные выводы.

1. Finereader Online.
finereader.abbyyonline.com/ru
Явно базируется на Finereader Engine 9 (а, может, и 10?) Пробовать не стал, уверен в высоком качестве.
Позволяет бесплатно распознать 10 страниц в сутки.

2. New OCR.
www.newocr.com
Бесплатен, не требует регистрации и не имеет ограничений.
Очень интересный ресурс, который позволит сделать выводы о конечной применимости Cuneiform и Tesseract. Загрузим изображения, с которыми у этих двух систем возникли проблемы, и посмотрим на результат.

Образец №3, 5МП без вспышки

Распознавание с помощью Tesseract:
0006.tes.newocr.txt
(Оригинал)
Результаты онлайн-распознавания очевидно лучше.

Образец №7

Не хватает дефисов и тире, однако в словах только 2 ошибки. Отличный результат.

Распознавание с помощью Tesseract:
0014.tes.newocr.txt
(Оригинал)
6 ошибок в словах, несколько лишних символов — но Tesseract у меня на этом изображении не смог распознать нормальный текст. Пожалуй, самый интересный результат теста.

Вот отличный пример использования свободных OCR: создатели сайта явно применили предварительную обработку изображения и (возможно) постобработку текста (корректировка с помощью словарей или что-то подобное). И в таком виде свободные OCR уже могут конкурировать с Finereader’ом.

Заключение

Мы рассмотрели три системы OCR, умеющие работать с русским и английским языками.

Без сомнения, лучший результат показал FineReader Engine v9.0. Он великолепно распознает как сканированные, так и сфотографированные изображения. Однако, минимальная стоимость его составляет 149€ за лицензию на 12000 распознаваний в год — надо ли вам это?

Свободные OCR: Cuneiform и Tesseract — сами по себе могут адекватно обрабатывать только отсканированные изображения с равномерно распределенной по полю яркостью и высоким контрастом.
С англоязычным образцом неплохо справились оба этих движка, тогда как с русским текстом возникали проблемы — вообще, по ходу теста выяснилось, что результаты работы свободных OCR «плавают» от образца к образцу.
При этом CuneiformV12, запущенный под Wine, с русскими текстами справился лучше, чем нативная версия под Linux.

Интересным оказался тот факт, что на рассмотренных образцах оптимальным качеством изображения было 200 dpi — при большем количестве точек на дюйм начиналось ухудшение качества распознавания.

GUI для Cuneiform и Tesseract создано много, но они не приносят реальной пользы.

На примере FineReader и онлайн-системы New OCR отлично видно, что нормальный функциональный OCR должен обязательно существовать в совокупности с системой предварительной обработки изображений и системой постобработки текста, основанной на словарном контроле результатов.
При этом данная технология для свободных движков уже фактически реализована (у New OCR распознавание происходит весьма качественно).
Достаточно поделиться такой технологией либо реализовать её самим — и свободные OCR будут стоять на одном уровне с продуктами ABBYY — после этого можно говорить о написании хорошего GUI.

Подытожу: свободные OCR не дают стабильного результата даже на отсканированных изображениях, Finereader стоит денег — простому пользователю проще пользоваться онлайн-сервисами.
Ну а если вы собираетесь использовать OCR в других масштабах — тут другой разговор: придется платить или тратить время на корректировку результатов вручную.

Источник

Оцените статью