Author Topic: Распознавалка симпл капчи  (Read 28898 times)

0 Members and 1 Guest are viewing this topic.

Doda

  • Guest
Распознавалка симпл капчи
« on: January 22, 2016, 12:41:13 AM »
Надоела мне монополия, захотелось взбодриться, зашел на сайт,  с прикольной браузеркой и сходу натолкнулся на вот такую вот капчу


Как же решить? на форуме   знатоки предложили бы через  платный сервис, или воспользоваться уже готовыми решениями)  ну мы тоже не лыком шиты, попробуем изобрести велосипед.  между цифрами везде есть интервал,  если  отделить все цифры через этот интервал,  то получим цифорки, которые будем распознавать в дальнейшем.\
Сохранили штук 5 капч на комп, для экспериментов и погнали
Набросали код,  взяли пример

Вот результат

Вроде все отлично, но при наложениях, у нас  бывает режется по 3-4 цифры.  Ща буду исправлять))

Code: (clickermann) [Select]
GETSCREEN
for($i=652, $i<710)
   for($i2=355, $i2<370)
      //      arrpush($chist,$i2)
      arrpush($chist2,pxl($i,$i2))
    //  print(pxl($i,$i2))
           
   end_cyc

   FOR($a2,$a2<arrsize($chist2)) //
      if ($chist2[$a2]=0)
         $nopolosa=1
      //   print( $nopolosa, "полоса")
                 
      end_if
   END_CYC
   
   if ($nopolosa=0)
      arrpush($save,$i)
   end_if
   UNDEFINE($nopolosa)
   UNDEFINE($chist2)
   UNDEFINE($a2)
end_cyc
FOR($a3,$a3<arrsize($save)) //
   print($save[$a3])
   
END_CYC
FOR($a4,$a4<arrsize($save)-1) // п
SCREENSHOTEX($save[$a4],355, $save[$a4+1],370, "Image_", 0)
   
END_CYC
halt
Вот такая ересь выходит.  убрать мусор -проверка  интервала, а убрать наложение, тоже проверка интервала и поиск самого слабого места( минимум черного)

Code: (clickermann) [Select]
if ($save[$a4+1]>$save[$a4]+1) этим условием зачистили весь лишний мусор)

Изменив эту часть
Code: (clickermann) [Select]
FOR($a2,$a2<arrsize($chist2)) //
      if ($chist2[$a2]=0)
         $nopolosa=$nopolosa+1
      //   print( $nopolosa, "ïîëîñà")
                 
      end_if
   END_CYC
   
   if ($nopolosa<2)
      arrpush($save,$i)
   end_if
получаем разрез четко между цифрами, без захвата. сейчас  добавлю тесты
« Last Edit: January 22, 2016, 01:01:54 AM by Браm комара »

Doda

  • Guest
Re: Распознавалка симпл капчи
« Reply #1 on: January 22, 2016, 01:02:33 AM »
Пластырь, Объясни насчет полной цифры?

ну так, если найдем  интервал между цифрами, то облегчим задачу в тыщу раз. порезали число,  дальше с помощью процессинговых треков на каждую составляющую можно с  95% вероятностью угадывать цифры
« Last Edit: January 22, 2016, 01:06:47 AM by Браm комара »

Doda

  • Guest
Re: Распознавалка симпл капчи
« Reply #2 on: January 22, 2016, 01:07:43 AM »
Да, у меня  постоянно присутствует пустая картинка. не могу   догнать ,как ее убрать

Doda

  • Guest
Re: Распознавалка симпл капчи
« Reply #3 on: January 22, 2016, 01:12:40 AM »
Да, в самом начале этот колормод был лишним
Вот что выходит в итоге. работает неплохо, но все же режет порой неверно, оставляя по 2 цифры
Может резать не четко по вертикали, а по контуру эту капчу?

Doda

  • Guest
Re: Распознавалка симпл капчи
« Reply #4 on: January 22, 2016, 01:45:32 AM »
Спасибо за идею, получилось очень неплохо)

Осталось обучить кликер  теперь  анализировать эти числа

Doda

  • Guest
Re: Распознавалка симпл капчи
« Reply #5 on: January 22, 2016, 01:51:02 AM »
Алгоритм - если у нас скопление  черного в  верхней части и по диагонали, значит это 7.
 скопления черного по вертикали - единичка
 и т.д.. берем точку самую верхнюю левую, дальше ведем ее, по контуру. анализируя контур уже смотрим, какая цифра. чтобы не применять клише, и не сравнивать картинки
« Last Edit: January 22, 2016, 02:45:47 AM by Браm комара »

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Распознавалка симпл капчи
« Reply #6 on: January 22, 2016, 03:00:21 AM »
поделись ссылкой с этой капчей. есть кое какая идейка. давно задумывался о чемто подобном, универсальном распознавании цифр, без всяких там настроек и тп. может что и выйдет, хотя вероятность этого ничтожно мала.

Doda

  • Guest
Re: Распознавалка симпл капчи
« Reply #7 on: January 22, 2016, 03:03:29 AM »
http://wekings.ru/login  вот здесь она вылезает)  хочу написать брутфорсер аккаунтов))
Насчет универсальности - лучше всего через нейронные сети. читал  год назад, что в америке изобрели прогу, которая распознает 93% капч.  ну, в открытый доступ ее ясен пень никто не скидывал)
« Last Edit: January 22, 2016, 03:05:03 AM by Браm комара »

Doda

  • Guest
Re: Распознавалка симпл капчи
« Reply #8 on: January 22, 2016, 09:11:03 AM »
9 - точками выглядит вот так.  так же остальные 9 чисел. Осталось формулу  приписать,  используя закономерности. вот думаю попробовать поделить цифру на 4- 8 секторов(право, влево, низ ,вверх) и анализировать подсекторы
Code: (clickermann) [Select]
12:03:05 700358
12:03:05 700359
12:03:05 700360
12:03:05 700361
12:03:05 701357
12:03:05 701358
12:03:05 701359
12:03:05 701360
12:03:05 701361
12:03:05 701362
12:03:05 702356
12:03:05 702357
12:03:05 702362
12:03:05 702366
12:03:05 703356
12:03:05 703362
12:03:05 703363
12:03:05 703366
12:03:05 703367
12:03:05 704356
12:03:05 704363
12:03:05 704367
12:03:05 705356
12:03:05 705362
12:03:05 705363
12:03:05 705367
12:03:05 705368
12:03:05 706356
12:03:05 706357
12:03:05 706361
12:03:05 706362
12:03:05 706367
12:03:05 707357
12:03:05 707358
12:03:05 707359
12:03:05 707360
12:03:05 707361
12:03:05 707362
12:03:05 707363
12:03:05 707364
12:03:05 707365
12:03:05 707366
12:03:05 707367
12:03:05 708359
12:03:06 708360
12:03:06 708361
12:03:06 708362
12:03:06 708363
12:03:06 708364
12:03:06 708365
12:03:06 708366

Doda

  • Guest
Re: Распознавалка симпл капчи
« Reply #9 on: January 22, 2016, 03:08:29 PM »
вот что получается при уменьшении процента  :-\
[spoiler] Или я дурак.. или...[/spoiler]
Сейчас  провожу тесты,  через среднее количество точек и отношение к высоте-ширине. попробую через  этот параметр
[spoiler][/spoiler]

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Распознавалка симпл капчи
« Reply #10 on: January 22, 2016, 03:31:39 PM »
Вот попробуй такое
Программка Cap 1.8.0.0
Cap.7z
Создана для распознавания несложной капчи
Входит в состав USDownloadera

В сборке пример.
Распознается картинка "ScreenShot00742.png" Батник "FineOCR_CM.bat" запускает распознавание. Все настройки распознавания хранятся в "capCM.ini" благо там есть комментарии. В папке "CapLettersCM" шаблоны цифр. Распознавание происходит в файл, но можно и в буфер обмена.

Инструкцию уже не найти походу
Вот нашел только пару ссылок
http://govnoproger.ru/soft/cap-exe-na-primere-kapchi-yandeksa.html
http://autoit-script.ru/index.php?topic=9993.0

А это оригинальная сборка, там больше примеров
Cap_USDownloader.7z

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Распознавалка симпл капчи
« Reply #11 on: January 22, 2016, 03:34:54 PM »
Среднее количество точек не отличит 6 от 9.

Тоже давно задумывался взяться за универсальную распознавалку.
Тоже на ум приходило и прослеживание контура (по идее самое правильное, но пока непонятно как реализовать) и деление на сектора с подсчётами количества (при искажениях думаю даст самый плохой результат).
Приходилось и резать изображение на цифры/объекты анализируя вертикальную колонку в 1 пикс.
И нейронные сети вспоминал. Ну как вспоминал... вспоминал что они есть  ;D я то в них ничего не шарю. Но там нужно обучать на большой выборке. Кто это будет делать для нового шрифта или типа капчи... тупик. Результат, опять же не фонтан и зависит от времени обучения.

Сейчас вот почитал и утвердилась уверенность, что нужно делать несколько способов и использовать их от типа капчи. Часть описанных проверок видно же сразу что даст плохой результат при определённом шрифте. Совсем универсального способа не будет.

Деление на 6-8 зон думаю нужно. А вот что покажет это вместе с искажениями в виде плавления и вижу что цифру 4 из 0049 от 0058 из поста http://crapware.aidf.org/forum/index.php?topic=2336.msg14436#msg14436 фиг различит. У одной всё это смещено в правые сегменты, а в другой в средние.


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Распознавалка симпл капчи
« Reply #12 on: January 22, 2016, 03:48:22 PM »
Вот попробуй такое
Программка Cap 1.8.0.0
Cap.7z
Создана для распознавания несложной капчи
Входит в состав USDownloadera

Там тоже подготовка шаблонов
;Имя каталога с литерами (Можно использовать литеры от Антикапчи)
CatalogLetters=CapLettersCM

Это лишь чуть продвинутый аналог нашей распознавалки на кликермэне.
Туда тоже некоторые из настроек можно прикрутить.
Но прикольная.

Понравилось:
;Максимальная ширина букв (чтобы ножик не останавливался раньше времени)
LetterWidth=10
;Минимальная ширина букв, чтобы мусор не выводить
LetterWidthMin=5


Doda

  • Guest
Re: Распознавалка симпл капчи
« Reply #13 on: January 22, 2016, 03:51:52 PM »
Я попробую написать определение контура,  скину пример для  какой-либо цифры. Мне пару лет назад чувак говорил про эти контуры. Например
Code: (clickermann) [Select]
  for($i2=355, $i2<370)             //по игреку
         for($i=$save[$a4], $i<$save[$a4+1]+1)  //по иксу
здесь сначала гоним икс, слева направо, потом ниже, и опять гоним икс. как только находим черную точку  после 13 проверки (нашу цифру),  фиксируем, затем смотрим во все стороны. кроме левой и верхней(которые мы прошли). На примере девятки видно,  если есть свободные пиксели() точки 27,38 и ниже), в ограниченном объеме в плоскостях х и у, значит  круг. а круг это  6, 9, 0, 8. уже что -то!))


dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Распознавалка симпл капчи
« Reply #14 on: January 22, 2016, 03:52:37 PM »
а у меня вот какая идея, пока не брался за нее, не уверен получится ли. попробую описать.

сразу начну с того, что работать будет с массивом из элементов с пикселями, например построчно с верху в низ, черный пиксель = 1, белый = 0 . для каждой цифры свой шаблонный массив, где , если этот массив перевести в картинку, будет оооочень жирная цифра (как вариант, можно накладывать одинаковые цифры друг на друга из искомой капчи, но это опять же обучение, а хотелось без него). с размерами самой картинкишаблона еще не придумал, как вариант - какнибудь уменьшать искомую картинку цифры до размеров шаблона (все это делается в массиве этой картинки). я думаю это реализуемо, надо только почесать репу.
ну а дальше всё просто, сравниваем массив искомой цифры со всеми шаблонами, проверяем только элементы со значением "1". определяем с каким шаблоном больше совпадение, и цифра готова. по идее - чтото этоковое реализуемо, да и скорость не должна подвести. но взяться за этот проект никак не возмусь.

что думаете по этой идее?