Как отфильтровать текстуру из изображения для распознавания текста

Я пытаюсь сделать OCR для некоторых форм, которые, однако, имеют некоторые текстуры следующим образом:

Исходное изображение

Эта текстура заставляет программы OCR игнорировать ее, помечая ее как область изображения.

Я рассмотрел использование морфологии. Операция закрытия со звездочкой заканчивается следующим образом:

Закрытие операции

Этот результат все еще недостаточно хорош для распознавания текста.

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

Отредактировано и с порогом

У вас есть другие идеи по этой проблеме?

Спасибо

4 ответа

Для данного изображения медианный фильтр 5x5 работает немного лучше, чем закрытие. Оттуда бинаризация с адаптивным порогом может удалить больше фона.

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

введите описание изображения здесь

Фоновый рисунок очень регулярный и направленный, поэтому фильтрация в области Фурье должна хорошо здесь работать. Попробуйте например фильтр Баттерворта

Конкретный пример такой фильтрации с использованием gimp можно найти здесь

Возможно, посмотрите на это: https://code.google.com/p/ocropus/source/browse/DIRS?repo=ocroold (см. Ocr-doc-clean).

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

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