Алгоритм обнаружения присутствия текста на изображении - PullRequest
36 голосов
/ 05 января 2011

С моим новым заданием я ищу способ обнаружения присутствия текста на изображении. Изображение является картой - это может быть, например, карта Google. Задача состоит в том, чтобы определить местоположение метки улицы / города.

Я знаю, что в библиотеке opencv есть алгоритм, который может обнаруживать особенности (например, человеческие лица) - классификатор Хаара или боров (гистограмма ориентированных градиентов), но я слышал, что процесс обучения таких алгоритмов довольно труден.

Вам известен какой-либо алгоритм, метод или библиотека, которые могли бы это сделать (обнаружить присутствие текста на изображении)?

Спасибо, John

Ответы [ 3 ]

21 голосов
/ 06 января 2011

Существует стандартная проблема со зрением, называемая распознаванием текста на изображениях. это очень отличается от OCR. OCR согласуется с тем, что он говорит, в то время как обнаружение текста заключается в определении наличия текста на изображении. Третья ссылка Ади Шавита - это метод решения этой проблемы. Вы можете посмотреть в google scholar хорошо цитируемые статьи о обнаружении текста .

16 голосов
/ 05 января 2011

Существует несколько возможных подходов.

  1. Использовать OCR. Поиск OCR в Stackoverflow покажет много вариантов. К ним относятся Тессеракт и Ocropus .
  2. Если в вашем тексте используется очень определенный фиксированный шрифт, вам может понадобиться простое сопоставление с шаблоном .
  3. В более общем случае вам может понадобиться взглянуть на " Обнаружение текста в естественных сценах с преобразованием ширины обводки "

ОБНОВЛЕНИЕ январь 2017 г.
Модуль поддержки OpenCV 3.2 теперь имеет модуль обнаружения текста .
Также включает образец того, как его использовать.

0 голосов
/ 21 сентября 2013

Вам нужно настроить это на определенный тип изображений карты, иначе проблема будет очень сложной (см. Предыдущий пост о ссылках на статьи).

OCR - это путь, и вы должны использовать существующую библиотеку. Тем не менее, OCR в основном делается на тексте на белом фоне. Чтобы свести вашу проблему к обычной проблеме распознавания текста, вы должны попытаться поработать над цветовым пространством карты. Вероятно, текст карты имеет очень специфический цвет, и этого может быть достаточно, чтобы найти эти пиксели. Затем вы можете отфильтровать обнаруженные пиксели по размеру подключенных областей.

Если вы в буквальном смысле хотите найти только расположение текстовых меток, вы можете сделать это и пропустить шаг OCR. Если метки не слишком близки, можно использовать простые алгоритмы кластеризации, чтобы найти их соответствующие позиции.

...