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

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

 Страниц (30): В начало « 8 9 10 11 [12] 13 14 15 16 » В конец    

> Описание: Обучаемая функция распознавания текста. Инструмент обучения распознавания.
ivantu
Отправлено: 23 Октября, 2018 - 11:42:35
Post Id



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


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




Теперь понятно, но простите за глупый вопрос, зачем тогда нужны symbolxpos(0) и symbolypos(0) если вручную записываем верхний левый угол, было бы круто еслиб в переменных уже были координаты относительные, а так получается двойная писанина Улыбка
 
 Top
Zireael
Отправлено: 23 Октября, 2018 - 12:18:17
Post Id



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


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




 Цитата:
зачем тогда нужны symbolxpos(0) и symbolypos(0)

Если надо будет найти позицию слова в 3 строке?
 Цитата:
было бы круто еслиб в переменных уже были координаты относительные

Цикл в 3 строчки и будут те что надо.
 
 Top
ivantu
Отправлено: 23 Октября, 2018 - 13:01:42
Post Id



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


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




а можно с примером, а то я начинающий...
 
 Top
Zireael
Отправлено: 23 Октября, 2018 - 13:58:08
Post Id



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


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




 Цитата:
а можно с примером

CODE:
win wind=window ("BlueStacks Android PluginAndroid", -1, window ("BlueStacks", -1, -1));
string Text;
loadsymbolbase ("F:\Soft\Kibor\images\sw_base.sib" );

int i, x, sx=184, sy=231; // sx и sy начальные координаты

x=readtext (RU | MARK, #Text, 2, 1, -1, -1, -1, -1, -1, 0, -1, sx, sy, 299, 262, wind);
messagebox (Text);//тест

if(x>0)
{
x=size(Text); // длина текста
new int coordX[x]; // массив для координат X
new int coordY[x]; // массив для координат Y
for(i=0; i<x; i++)
{
coordX[i]=symbolxpos(i)+sx+symbolwidth(i)/2; // позиция по X + половина ширины символа
coordY[i]=symbolypos(i)+sy-symbolheight(i)/2; // позиция по Y - половина высоты символа
}

//mousemove(coordX[0], coordY[0], wind); // навести курсор в центр первой буквы
for(i=0; i<x; i++)
{
mousemove(coordX[i], coordY[i], wind); // навести курсор в центр каждой буквы
sleep(300);
}
}
 
 Top
ivantu
Отправлено: 23 Октября, 2018 - 14:02:30
Post Id



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


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




Низкий поклон, спасибо большое!
 
 Top
Kibor
Отправлено: 06 Ноября, 2018 - 18:50:49
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8094
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




Как правильно фильтровать распознанный текст когда присутствует распознанный шум и перемешаны символы (левый правее правого).
Следует посмотреть, если хотите использовать распознавание в полном объеме.



Скрипт
CODE:
sleep(500);

string Text;
loadsymbolbase ("C:\бот_ряд\base - 5.sib");
readtext (NUM, #Text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 498, 313, 827, 622, -1);
//messagebox (Text);//тест

char c_text[100];//В этот массив запишем текст весь
int aw=size(Text);//Узнаем кол символов

//messagebox (aw);//тест

strcpy(#c_text[0], Text);//Скопируем текст с string в массив char


char A[300];
int X[300];
int kml=0;
int tkml;
int Min;
int tx;
int kor=0;

for (int n=0; n<aw; n++)//Перебираем посимвольно
{
if (c_text[n]!=' ' && symbolcorrect(kor)>0.5 && symbolheight(kor)>25) //если не пробел и корректность более 0.5 и высота более 25
{
A[kml]=c_text[n];//Сохраним символ
X[kml]=symbolxpos(kor);//Сохраним его координаты по X
kml++;
}
kor++;
//if (formatci(c_text[n])==13) kor--;//Если это перевод строки, уменьшим счетчик символов (так как первод строки это 13 10 - 2 символа. А функции используют 1)
}

A[kml]=0;

//messagebox (format(#A[0]));//тест


string T="";

if (kml>0)
{
tkml=0;
ee:;
Min=99999;
for (n=0; n<kml; n++)
{
if (X[n]<Min){Min=X[n]; tx=n;}//Если позиция этого символа самая левая и он не был сохранен
}
T=T+A[tx];//Допишем в string
X[tx]=100000;//Что бы его больше не считать укажем что он находится далеко правее
tkml++;
if (tkml<kml) goto ee;
}

messagebox (T);//тест
 
 Top
Kibor
Отправлено: 20 Ноября, 2018 - 20:25:33
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8094
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




Обновил Кибор.
Теперь не надо отдельно подсчитывать индексы массивов при переводе строки в string 13 10
Теперь эти 2 символа перевода строки будут учитываться за 2 символа во всех функциях и будут совпадать.
 
 Top
Rekkon
Отправлено: 05 Декабря, 2018 - 21:58:08
Post Id



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


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




Добрый вечер.
Уважаемый администратор, скажите есть ли в планах добавить в визуальный редактор функцию:
при распознавании текста, чтобы делался автоматический клик на этом слове?

Уже два дня мучаюсь, собрал все в единую кучу, но не могу решить данную проблему :(

1) Я обучил свою базу под игру (тесты в редакторе работают отлично!)
2) Создал в визуальном редакторе "блок кода"
3) Но ничего не происходит, хоть ошибок и не выдает.

Сам код:

string Text;
loadsymbolbase ("C:\text_base.sib");
readtext(NUM | RU, #Text, 8, -1, -1, -1, -1, -1, -1, 0, -1, 0, 0, 1920, 1080, -1);
if (Text=="кликнуть")
{
sendmouse(LEFT, symbolxpos(0)+rand(10, 15), symbolypos(0)-rand(5, 10), -1);
}


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

(Отредактировано автором: 05 Декабря, 2018 - 22:13:36)

 
 Top
Dantes3000
Отправлено: 05 Декабря, 2018 - 22:19:54
Post Id



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


Покинул форум
Сообщений всего: 1464
Дата рег-ции: Июнь 2016  
Репутация: 58




 Rekkon пишет:
0, 0, 1920, 1080, -1);

Ты на всём экране ищешь слово "кликнуть"? Сомневаюсь, что в переменной Text будет только это слово)

проверь сначала что оно там находит
CODE:
string Text;
loadsymbolbase ("C:\text_base.sib");
readtext(NUM | RU, #Text, 8, -1, -1, -1, -1, -1, -1, 0, -1, 0, 0, 1920, 1080, -1);
messagebox(Text);
 
 Top
Rekkon
Отправлено: 05 Декабря, 2018 - 22:34:35
Post Id



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


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




CODE:
string Text;
loadsymbolbase ("C:\text_base.sib");
readtext(NUM | RU, #Text, 8, -1, -1, -1, -1, -1, -1, 0, -1, 0, 0, 1920, 1080, -1);
messagebox(Text);
[/quote]



От всей души благодарю за подсказку (я не программист, по этому не верно растолковал функцию readtext)! Действительно нашлось на экране куча различной информации и всякой белеберды!

Если бы вы подсказали как из всего этого хаоса выбрать необходимое слово - я был бы очень признателен
 
 Top
Страниц (30): В начало « 8 9 10 11 [12] 13 14 15 16 » В конец
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« О программе Кибор »


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




Powered by