Распознавание простейших капч...

Статус
В этой теме нельзя размещать новые ответы.

Yus

Гуру форума
Регистрация
12 Янв 2008
Сообщения
255
Реакции
93
Распознавание простейших каптч...

Уважаемые программисты, скажите насколько реально обходить простейшие каптчи?!
Кто-нибудь решал подобную задачу?
Что-то вроде вот этого типа каптч:
Для просмотра ссылки Войди или Зарегистрируйся

Вот каптчи оригиналы, которые хочу обходить...
attachment.php
2.jpg
 
>Для просмотра ссылки Войди или Зарегистрируйся
ЭТО не простейший каптч.

Обходятся распознаванием образов на осноее нейронных сетей.
есть программа самопис на делфи для распознавания отдельных символов. распознавание проводится после обучения сети.
если кто желает копаться, могу выложить.
 
sw04 +1, капча, в которой есть любые искажения, даже не повороты, ГОРАЗДО сложнее, чем любая другая. простейшая - это несколько цифр на одноцветном фоне, которые не меняют своей формы и цвета от картинки к картинке.
 
дайте и мне что ли глянуть, реально интересно.
 
Для данной капчи не знаю, а если б буквы не налазили друг на друга, то алгоритм на нейронных сетях выглядел бы так:

1) Бьем наш рисунок на одинаковые прямоугольные области, в каждом из которых находится строго 1 символ + возможно какой-то мусор. Это легко сделать для капч из PHPBB - там символы всегда на одних и тех же местах, просто повернуты под углом.

2) В каждом прямоугольном участке находится один символ, нам надо его распознать. Для этого мы проходим по всем пикселям этого участка, цвет каждого пикселя умножаем на определенное число Wi, и потом все вместе складываем. Это и есть нейронная сеть в простейшем виде. Вопрос только в этих числах Wi, которые называются весовые коэффициенты - и показывают "вклад" каждого пиксела в общую сумму. Нам надо подобрать эти числа так, чтоб итоговая сумма для разных символов капчи всегда попадала в разные диапазоны. То есть если на картинке цифра 1, то как бы она ни была повернута мы должны на выходе получить сумму всех пикселов, к примеру, от 30000 до 40000, а если на картинке цифра 2, то у нас сумма всегда должна попадать в другой диапазон (например от 10000 до 12000).

Таким образом мы по сумме пикселов всегда гарантрованно определяем символ, изображенный на картинке. Теперь дело за малым - найти все эти весовые коэффициенты, то есть ОБУЧИТЬ нашу нейронную сеть.

Способов обучения есть много, но все они подразумевают, что вы будете показывать вашей сети картинку и говорить, что на ней изображено - и так много раз. Так что без своего генератора капчей не обойтись.

Возьмем изначально для каждого пиксела весовой коэффициент равный единице. То есть мы тупо складываем все пиксели на картинке и получаем какое-то число. Даже на данном этапе уже нетрудно заметить, что для восьмерки это число будет получаться всегда больше, чем для единицы, так как в восьмерке больше закрашенных пикселов. Но вот к примеру 8 от 0 отличается не так сильно. Чтоб она попала в "старший" диапазон, нам надо тем пикселам, которые образуют центральную перегородку, придать бОльший вес по сравнению с остальными. Тогда как только на картинке в этом месте оказывается группа закрашенных пикселов - у нас автоматически сумма сильно вырастает, и 8 от 0 мы легко можем отличить. Но проблема в том, что в этой же области находятся и пикселы на цифрах "3" и "5" - соответственно их суммы тоже вырастут. Значит надо калибровать дальше. Посмотрим, сколько сейчас получаются суммы для 3 и для 5. Допустим, получаются примерно одинаковые. Как их отличить? Опять же, придать бОльший вес тем пикселам, которые отличают 3 от 5 (и в идеале от всех других цифр). Ну и так далее.


При наличии генератора капчей процесс этот полностью автоматизируется - мы сгенерили картинку, подсунули ее сети, сеть нам выдала посчитанное число, мы сравнили с "загаданным" - тем, что рисовали на каптче, подкрутили весовые коэффициенты, вернулись в начало цикла. И так до бесконечности.
 
Исходники.
Наверника много чего будет не понятно.
Суть такая. Сначало подаем картинки на распознавание, затем определяем.
На распознавание подается по 2-8 видоизменения символа(жирный, просто, курсив, etc).
Создается матрица весов. По ней и будут распознаваться символы.
 

Вложения

  • проги.rar
    1,3 MB · Просмотры: 413
На Unix'ах очень тяжело будет распознать такую капчу своими силами. Я бы даже сказал - нереально. Блур лечится Шарпеном, но вот геометрические искажения вносят существенные трудности в анализ.

А вот под Win32 есть возможность распознавать несложные капчи - использовать консольный FineReader. На счет последних версий не знаю, но старая версия, типа 4.0 имела в комплекте консольную версию. Ей подсовываем картинку, на выходе получаем текст. Можно запускать в режиме Batch процессинга.
 
  • Заблокирован
  • #8
Вот у меня завалялось 3 алгоритма, можете пользоватся :)
 

Вложения

  • 01.png
    01.png
    14,6 KB · Просмотры: 139
  • 01.zip
    17,5 KB · Просмотры: 463
  • 02.png
    02.png
    444 байт · Просмотры: 1.334
  • 02.zip
    13,6 KB · Просмотры: 380
  • 03.jpg
    03.jpg
    2,4 KB · Просмотры: 1.340
  • 03.zip
    13,4 KB · Просмотры: 414
Распознавание такой капчи это совсем не для начинающих задача. Масштаб трагедии написания постера/распознавалки 1:1000. Такие одноцветные деформированные со слиянием капчи считаются сложными - незачто зацепиться при разделении капчи на символы, что есть первый этап любого алгоритма распознавания
На всяк случай можешь спросить у этого парня -
Скрытое содержимое доступно для зарегистрированных пользователей!
 
Я думаю, что какую каптчу бы не поставили, то что я нашел справиться с любыми...


Так что проблем с первой каптчей больше нет.
Кстати, там дают тестовый акк, если стукнуть админу...и на счет денежку кладут, которой вполне хватит на 1000 каптч введенных;)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху