Что нового

Помогите написать функцию распознавания капчи из анимированного gif

dimontag

Новичок
Сообщения
22
Репутация
0
Версия AutoIt:
3.3.0
Описание:
Примерный алгоритм вижу следующий:
1. так как данный gif состоит из 6 кадров, и в каждом кадре просто меняется "цифровой шум" можно обработать каждый кадр отдельно с целью удаления мелкого "шума". И последним этапом привести кадры в черно/белые.
2. как-то склеить все 6 кадров в одну статическую картинку, думаю должно получиться число без лишнего шума и фона.
3. подготовить 10 шаблонов с отдельными (эталонными) картинками цифр 0.....9
4. выполнить поиск в картинке полученной на шаге 2. Тут мне видится обработка в виде массивов.

Ну примерно так, может есть варианты проще, но я не силен с графикой, осилить FreeImage или ImageMagick не сумел пока
Примечания:
Подойдет любой вариант данного решения, можно даже внешней программой под Win с выводом результата в файл :smile:

P.S. примеры капчи удалил, из соображений "не палиться"
 

bulldog5293

Знающий
Сообщения
172
Репутация
10
Я похожую тему разбирал, посматри не то ли http://autoit-script.ru/index.php/topic,442.0.html ?


Добавлено:
Сообщение автоматически объединено:

bulldog5293 сказал(а):
Я похожую тему разбирал, посматри не то ли http://autoit-script.ru/index.php/topic,442.0.html ?
тока что проверил в принципе работает, но с не большими погрешностями
 

killbond

Осваивающий
Сообщения
96
Репутация
32
Ну а как же http://cap-cap.ru/
не катит? Не знаю, работает ли данное ПО с анимированными gif, но полученное статичное изображение можно отправить в эту прогу и она результат выведет в txt файл


Добавлено:
Сообщение автоматически объединено:

2. как-то склеить все 6 кадров в одну статическую картинку, думаю должно получиться число без лишнего шума и фона.
как раз это действие приведет к тому, что шум будет максимальным (((
 
Автор
D

dimontag

Новичок
Сообщения
22
Репутация
0
bulldog5293 сказал(а):
Я похожую тему разбирал, посматри не то ли http://autoit-script.ru/index.php/topic,442.0.html ?


Добавлено:
Сообщение автоматически объединено:

bulldog5293 сказал(а):
Я похожую тему разбирал, посматри не то ли http://autoit-script.ru/index.php/topic,442.0.html ?
тока что проверил в принципе работает, но с не большими погрешностями



читал я твою тему, но до решения, что-то у меня даже не придумалось ничего в голове


Добавлено:
Сообщение автоматически объединено:

killbond сказал(а):
Ну а как же http://cap-cap.ru/
не катит? Не знаю, работает ли данное ПО с анимированными gif, но полученное статичное изображение можно отправить в эту прогу и она результат выведет в txt файл
посмотрю, по описанию что-то умеет что надо, но это как с пушки по воробьям...
хотелось бы ограничиться AutoIT + внешние модули
killbond сказал(а):


Добавлено:
Сообщение автоматически объединено:

2. как-то склеить все 6 кадров в одну статическую картинку, думаю должно получиться число без лишнего шума и фона.
как раз это действие приведет к тому, что шум будет максимальным (((



Если сделать это после первого шага то все будет нормально
 

bulldog5293

Знающий
Сообщения
172
Репутация
10
Я там тож в начале не понял, делается всё так: Тебе надо скачать вот это и установить
http://download.xnview.com/GflSDKSetup.exe
потом
Start->Run->regsvr32 "c:\Program Files\GflSDK\GflAx\Lib\std\GflAx.dll"
После создать какой нибудь скрипт, и в папку с ним положить картинку. код для скрипта такой
Код:
$oG = ObjCreate('GflAx.GflAx')
$path1 = @ScriptDir  & '\1.png'; путь до картинки
$path2 = @ScriptDir  & '\2.jpg'; новое название для сохранения картинки

With $oG
    .LoadBitMap($path1)
    .SaveFormat = 1
    .ChangeColorDepth(1, 0, 1)
    .SaveBitMap($path2)
EndWith

В @ScriptDir & указываешь путь до картинки и путь куда её нада положить обработанной
 
Автор
D

dimontag

Новичок
Сообщения
22
Репутация
0
Понимаю, но это когда тебе нужно было всего одну манипуляцию с картинкой сделать, то это получается одной строчкой в твоем коде.
Допустим я подключу GflAx.dll. Но как реализовать например описанный в первом посте алгоритм.
А вот с помощью cap-cap у же получил кое какой результат. Из 13 тестовых капчей распознает все 100%. Сейчас буду прикручивать его к скрипту, а потом скрипт к браузеру.
 

killbond

Осваивающий
Сообщения
96
Репутация
32
А вот с помощью http://cap-cap.ru/ у же получил кое какой результат.
Мну тоже нравится эта прога ^_^ хочу для нее сделать нечто наподобие меню: перетащишь картинку из браузера на определенную область меню, а она тебе код, если сделаю, кину сюда...
 
Автор
D

dimontag

Новичок
Сообщения
22
Репутация
0
killbond сказал(а):
А вот с помощью http://cap-cap.ru/ у же получил кое какой результат.
Мну тоже нравится эта прога ^_^ хочу для нее сделать нечто наподобие меню: перетащишь картинку из браузера на определенную область меню, а она тебе код, если сделаю, кину сюда...
а какой смысл? все равно придется выполнять какието теледвижения (перетаскивать мышкой) можно в таком случае просто увидеть. Или это вариант распознавания капчи для слепых, работающих за компьютером ;D
 

killbond

Осваивающий
Сообщения
96
Репутация
32
а какой смысл? все равно придется выполнять какието теледвижения (перетаскивать мышкой) можно в таком случае просто увидеть. Или это вариант распознавания капчи для слепых, работающих за компьютером
Нет, это вариант для ленивых и умных )))
 
Автор
D

dimontag

Новичок
Сообщения
22
Репутация
0
поясни, что-то я не проникся фишкой
 

killbond

Осваивающий
Сообщения
96
Репутация
32
запускаешь этот скрипт, он у тебя сидит отдельным окном где-нито рядом с треем, окно не обязательно большое можно 70x30, можно даже без заголовка и рамки... в нем есть активная область, перетащив на которую картинку, начинается распознавание и есть инпут бокс, в который пишется результат, и есть еще кнопка "в буфер" которая результат копирует в буфер...

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

dimontag

Новичок
Сообщения
22
Репутация
0
killbond сказал(а):
Почему для умных и ленивых? поясню - бывает, что попадаются такие капчи, которые самому трудно разглядеть, для этих случаев как раз подойдет этот скрипт...
Согласен, бывают и такие что без пол литра не прочитаешь, но мне кажется что в таком случае и cap-cap будет бессилен...
или я еще не оценил до конца её мощь и возможности
вот например будет лопать такие? или проще обновить ссылку чтобы попалась проще и разглядеть глазами
 

killbond

Осваивающий
Сообщения
96
Репутация
32
маловероятно что такие будет лопать...
вот анекдот оффтоп, но как рааз на этот случай:

Спамеры придумали гениальный способ обхода защиты при создании почтовых ящиков на Hotmail и Yahoo, который не позволял роботам проходить автоматическую регистрацию.
Бесплатные почтовые сервисы, такие как Hotmail и Yahoo, зачастую используются спамерами для своих рассылок. Но из-за громадного числа рассылаемых писем и из-за того, что подобные ящики довольно быстро уничтожаются, спамерам необходимо регистрировать их тысячами.
Для этих целей они используют специальных роботов, предназначенных для автоматической регистрации. Чтобы бороться с этими роботами, компании, предоставляющие почтовые услуги в Интернете, ввели так называемый тест "Captcha". Его суть в том, что при вводе регистрационных данных, нужно для подтверждения своей человеческой природы ещё и расшифровать определенного вида картинку. Обычно это плохо читающийся текст на каком-нибудь неровном фоне.
Человеку эта задачка дается легко, в то время, как роботы с ней не справляются. И вот, чтобы обойти данную проблему, спамеры завели бесплатный порнографический ресурс.
Для получения доступа к этому ресурсу необходимо тоже (!) пройти тест "Captcha". Тысячи посетителей порноресурса ежедневно проходят этот тест, не подозревая, что при этом они создают очередной почтовый ящик для спамеров.
При помощи специального скрипта регистрационный тест Hotmail переносится на спамерский сайт, где он успешно и проходится...

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

dimontag

Новичок
Сообщения
22
Репутация
0
Ну в общем это не анекдот, это реальная жизнь. Даже скорее подтверждение русских поговорок "Голь на выдумки хитра" и "Лень - двигатель прогресса".
А капчи, что я привел с достаточно серьездного проекта и это не тот случай что ты говоришь где можно вводить любые слова. Мне иногда чтобы войти в аккаунт приходиться до десятка раз обновить капчу, чтобы попалась такая которую самому можно разобрать.


Добавлено:
Сообщение автоматически объединено:

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

timsky

Осваивающий
Сообщения
93
Репутация
28
dimontag
Анимированные гифы - это цветочки. А последние 2 капчи, что ты привел - это когда сервер рекапчи тебя уже опредлелил как спамера. Обычно где-то после 30-й попытки. До этого момента он выдает капчи не особо каверкая их, вот их и можно распознавать с 20-30% успехом. На данный момент у меня в среднем получается распознать 15-25%, есть поле для совершенствования, но чуток не до нее щас.
Прикол рекапчи в том, что нужно более менее точно распознать только одно слово, а второе приблизительно ;)
 
Автор
D

dimontag

Новичок
Сообщения
22
Репутация
0
timsky сказал(а):
dimontag
Анимированные гифы - это цветочки. А последние 2 капчи, что ты привел - это когда сервер рекапчи тебя уже опредлелил как спамера. Обычно где-то после 30-й попытки. До этого момента он выдает капчи не особо каверкая их, вот их и можно распознавать с 20-30% успехом. На данный момент у меня в среднем получается распознать 15-25%, есть поле для совершенствования, но чуток не до нее щас.
Прикол рекапчи в том, что нужно более менее точно распознать только одно слово, а второе приблизительно ;)
не буду вступать в долгую полемику, но приведенные 2 капчи всего навсего на проекте при входе в аккаунт, это никакого отношения к серверам рекапчи и спамерам не имеет. просто проект серьёздный и шутить там не позволенно
 

timsky

Осваивающий
Сообщения
93
Репутация
28
dimontag [?]
это никакого отношения к серверам рекапчи и спамерам не имеет
Как же не имеет, если это рекапча? А то, что она отображается на входе в серьезный сайт значит, что владельцы проекта прикрутили ее себе.
У тебя IP общий? А может вся подсетка тупо под фильтром у рекапчи.... вариантов немало, а мораль такова, что такие жуткие каракули, которые даже человек в 10% случаев распознает, рекапча выдавет всяким подозрительным для нее личностям со следами в куках и/или подозрительным IP.

http://recaptcha.net/ - их капча используется на сотнях тысяч сайтов.
 
Автор
D

dimontag

Новичок
Сообщения
22
Репутация
0
Сперва не понял что ты имел ввиду, теперь догнал. Да действительно эти каракули выдает api.recaptcha.net
Но вот по поводу IP не знаю, хожу туда часто и под разними IP и разных стран и под proxy и под VPN, но никогда не замечал чтобы капча было простой, чаще всего приходится кликать next
Ну да ладно это к теме отношения не имеет, теперь расскажу как обещал как решилась задача. В принципе полностью по алгоритму в топике, за исключением того что в первом шаге даже не пришлось ничего "мутить". А последний шаг переложен на плечи cap.exe
Итак:
Код:
$oIE = _IECreate("http://*******/****klick.html")
$oImgs = _IEImgGetCollection ($oIE)
For $oImg In $oImgs
   If StringInStr($oImg.src, "http://********/img/captcha.php?") Then
      $BotResult = _CaptchaBot($oImg)
      ExitLoop
   EndIf
Next

Func _CaptchaBot($oImgCaptcha)
	InetGet($oImgCaptcha.src, "captcha.gif")
	RunWait("convert captcha.gif temp.bmp", "", @SW_HIDE)
	RunWait("convert -average temp-*.bmp captcha.bmp", "", @SW_HIDE)
	RunWait("cap /recognize /ini cap.ini", "", @SW_HIDE)
	$fileResult = FileOpen("out.txt", 0)
	$otvet = FileReadLine($fileResult)
	FileClose($fileResult)
	Return $otvet
EndFunc


По коду ничего хитрого. Самое главное правильно настроить cap.exe, а точнее ini - файл. Ну и обучить алфавиту.
Ключевое то что после команд
Код:
convert captcha.gif temp.bmp
convert -average temp-*.bmp captcha.bmp
получается картинка практически с однородным фоном и вообще весь шум "усредняется", а это уже семечки для cap.exe


Добавлено:
Сообщение автоматически объединено:
 
Автор
D

dimontag

Новичок
Сообщения
22
Репутация
0
Да он самый, забыл написать, но он в комплекте с cap-cap идет
 
Верх