Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (2): [1] 2 »   

> Без описания
Krauser
Отправлено: 19 Октября, 2021 - 00:58:01
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 7
Дата рег-ции: Сент. 2021  
Репутация: 0




Здравствуйте. Написал небольшой скрипт - кликер. Суть в том чтобы распознавать на участке экрана каптчу вида: Сколько будет: "число" + "число". результат копируется в буфер.
Но отрабатывает он довольно медленно, 1 цикл секунды 3-4. Есть какой-нибудь вариант это дело ускорить? Или так и должно быть?
CODE:
loadsymbolbase ("C:\Users\Zakkari\OneDrive\Äîêóìåíòû\l_new base.sib");
rep:;
//sleep(3000);
t=readtext (NUM | RU | MARK, #Text[0], 7, -1, 25, -1, -1, -1, -1, 0, 10, 48, 120, 272, 406, -1);
for (n=0; n<t; n++)
{
k="";
if ((Text[n]=="т") && (Text[n+1]==" ")) ////нашли "т "
{
User_X[0]=symbolxpos(n);
User_Y[0]=symbolypos(n);
for(n1=n+2; n1<t; n1++) //запускаем цикл начиная с 1 цифры после "т "
{
if (Text[n1]!=" ")
{
k=k+Text[n1]; //получаем первое число
}
else goto b;
}
b:;
if (s==(formatsn(k)+formatsn(Text[n1+3]))) //если число в буфере не поменялось..
{
goto rep;
}
s=(formatsn(k)+formatsn(Text[n1+3]));
writeclipboard(s);
mousemove (90+User_X[0], 150+User_Y[0]);
goto rep;
}
}
goto rep;

(Отредактировано автором: 19 Октября, 2021 - 00:58:53)

 
 Top
Zireael
Отправлено: 19 Октября, 2021 - 02:01:49
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




Сначала надо понять что именно долго выполняется.
Если долго выполняется именно readtext, то возможно неверно подобраны параметры и распознаётся много лишнего.
Зона поиска по Y почти 300 пикселей, цифры действительно такого размера?
Время выполнения какого-то кода можно проверить так:
CODE:
int t = gettime();
// тут какой-то код
// например:
sleep(2000);
messagebox("Затрачено времени: "+format(gettime()-t));

На счёт поиска чисел в строке:
CODE:
string Text = "Ск0лько будет: 20 + 35"; // допустим это распознанная строка

string num1, num2;
regexreplace(-1, #Text, Text, " ", ""); // удалить все пробелы

if(regexsearch(1, #num1, Text, "\d+(?=\+)")) // найти число до знака +
{
messagebox(num1);
}
else messagebox("Первое число не найдено");


if(regexsearch(1, #num2, Text, "(?<=\+)\d+")) // найти число после знака +
{
messagebox(num2);
}
else messagebox("Второе число не найдено");

(Отредактировано автором: 19 Октября, 2021 - 02:04:26)

 
 Top
Krauser
Отправлено: 19 Октября, 2021 - 13:29:35
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 7
Дата рег-ции: Сент. 2021  
Репутация: 0




Спасибо, сейчас попробую найти проблемный участок. По поводу зоны поиска - там цифры довольно маленькие, но каптча плавающая поэтому приходится сканить большую область.
 
 Top
Zireael
Отправлено: 19 Октября, 2021 - 13:48:07
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
но каптча плавающая поэтому приходится сканить большую область.

Поэтому и медленно работает. Это изначально неверный подход.
Сначала нужно найти зону для распознавания. Тут есть разные варианты, через findimage или findheapcolor найти где появилась капча, а уже потом относительно координат капчи распознавать текст.
 
 Top
Krauser
Отправлено: 19 Октября, 2021 - 13:57:21
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 7
Дата рег-ции: Сент. 2021  
Репутация: 0




 Zireael пишет:
 Цитата:
но каптча плавающая поэтому приходится сканить большую область.

Поэтому и медленно работает. Это изначально неверный подход.
Сначала нужно найти зону для распознавания. Тут есть разные варианты, через findimage или findheapcolor найти где появилась капча, а уже потом относительно координат капчи распознавать текст.

Там получается как...есть окно допустим 200 на 300 пикселей. Оно с чёрным фоном, там нет никаких лишних шумов или надписей - только каптча, которая может появится в любом месте этого окна. Для ускорения были мысли разделить область сканирования пополам и запихать в 2 парралельных скрипта, но пока не знаю как это реализовать.
 
 Top
Zireael
Отправлено: 19 Октября, 2021 - 14:04:35
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




Нужен скрин с капчей чтобы что-то конкретнее подсказать.
 
 Top
Krauser
Отправлено: 19 Октября, 2021 - 14:10:38
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 7
Дата рег-ции: Сент. 2021  
Репутация: 0




 Zireael пишет:
Нужен скрин с капчей чтобы что-то конкретнее подсказать.

Полный скрин скинуть не могу т.к. там видны ники, но думаю и так будет понятно.
скрин (Отобразить)
 
 Top
Zireael
Отправлено: 19 Октября, 2021 - 14:13:26
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




Можно найти кнопку 'Проверить' и относительно неё распознать текст.
 
 Top
Krauser
Отправлено: 19 Октября, 2021 - 14:21:38
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 7
Дата рег-ции: Сент. 2021  
Репутация: 0




И если я сделаю через findimage это будет работать быстрее? Там же всё равно придётся всю область сканировать, чтоб найти эту самую кнопку.
 
 Top
KevinS
Отправлено: 19 Октября, 2021 - 14:25:19
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 218
Дата рег-ции: Февр. 2020  
Репутация: 2




окно с капчей(для просмотра ссылки Вам необходимо авторизоваться) появляется в рандомном месте? или в одном и том же?
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by