Понедельник, 29.04.2024, 00:02
Меню сайта
Категории раздела
JQuery плагины [59]
JQuery уроки [69]
PHP полезное [24]
PHP уроки [21]
Css [26]
JS [3]
SQL [9]
Css 3 [17]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » Статьи » PHP уроки

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

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


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

Здравствуйте, уважаемые читатели блога, в данном посте я хочу показать как может выглядеть скрипт Pраспознавание капчи php.

Все мы привыкли ежедневно видеть, на самых разнообразных ресурсах интернета, картинки, надписи на которых нас просят вписать в специальное поле формы, перед каким либо действием, к примеру, перед скачиванием файлов или отправкой сообщений. Такие картинки называются капчами, подробнее о происхождении этого термина можно прочесть в моей статье "Капча на PHP".

И ведь действительно без капчи теперь не обходится ни один из более-менее полезных сайтов. Связано это с тем, что с ростом технологического процесса и развитием ресурсов, становится все больше роботов гуляющих по интернету и вредящих безбрежному благополучию ресурсов, не имеющих защиты от ботов.
Капча как раз таки является одним из средств защиты от роботов, а как следствие и от спама. Все дело в том, что для человека распознать капчу является не трудоемким процессом, а для спам бота оно может стать невыполнимым.

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

Как действовать при распознавании капчи

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

Под примитивной капчей понимается картинка с монотонным фоном, на которой изображено трехзначное число. Число всегда выводится в одном шрифте и не имеет коэффициента искажения.

Пример примитивной капчи:

Примитивная капча

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

Как видите можно выделить ряд условий формирования этой картинки:

  • Шрифт всегда одинаковый.
  • Высота цифр одинаковая.
  • Между цифрами существует пустота минимум в 2 px.

Алгоритм распознавания такой капчи не требует знаний о нейронных сетях и может выглядеть так:

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

Распознавание цифр с картинки по шагам.

Переводим картинку в бинарную матрицу (1 шаг)

Капча в бинарном виде на php

Вычисляем интервалы содержащие цифры (2 шаг )

Складываем построчно все столбцы, получаем строку:

Вычисление интервалов

По полученной строке можно вычислить интервалы, задающие положение цифр.

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

Теперь мы знаем, что столбцы матрицы с индексами в интервалах [1,15], [18,32], [35,49] содержат цифры.

Вычисляем количество пикселей для каждой цифры (шаг 3)

Складываем все единицы в найденных интервалах, получаем:

  • [1,15] = 215 единиц;
  • [18,32] = 213 единиц;
  • [35,49] = 184 единиц.

Подсчет количества пикселей для всех возможных цифр (шаг 4)

Скачиваем несколько вариаций капчи, которые содержат все цифры от 0 до 9.

Затем необходимо вычислить количество пикселей для каждой из цифр [1234567890].

Например, подсчитав пиксели в цифре восемь – получим 215 шт.

подсчет пикселей для скрипта распознавания капчи на php

Вычислив вручную или же с помощью скрипта пиксели, для каждой из цифр получим такую таблицу:

таблица соответствий количества пикселей к цифрам для капчи на php

Теперь зная сколько пикселей содержится в каждой из цифр, мы можем распознать капчу, и то что написано на картинке.

Распознали капчу с помощью php

В результате у меня получился скрипт который с 100% вероятностью распознает числа на картинках данной капчи:

Результат работы скрипта распознавания капчи



Категория: PHP уроки | Добавил: ChronoW (20.04.2013)
Просмотров: 1981 | Комментарии: 1 | Теги: Распознавание капчи php, капча php | Рейтинг: 4.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *: