Улучшение предварительной обработки для распознавания / распознавания изображений - PullRequest
1 голос
/ 01 августа 2011

В настоящее время у меня огромный интерес к обработке изображений и оптическому распознаванию символов. После некоторого базового распознавания и некоторых фильтров я решил начать с чего-то более сложного.

Я пытаюсь прочитать значение этих капч: http://img851.imageshack.us/img851/9579/57859946.png

Я написал несколько фильтров для предварительной обработки: - заменить цвет (на белый) Удалить синие линии удалить строки, проходящие через текст (две) - пороговое изображение (255)

который выводит такие изображения; http://img232.imageshack.us/img232/2325/00i3q45j1zt.png

Как видите, в некоторых буквах есть дыры. Сначала я подумал, что, может быть, лучше оставить строчки через буквы, но это только ухудшило ситуацию. Я использую Tesseract OCR движок и я тренировал его, используя шрифт Elephant (шрифт, который использует капча). Я тоже пробовал используя другие механизмы распознавания текста, такие как GOCR, но все становится еще хуже. С тессерактом у меня сейчас признание 20%. Я пишу в C # (.NET 4.0).

Капча генерируется программным пакетом с именем PHPCaptcha.

Теперь мой вопрос: Есть ли какой-нибудь алгоритм или галочка, чтобы заполнить дыры в письмах? И есть ли другой способ получить лучшее признание?

Я рад услышать от вас, ребята:)

Привет

1 Ответ

2 голосов
/ 02 августа 2011

Часть 0 - Предисловие


i) Прежде чем вы, возможно, захотите прочитать мой ответ, связанный с OCR здесь , который можетдать вам некоторые приемы использования tesseract

ii) Я полагаю, вы можете просто превратить все в черно-белое (в вашем случае обработка в цветах не дает вам преимущества)


Часть 1 - Предварительная обработка


Чтобы заполнить «дыры» после удаления синих линий.Вы всегда можете расширить или выполнить операции «расширить-затем-разрушить».Здесь расширение означает, что вы увеличиваете каждый пиксель в 8 направлениях (делая пиксель больше).После того как вы расширили пиксели, посмотрите, сможете ли вы их распознать, или посмотрите, не переполнены ли символы (слишком сильно расширены).Если символы не могут быть распознаны или символы расширены слишком сильно, вы можете применить операцию эрозии.Конечно, существуют усовершенствованные алгоритмы синтеза , но я думаю, что вам лучше начать с более простой операции обработки изображений.


Часть 2 - OCR / Tesseract


С Tesseract, если вы вводите все изображение в Tesseract, он будет выполнять анализ линии и таки так далее.Поскольку символы в капче не ведут себя как обычный текст, выполнение анализа линии или распознавание их в группе может несколько снизить скорость распознавания.Поэтому я предлагаю сначала распознавать по буквам.

...