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

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

Только для читателей Lifeexample возможно открыть интернет-магазин на Moguta.CMS со скидкой в 15%

<<< Moguta.CMS v.2.1.0 || PHP Автоматическое исправление неправильной раскладки строки >>>

31.12.2012

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

Здравствуйте, уважаемые читатели блога LifeExample, в данном посте я хочу показать как может выглядеть скрипт 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 лежит в архиве который можно скачать по следующей ссылке.

( Скачали: 4090 чел. ) 

Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.

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

Лучшие статьи:



Как сделать капкейки с логотипом

Как и чем сделать анализ воды

Какие прически в тренде на 2017

Какую прическу делать на ночь

I фильмы подарок с небес 2003