Основной смысл "капчи" предложить пользователю такую задачу, которую с лёгкостью может решить человек, но которую несоизмеримо сложнее решить компьютеру(Wikipedia). Для пользователя это лишний ввод в поле, а для программиста интересная задачка.
При написание программы пришлось столкнуться с тем что все входы и заходы для сбора данных с определенного сервиса были сделаны через ввод капчи. Для начала попробовал разобраться с простенькой капчей. Разумеется ни каких явок и паролей не будет указано.
Несколько тонкостей по поводу самой капчи.
Символы расположены на одном и том же месте, имеют одинаковый размер.
Алгоритм действия
+ переводим изображение в черно-белое.
+ применяем фильтр отсечения по гистограмме (отсечем яркие пиксели)
удачное отсечение |
фильтр надо регулировать |
+ символы имеют одну и ту же геометрию, то дальнейшие наши действия в создании базовых масок (маска обычный массив с высотой и размером максимального символа (9x13) элементов)
Позиции символов нам известны, маски для сравнения у нас имеются.
+ cравниваем каждый элемент из преобразованого изображения последовательно с масками (отношение колличества совпавших элементов к колличеству элементов в маске и будет та самая характеристика по которой мы оцениваем совпадение).
По поводу данной капчи можно сказать, что она не представляет особой сложности. Но как пример в понимании от чего можно от толкнуться и в какую сторону двигаться. Следующие варианты с которыми пришлось столкнуться: в капче используется несколько наборов; cимволы расположены на разных позициях. Алгоритм распознавания чуть более громоздкий получается.