Подготовить сложное изображение для OCR

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

Текущая проблема - это предварительная обработка изображений. Поскольку кредитные карты могут иметь фон и другую сложную графику, текст не такой четкий, как при сканировании документа. Я экспериментировал с распознаванием краев (Canny Edge, Sobel), но безуспешно.Также вычисление разницы между изображением в оттенках серого и размытым (как указано в Удалить цвет фона при обработке изображения для OCR ) не привело к результату OCRable.

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

Есть ли у вас какие-либо предложения, как преобразовать исходный код в читаемое двоичное изображение? Подходит ли определение краев или мне следует придерживаться базового порогового значения цвета?

Вот пример подхода с использованием пороговых значений оттенков серого (где я, очевидно, не доволен результатами):

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

Original image

Полутоновое изображение:

Greyscale image

Пороговое изображение:

Thresholded image

Спасибо за любой совет, Валентин

12
задан Community 23 May 2017 в 10:30
поделиться