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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
5 157
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

Спасибо, это полезно. Не удалось найти в Google ничего с тем, что я использовал.

Zombies 20.01.2009 23:08

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

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

The Tesseract OCR engine was one of the top 3 engines in the 1995 UNLV Accuracy test. Between 1995 and 2006 it had little work done on it, but it is probably one of the most accurate open source OCR engines available

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

Ответ принят как подходящий

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

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

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

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

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

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

К сожалению, лучшая документация находится на их веб-сайте и при чтении файлов заголовков и сценариев LUA, которые они предоставляют.

Ish 30.01.2009 01:44

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

1) Сделайте бинаризацию растрового изображения (у меня лучше работал ч / б). Как это могло быть сделано

2) Передискретизация изображения до 300 dpi.

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

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