logo search
Противодействие интернет-ботам

1.3 Распознавание защищенной надписи

Распознавание делится на 2 основным этапа:

· определение местоположения и границ каждого символа;

· собственно распознавание символа.

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

Если места символов не фиксированы, следующий путь по их выделению - сравнение по контрасту с фоном. Если цвет символов отличается от цвета фона это не дает никакой защиты:

Таким образом, следует либо добавить такой шум, который трудно отделить от самих символов, либо затруднить разделение символов, поместив их впритык или наложив друг на друга.

Собственно распознавание символа может происходить разными способами.

Самый простой способ - "наложение маски". У программы есть эталонный шрифт, с каждым символом которого она сравнивает распознаваемый. Тот символ, у которого больше всего совпадений (пикселей того же цвета, что и в эталоне), и считается ответом.

Сравнению с маской подвержены CAPTCHA, не применяющие геометрические искажения символов, а также использующие один шрифт (или очень ограниченное их количество).

Другие, более сложные алгоритмы распознают символ по его характерным признакам: количеству разветвлений, замкнутых областей, их взаимному расположению. Есть класс алгоритмов под названием "нейронные сети" - это, черный ящик, которому сначала для обучения дают образ и правильный ответ, а потом, после обучения, он сможет выдавать правильный ответ сам. Правда, процесс обучения очень долог и трудоемок.

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