вторник, 5 марта 2013 г.

Распознавание капчи

Основной смысл "капчи" предложить пользователю такую задачу, которую с лёгкостью может решить человек, но которую несоизмеримо сложнее решить компьютеру(Wikipedia). Для пользователя это лишний ввод в поле, а для программиста интересная задачка.

При написание программы пришлось столкнуться с тем что все входы и заходы для сбора данных с определенного сервиса были сделаны через ввод капчи. Для начала попробовал разобраться с простенькой капчей. Разумеется ни каких явок и паролей не будет указано.

Пример капчи достаточно простой у которой процент распознавания где то около 99.99%.
Несколько тонкостей по поводу самой капчи.

Символы расположены на одном и том же месте, имеют одинаковый размер.









Алгоритм действия

+ переводим изображение в черно-белое.






+ применяем фильтр отсечения по гистограмме (отсечем яркие пиксели)

удачное отсечение
фильтр надо регулировать

+ символы имеют одну и ту же геометрию, то дальнейшие наши действия в создании базовых масок (маска обычный массив с высотой и размером максимального символа (9x13) элементов)









Позиции символов нам известны, маски для сравнения у нас имеются.

+ cравниваем каждый элемент из преобразованого изображения последовательно с масками (отношение колличества совпавших элементов к колличеству элементов в маске и будет та самая характеристика по которой мы оцениваем совпадение).

По поводу данной капчи можно сказать, что она не представляет особой сложности. Но как пример в понимании от чего можно от толкнуться и в какую сторону двигаться. Следующие варианты с которыми пришлось столкнуться: в капче используется несколько наборов; cимволы расположены на разных позициях. Алгоритм распознавания чуть более громоздкий получается.

Комментариев нет: