C ++ Библиотека для распознавания изображений: изображения, содержащие слова в строку

StackOverflow https://stackoverflow.com/questions/462860

Вопрос

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

Это было полезно?

Решение

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

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

<Ол>
  • Увеличение / уменьшение входного изображения до 300 т / д.
  • Удалить цвет с изображения. Серая шкала это хорошо. Я фактически использовал порог дизеринга и сделал свой ввод черно-белым.
  • Вырежьте ненужный мусор из вашего изображения. Для всех трех вышеперечисленных я использовал netbpm (набор инструментов для работы с изображениями для Unix), чтобы достичь точки, где я получал почти 100-процентную точность для того, что мне было нужно.
  • Если у вас сильно настроенный шрифт и вы используете только tesseract, вам нужно " Train " система - в основном вы должны предоставить кучу тренировочных данных. Это хорошо задокументировано на сайте tesseract-ocr. По сути, вы создаете новый & Quot; language & Quot; для вашего шрифта и передать его с параметром -l.

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

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

    Другие советы

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

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

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

      

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

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

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

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

    2) Передискретизируйте изображение до 300 dpi

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top