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

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

Сетка у данной капчи прочной формы и тона
На капче применяются лишь числа и они одинакового объема и шрифта
Линии прочного тона
Любое автоматическое распознавание капчи сводится к сопоставлению ее графических знаков с образцами. Однако для того, чтобы ассоциировать любой знак с образцами, надо вначале удалить с капчи гул и привести ее в двоичный тип. Двоичный тип картинки — это когда изображение — двумерный массив битов. Т.е. останутся лишь 2 тона: темный и белый. Попытаемся конвертировать наше изображение капчи в двоичный тип.

Вначале изолируем сетку. Т.к. сеть и линии (гул) цветов серого тона, то можно сообщить что у такого пикселя R=G=B — это качество серого тона пикселя. Запуская двойной курс for с обходом от X,Y до X1, Y1 капчи и закрашивая белым тоном пиксели, у которых можно обнаружить сходство R=G=B мы принимаем такое изображение:

Отныне мы видим, что у нас остались одиночные пиксели. В них не соблюдается требование R=G=B, т.к. они сформировались в итоге JPEG форматировнания. Их удалить просто: в случае если примыкающие пиксели у этого пикселя белые, то и данный закрашиваем белым. В итоге должно выйти:

Отныне, понимая что всего на капче 4 числа, нам предоставляется возможность установить границы любой числа. Отыскать эти границы также просто: нам предоставляется возможность включить курс for и справа на право, отслеживая пробелы между числами. С данным неприятностей появиться не должно. Приобретение пределов надо для отдела любой числа из капчи в собственный TBitmap. Элементарно границы чисел должны выйти так:

Получив границы, можем приступить к сопоставлению по образцу. В папке с платформой у нас будут храниться образцы, приготовленные загодя. По этим идеалам мы станем ассоциировать на соответствия пиксели любой числа (любой TBitmap) со всеми двадцатью образцами (0,1,2,3,4,5,6,7,8,9) и наиболее подхящий идеал станем завладевать. В итоге мы приобретем каждую цифру, однако в текстовом виде. Это и есть итог узнавания капчи. По принципу «отделение гула -> бинаризация -> сопоставление с эталонами» организованы почти все способы узнавания капч. Рассчитываю, урок оказался любопытным и необходимым!

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *