Как отфильтровать текстуру из изображения для распознавания текста
Я пытаюсь сделать OCR для некоторых форм, которые, однако, имеют некоторые текстуры следующим образом:
Эта текстура заставляет программы OCR игнорировать ее, помечая ее как область изображения.
Я рассмотрел использование морфологии. Операция закрытия со звездочкой заканчивается следующим образом:
Этот результат все еще недостаточно хорош для распознавания текста.
Когда я вручную стираю "перец" и выполняю адаптивный порог изображения следующим образом, это дает хорошие результаты при распознавании текста:
У вас есть другие идеи по этой проблеме?
Спасибо
4 ответа
Для данного изображения медианный фильтр 5x5 работает немного лучше, чем закрытие. Оттуда бинаризация с адаптивным порогом может удалить больше фона.
В любом случае, полученное качество будет во многом зависеть от изображений, и идеальных результатов достичь невозможно.
Фоновый рисунок очень регулярный и направленный, поэтому фильтрация в области Фурье должна хорошо здесь работать. Попробуйте например фильтр Баттерворта
Конкретный пример такой фильтрации с использованием gimp можно найти здесь
Возможно, посмотрите на это: https://code.google.com/p/ocropus/source/browse/DIRS?repo=ocroold (см. Ocr-doc-clean).
Учитывая, что вы знаете размер шрифта, вы также можете использовать фильтрацию подключенных компонентов, возможно, в сочетании с морфологической операцией. Чтобы иметь возможность сохранить запятые, просто будьте осторожны, если меньший подключенный компонент находится рядом с компонентом, размер которого аналогичен символам, которые вы пытаетесь прочитать.