Как улучшить извлечение OCR из малоконтрастных и размытых газетных изображений с помощью Python и Tesseract?
Я работаю над Django-приложением для извлечения текста из изображений газетных вырезок. Эти изображения часто имеют низкий контраст и размытость и содержат различные текстовые блоки, такие как заголовки, даты, мелкий текст, жирный текст и некоторые размытые буквы. Размеры изображений составляют примерно 256x350 пикселей при разрешении 96 точек на дюйм.
Я пробовал несколько методов предварительной обработки для улучшения изображений перед их передачей в Tesseract OCR, но я все еще не получаю удовлетворительных результатов. Вот мой текущий код:
Разумная эвристика заключается в том, что большая часть бумаги печатного документа как бы белая (или для старых материалов - желтая с оранжевыми пятнами). По этой причине, если у вас есть цветной скан, то только красный канал часто является гораздо лучшей отправной точкой для более высокого контраста. Всегда стоит обратить внимание на зеленый, но синий канал обычно просто добавляет шум и следы фоксинга и снижает контрастность.
Чтобы сделать текст более читаемым, "выровнять гистограмму" - это не совсем то, что вы хотите сделать с монохромным изображением. На самом деле вы хотите разбить все пики гистограммы в верхней части около белого на 255 и меньший пик в нижней части на 0, а затем линейно присвоить N оставшихся промежуточных значений на (255*k)/N. Точный выбор отсечения не является чувствительным, но этот шаг разрушает полутоновые изображения, чтобы сделать контраст текста более четким.
Если этого все равно недостаточно и текст остается размытым, то лучше всего работает нерезкое маскирование, соответствующее размытию, определенному эмпирически по изображению, а не грубое ядро "sharpen".
Вы должны быть в состоянии избежать необходимости полностью размывать изображение по Гауссу (шаг, который необходим в вашем рабочем процессе только из-за побочных эффектов выравнивания гистограммы). Если изображение нуждается в дополнительной обработке от шума, удалите шум соли и перца, используйте медианный фильтр или сглаживание с сохранением краев - все эти варианты лучше выбрать.
Гауссово размытие может помочь превратить отсканированные полутоновые изображения в нечто приемлемое.
Иногда один метод денуазинга работает гораздо лучше, чем любой другой, на особенно грязной странице, которая прошла через все войны. Приведенная выше схема работы должна достаточно хорошо работать с большинством материалов, но в некоторых неудобных случаях для достижения наилучших результатов потребуется дополнительное ручное вмешательство.