Вопрос по c++ – Как определить область текста по изображению?

9

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

Я бы пошел к решению для обработки изображений. Попробуйте Google для удаления фоновых методов. Israel Unterman
трудно понять вашу проблему без примера изображения. Пожалуйста, загрузите изображение в imageshack.us и предоставьте ссылку здесь. Abid Rahman K
Почему вы публикуете несколько вопросов? vini
хорошо, это ссылка на образец изображения, из которого я хочу удалить нетекстовую область.imageshack.us/photo/my-images/171/img0052ir.jpg но я думаю, что tesseract управляет всем процессом самостоятельно, поэтому нам не нужно заботиться о том, как выглядит изображение. chostDevil

Ваш Ответ

3   ответа
2

я не очень опытен в обработке изображений, но я надеюсь, что смогу помочь вам с моим теоретическим подходом.

В большинстве случаев текст образует параллельные горизонтальные ряды, в которых пространство между строками будетlots фоновых пикселей. Это может быть использовано для решения этой проблемы. Так что ... если тыcompose в каждом столбце пикселя на изображении вы получите изображение шириной 1 пиксель в качестве вывода. Когда входное изображение содержит текст, с большой вероятностью на выходе будет периодическая структура, где за темными областями следуют многократно более яркие области. Эти & quot;groups& Quot; из более темных пикселей будет указывать положение текстового содержимого, в то время как более яркие & quot;groups& Quot; укажет промежутки между отдельными рядами. Вы, вероятно, обнаружите, что более яркие области будут намного меньше, чем другие. Текст гораздо более общий, чем любой другой элемент изображения, поэтому его легко отделить.

Вы должны реализовать процедуру для обнаружения этих периодических повторений. Как только сценарий может определить, что входное изображение имеет эти характеристики, велика вероятность того, что оно содержит текст.(However, this approach can't distinguish between actual text and simple horisontal stripes...)

Для следующего шага вы должны найти способ определения границ абзацев, используя вышеупомянутый метод. Я думаю о довольно фиктивном алгоритме, который разделит входное изображение на более мелкие узкие полосы (50-100 пикселей), и он проверит эти области отдельно. Затем он сравнил бы эти результаты, чтобы построить карту возможных областей, заполненных текстом. Этот способ не был бы таким точным, но он, вероятно, не беспокоит систему OCR.

И, наконец, вам нужно использовать текстовую карту для запуска OCR только в нужных местах.

С другой стороны, этот метод потерпит неудачу, если входной текст повернут более чем на 3-5 градусов. Существует еще один бэкдрайв, поскольку, если у вас всего несколько строк, поиск по шаблону будет очень ненадежным. Больше строк, больше точности ...

С уважением, Г.

2

но я написал ответ на вопрос, похожий на этот, который может быть полезен для любых читателей, которые разделяют этот вопрос. Является ли вопрос на самом деле дубликатом, поскольку этот вопрос был первым, я оставлю это другим. Если мне нужно скопировать и вставить этот ответ сюда, дайте мне знать. Я также нашел этот вопрос сначала в Google, а не на тот, на который я ответил, так что это может помочь большему количеству людей со ссылкой. Тем более, что он предоставляет различные способы получения текстовых областей. Для меня, когда я посмотрел этот вопрос, он не подошел к моему проблемному случаю.

Определить текстовую область на изображении, используя python и opencv

7

Ограничительная рамка техника, продемонстрированная с помощью кода OpenCV:

Input:

enter image description here

Eroded:

enter image description here

Result:

enter image description here

как насчет нетекстовой области на отсканированном изображении (т. е. когда я делаю эрозию на входном изображении, будут ли игнорироваться нетекстовые области на входном изображении?) chostDevil
То, что ты пытаешься сделать, не легко, Патрик, и это не решение для копирования / вставки. Это здорово, потому что в нем есть подход к решению вашей проблемы. Но вам все равно нужно работать над этим и улучшать его, чтобы достичь желаемого результата.
На приведенном выше рисунке я вижу, что этот текст представляет собой один фрагмент (сгруппированный в одной области). Будет ли этот метод работать с отдельными группами строк (т. е. визитной карточкой)? chostDevil
если какая-либо техника точна, пожалуйста, дайте мне знать, и большое спасибо :) chostDevil
Когда у вас есть ограничивающий прямоугольник, вы можете извлечь его содержимое в новое изображение и забыть обо всем, что не находится внутри прямоугольника. Для этой задачи найдите на нашем форумеRegion Of Interest или жеROI в теге OpenCV.

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