Стратегии предварительной обработки OpenCV Python для распознавания символов OCR (pytesseract)Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Стратегии предварительной обработки OpenCV Python для распознавания символов OCR (pytesseract)

Сообщение Anonymous »

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

Изображение

Наиболее распространенные проблемы:
  • 5 распознается как S (но не наоборот)
  • S распознается как O (но не наоборот)
  • / получает признался, что я
Я пробовал несколько методов, но если один метод устраняет проблему, возникает другая проблема. Распознавание символов работает большую часть времени, но оно нестабильно, я бы сказал, ~80%. Я могу сделать снимок, выполнить обработку и распознавание, затем сделать новый снимок в тех же условиях, и распознавание не работает, кажется, что распознавание находится в пределах допуска шума
Я думаю что большая часть проблемы заключается в том, что шрифт выделен жирным шрифтом. Например, я заметил, что чем шире /, тем больше вероятность, что он будет распознан как I. Я пробовал cv2.resize(fx=2, fy=2) + cv2.erode(), но потом по какой-то причине Я понял, что чем толще цифра 5, тем меньше вероятность, что она будет распознана как S. В то же время, если символы толще или я уменьшаю порог бинаризации, дыра в цифре 4 заполняется и вызывает проблемы.
Не могу изменить шрифт. Я пробовал фотографировать с разной экспозицией, но, похоже, ничто не решает суть проблемы. Это лучший фокус, которого я могу добиться. Я не могу внести в белый список определенные символы, потому что возможны как буквы, так и цифры. Я не хочу делать .replace('SX', '5X'), потому что целью проверки является проверка правильности печати этикетки.
Методы, которые я пробовал :
  • Обычная бинаризация
  • Бинаризация OTSU
  • Адаптивная пороговая обработка
    Изменить размер + erode()
  • Повысить масштаб изображения с помощью cv2.dnn_superres, вроде лучше, но слишком медленно, потому что мне нужно обработать много изображений
  • Выравнивание гистограммы перед любым из вышеперечисленных действий.
ПРИМЕЧАНИЕ. Я могу получить решение для образцов изображений, но не могу получить согласованное решение, если изображения немного различаются, Я не могу заставить его работать на 100% время.
Может ли кто-нибудь предоставить информацию о том, как бы вы очистили эти изображения?

Подробнее здесь: https://stackoverflow.com/questions/793 ... -recogniti
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»