Библиотека C++ для распознавания образов: изображения, содержащие слова в строку
Кто-нибудь знает библиотеку c++ для получения изображения и выполнения распознавания изображений на нем таким образом, что он может найти буквы, основанные на заданном шрифте и/или высоте шрифта? Даже тот, который не позволяет вам выбрать шрифт, был бы хорош (например: readLetters (Image image).
5 ответов:
В последнее время я много этим занимаюсь. Самое лучшее - это просто Тессеракт. Если вам нужен анализ макета поверх OCR, то пойдите с Ocropus (который в свою очередь использует Tesseract для выполнения OCR). Анализ макета относится к способности определять положение текста на изображении и делать такие вещи, как сегментация линий, сегментация блоков и т. д.
Экспериментируя с Тессерактом, я нашел несколько действительно хороших советов, которыми стоит поделиться. В основном мне пришлось сделать много предварительной обработки для изображение.
- увеличьте / уменьшите входное изображение до 300 точек на дюйм.
- удалите цвет из изображения. Серая шкала-это хорошо. Я фактически использовал порог dither и сделал свой вход черно-белым.
- вырежьте ненужный мусор из вашего образа. Для всех трех вышеперечисленных я использовал netbpm (набор инструментов для обработки изображений для unix), чтобы добраться до точки, где я получал почти 100-процентную точность для того, что мне было нужно.
Если у вас есть сильно настроенный шрифт и вы используете только tesseract вы должны "тренировать" систему-в основном вы должны кормить кучу обучающих данных. Это хорошо задокументировано на сайте tesseract-ocr. Вы, по сути, создаете новый "язык" для вашего шрифта и передаете его с параметром-l.
Другой механизм обучения, который я нашел, был с Ocropus, использующим обучение nueral net (bpnet). Для построения хорошей статистической модели требуется много исходных данных.
В терминах вызова Tesseract/Ocropus оба являются C++. Это будет не так просто, как кажется. ReadLines (изображение), но есть API, который вы можете проверить. Вы также можете вызвать через командную строку.
Хотя я не могу рекомендовать один из них в частности, термин, который вы ищете, - OCR (оптическое распознавание символов).
Существует tesseract-ocr, которая является профессиональной библиотекой для этого.
Оттуда веб-сайт
Двигатель Tesseract OCR был одним из трех лучших двигателей в 1995 году при испытании на точность UNLV. Между 1995 и 2006 годами над ним было проделано мало работы, но это, вероятно, один из самых точных доступных движков OCR с открытым исходным кодом
Я думаю, что вы хотите гипотезу. Раньше это был проект libgocr. Я не использовал его в течение нескольких лет, но он был очень надежным, если вы установили ключ.
БиблиотекаTesseract OCR дает довольно точные результаты, ее библиотека C и C++. Мои первоначальные результаты были примерно на 80% точными, но при предварительной обработке изображений перед подачей на OCR результаты были примерно на 95% точными. Что такое предварительная обработка:
1) бинаризация растрового изображения (B&W работал лучше для меня). Как это можно сделать
2) пересчет изображения до 300 точек на дюйм
3) Сохраните изображение в формате без потерь, например LZW TIFF или CCITT Группа 4 TIFF.
Comments