C ++ Библиотека для распознавания изображений: изображения, содержащие слова в строку - PullRequest
6 голосов
/ 20 января 2009

Кто-нибудь знает библиотеку c ++ для съемки и распознавания изображений, чтобы она могла находить буквы на основе заданного шрифта и / или высоты шрифта? Даже тот, который не позволяет вам выбрать шрифт, был бы хорош (например: readLetters (Image image).

Ответы [ 5 ]

7 голосов
/ 23 января 2009

В последнее время я много разбираюсь в этом. Ваше лучшее - просто Тессеракт. Если вам нужен анализ макета поверх OCR, тогда используйте Ocropus (который в свою очередь использует Tesseract для выполнения OCR). Анализ компоновки относится к способности определять положение текста на изображении и выполнять такие операции, как сегментация линий, сегментация блоков и т. Д.

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

  1. Увеличение / уменьшение входного изображения до 300 точек на дюйм.
  2. Удалить цвет с изображения. Серая шкала это хорошо. Я фактически использовал порог дизеринга и сделал свой ввод черно-белым.
  3. Вырежьте ненужный мусор из вашего изображения. Для всех трех вышеперечисленных я использовал netbpm (набор инструментов для работы с изображениями для Unix), чтобы достичь точки, где я получал почти 100-процентную точность для того, что мне было нужно.

Если у вас сильно настроенный шрифт и вы используете только тессеракт, вам нужно «обучить» систему - в основном вам нужно предоставить кучу обучающих данных. Это хорошо задокументировано на сайте tesseract-ocr. По сути, вы создаете новый «язык» для своего шрифта и передаете его с параметром -l.

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

С точки зрения вызова Tesseract / Ocropus оба являются C ++. Это будет не так просто, как ReadLines (Image), но есть API, который вы можете проверить. Вы также можете вызвать из командной строки.

5 голосов
/ 20 января 2009

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

3 голосов
/ 20 января 2009

Существует tesseract-ocr , которая является профессиональной библиотекой для этого.

Оттуда веб-сайт

Двигатель Tesseract OCR был одним из трех лучших двигателей в тесте точности UNLV 1995 года. Между 1995 и 2006 годами над ней мало что было сделано, но, возможно, это один из самых точных механизмов распознавания текста с открытым исходным кодом

1 голос
/ 20 января 2009

Я думаю, что вы хотите Гипотеза . Раньше был проектом libgocr. Я не использовал его в течение нескольких лет, но это было очень надежно, если вы установили ключ.

0 голосов
/ 21 декабря 2016

Библиотека Tesseract OCR дает довольно точные результаты, это библиотеки C и C ++. Мои начальные результаты были примерно на 80% точными, но с применением предварительной обработки изображений перед подачей для распознавания, результаты были примерно на 95% точными. Что такое предварительная обработка:

1) Бинаризация растрового изображения (B & W работал лучше для меня). Как это можно сделать

2) Изменение размера изображения до 300 dpi

3) Сохраните изображение в формате без потерь, таком как LZW TIFF или CCITT Group 4 TIFF.

...