Вот несколько примеров изображений, которые я использую, но я использую больше:


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