@mostalk

Как реализовать чтение текста над линиями OpenCV?

Приветствую, есть документ с линиями над которыми есть текст. Думаю нужно найти линию по высоте текста сделать прямоугольник и его отправить в тессеракт, а вот как это правильно сделать не знаю.
Или может есть другие более простые варианты реализации?
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
@Nuchimik
Под документом вы подразумеваете Word, PDF, другой формат или обычное изображение? Или в этих документах содержатся изображения с текстом?

Если же ваша задача состоит в том, чтобы распознавать текст в определенных местах (т.е. вам не нужен сырой текст, распознанный тессерактом, а важно местоположение этого текста), вы можете следовать следующему алгоритму:
  1. Извлечь изображение с линиями и текстом из вашего документа (этот шаг опционален, потому что не известен формат входящих данных из вашего вопроса).
  2. Применить медианную фильтрацию. Данный вид фильтрации хорошо подойдет для вашей задачи, а также достаточно просто в понимании. О ней вы можете почитать тут и тут (обзор простых фильтров и немного мат. части по фильтрам). Данный фильтр отлично справляется с мелким шумом и не размывает границы, что очень важно для вашей задачи. Пример на opencv
  3. Далее вам необходимо найти линии. Подразумеваю, что они горизонтальные. Но даже если не так, это не страшно. Вы можете использовать преобразования Хафа. Но перед этим, вы должны использовать какой-нибудь детектор границ. Самым распространенным является детектор границ Кэнни (Статья на Хабре). Пример на opencv
  4. По найденным линиям, вы можете определить, необходимо ли повернуть изображение, если линии не строго горизонтальные. Данный шаг необходим для получения более точных результатов от тессертакта.
  5. После чего, просто сортируете в нужном вам порядке линии и по координатам извлекаете текст.


P.S. Данный алгоритм применим для задачи, которую вы описали в вопросе.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы