Я пытаюсь извлечь буквенно-цифровые символы (a-z0-9), которые не образуют смысловые слова из изображения, которое берется с потребительской камерой (включая мобильные телефоны). Символы имеют одинаковый размер и тип шрифта и не формируются. Фактическая обработка выполняется под Windows.Улучшение качества обнаружения Tesseract
На следующем рисунке показан необработанный ввод:
После обработки перспективного я применять следующие с OpenCV:
- Преобразование из RGB в серый
- Применить
cv::medianBlur
для удаления шума - Преобразование изображения в двоичное с использованием адаптивного порогового значения
cv::adaptiveThreshold
- Я знаю количество строк и столбцов сетки. Таким образом, я просто извлекаю каждую ячейку сетки, используя эту информацию.
После всех этих шагов, я получаю изображения, которые выглядят похоже на них:
Тогда я бегу Tesseract (последняя версия SVN с последними данными обучения) по каждому выделенному изображению ячейки индивидуально (я пробовал разные -psm
и -l
значения):
tesseract.exe -l eng -psm 11 sample.png outtext
Результаты, полученные тессеракта не очень хорошо:
- Большинство символов не распознаются.
- Линии сетки иногда интерпретируются как символы «l» или «i».
я уже экспериментировал с морфологическими операциями (открыть, закрыть, подрывать, расширяются) и заменить адаптивную пороговую с Оцу пороговым (THRESH_OTSU
), но результаты еще хуже.
Что еще я мог бы улучшить качество распознавания? Или существует даже лучший способ извлечения символов, кроме использования tesseract (например, сопоставление шаблонов?)?
Edit (21-12-2014): Я тестировал простое согласование шаблона (с использованием нормированной взаимной корреляции и LMS, но с еще худшими результатами). Но я сделал огромный шаг вперед, извлекая каждый символ, используя findCountours
, а затем запустил tesseract только с одним символом и опцией -psm 10
, которая интерпретирует каждое входное изображение как один символ. Additonaly Я удаляю не буквенно-цифровые символы на этапе последующей обработки. Первые результаты обнадеживают с показателями обнаружения на 90% и выше. Основная проблема - неправильные обозначения символов «9» и «g» и «q».
С уважением,