DLL для распознавания капчи mail.ru

S

SGM

Местный
Регистрация
14 Июн 2016
Сообщения
91
Реакции
109
Баллы
115
Всем привет!

Сабж. DLL для распознавания капчи на регистрации mail.ru. Внимание! Декапчер распознает 0-й тип капчи (при регистрации грузим c.mail.ru/c/0, а не c.mail.ru/c/2).

В архиве:
- s.cap.dll - непосредственно декапчер
- ijl20.dll - интеловская либа для архи-скоростной работы с jpeg

Функции:
- function owlbotv3 (var _img : pansichar; var ctex : pansichar) : integer; stdcall;
изображение подается в base64, второй параметр - распознанный текст, result всегда -1

Показатели декапчера:
- относительный %: 59,80 (без учета пропущенных)
- абсолютный %: 49,03 (с учетом)

Время распознавания:
- 6,74 капч / сек. на 1 ядро - 148,28 мсек. / капча на 1-м ядре
- 53,95 капч / сек. на 8 ядрах (HT)

На тестах используется intel xeon 1230.

Для просмотра содержимого вам необходимо авторизоваться.
 
George1337

George1337

Меценат
Меценат
Регистрация
5 Ноя 2012
Сообщения
697
Реакции
917
Баллы
165
Для Solve Media сможешь такое замутить?)
Примеры в инете можешь глянуть
 
asdqwe

asdqwe

Заблокирован
Регистрация
9 Июл 2014
Сообщения
1.534
Реакции
2.390
Баллы
195
Сделок с гарантом
1
Для биглиона можно декапчер?
 
Автор
Автор
S

SGM

Местный
Регистрация
14 Июн 2016
Сообщения
91
Реакции
109
Баллы
115
asdqwe, для биглиона сейчас есть смысл только в 100%-м декапчере (либо в двойном-тройном ре-чеке), поскольку они не дают понять - правильно она разгадана или нет. На все один ответ: "Неверно введен логин, пароль или код с картинки".
 
Последнее редактирование:
Автор
Автор
S

SGM

Местный
Регистрация
14 Июн 2016
Сообщения
91
Реакции
109
Баллы
115
George1337, елкин дрын... Старая рекапча отдыхает. Под нее, кстати, и то проще было бы сделать.

Мне попалась вот такая:

 
Последнее редактирование:
TheArtik

TheArtik

Заблокирован
Регистрация
10 Июл 2014
Сообщения
1.195
Реакции
1.600
Баллы
175
tavel

tavel

Бывалый
Регистрация
6 Фев 2014
Сообщения
45
Реакции
19
Баллы
100
Пуховой, а почему DLL не все капчи берётся распознавать? Вот на такие капчи в ctex возвращается пустая строка:



Хотя на большинство остальных капч, которые я протестировал, возвращает код (хоть в основном и неправильный). Капча грузилась с c.mail.ru/c/0
 
Последнее редактирование:
Автор
Автор
S

SGM

Местный
Регистрация
14 Июн 2016
Сообщения
91
Реакции
109
Баллы
115
tavel, вот такой декапчер, привередливый. Можно сделать все 100% точности, да только зачем? Это увеличит нагрузку, время распознавания - проще пару-тройку раз загрузить картинку / форму отправить. Плюс обучать алгоритм довольно рутинная работа, а на процентах выше 85-ти - вообще задница.
 
tavel

tavel

Бывалый
Регистрация
6 Фев 2014
Сообщения
45
Реакции
19
Баллы
100
Пуховой, да не, я без наезда, такой декапчер забесплатно это очень круто. Я только не совсем понял, твоя DLL thread-safe? То есть можно ли дергать функцию owlbotv3 из разных потоков одновременно или нужно блокировать вход в неё?
 
Автор
Автор
S

SGM

Местный
Регистрация
14 Июн 2016
Сообщения
91
Реакции
109
Баллы
115
tavel, да, thread-safe. Но надо помнить, что жрет она ресурсы ЦП по полной программе.

Я делаю так:

semh : thandle;
...
semh := createsemaphore (nil, кол-во ядер, кол-во ядер, nil);
...
waitforsingleobject (semh, infinite);
ctex := uppercase (capt.owlbotv3 (imag));
releasesemaphore (semh, 1, nil);
Т.е. семафор по количеству ядер - это даже на 100% загрузке оставляет немножко системе.
 
Senatra

Senatra

Местный
Регистрация
5 Ноя 2017
Сообщения
147
Реакции
99
Баллы
110
function owlbotv3 (var _img : pansichar; var ctex : pansichar) : integer; stdcall; external 's.cap_cdecl.dll';

procedure TForm12.sButton1Click(Sender: TObject);
var
dll_instance: Thandle;
rez:pansichar; rez2:pansichar;
begin
dll_instance:= LoadLibrary('s.cap_cdecl.dll');
rez2:=pansichar(smemo1.text);
owlbotv3(rez2,rez);
showmessage(rez);
FreeLibrary(dll_instance);
end;


Всегда приходят пустые ответы, умерло уже?
 
RHmixa

RHmixa

Опытный
Регистрация
20 Авг 2015
Сообщения
272
Реакции
232
Баллы
155
function owlbotv3 (var _img : pansichar; var ctex : pansichar) : integer; stdcall; external 's.cap_cdecl.dll';

procedure TForm12.sButton1Click(Sender: TObject);
var
dll_instance: Thandle;
rez:pansichar; rez2:pansichar;
begin
dll_instance:= LoadLibrary('s.cap_cdecl.dll');
rez2:=pansichar(smemo1.text);
owlbotv3(rez2,rez);
showmessage(rez);
FreeLibrary(dll_instance);
end;


Всегда приходят пустые ответы, умерло уже?
Ты как думаешь?