Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Распознание цифр

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

1. 31ost - 26 Апреля, 2018 - 07:09:35 - перейти к сообщению
Здравствуйте. Не силен в написании скриптов. Умею делать в другой программе простые скрипты на действия, поиск по цвету и картинке и вот потребовалось делать поиск по цифрам. Нашёл Вашу программу со встроенным распознанием но код вообще мне не знаком.
Подскажите пожалуйста как примерно выглядит код, чтобы быстро стартануть в обучении в распознании цифр.
Есть игра в которой есть аукцион в котором есть товары и цена товара. Не понимаю как выглядит код, который будет сканировать цену и + выполнять действия, если к примеру цена от 1 до 50.000 то купить.
Примерно выглядит так:
Два одновременно работающих скрипта:
Первый:
1. клик в x y (обновить цены)
2. если цена от 1 до 50.000 (цену показывает второй скрипт)
клик в x y (купить)
Второй:
1. в x y сканирует цену

Мне очень сложно понять как вообще сделать это сканирование от а до б и как в первом скрипте проверять то что сканирует во втором.
Возможно написал не очень внятно Улыбка надеюсь на помощь.
(Добавление)
Посидел подумал и пришел к выводу, что возможно вариант с двумя скриптами может привести к неприятной ситуации из-за мигающей страницы после обновления цен. Скорее всего лучше будет в один скрипт
1. клик в x y (обновить цены)
2. в x y сканирует цену
3. если цена от 1 до 50.000
клик в x y (купить)
2. Zireael - 26 Апреля, 2018 - 18:00:07 - перейти к сообщению
 Цитата:
Подскажите пожалуйста как примерно выглядит код, чтобы быстро стартануть в обучении в распознании цифр.

Версия 5.27 Функция распознавания текста.. Посмотреть: Видео работы функции и процесс обучения.
Ну и само собой придётся синтаксис изучить.
 Цитата:
1. клик в x y (обновить цены)
2. в x y сканирует цену
3. если цена от 1 до 50.000
клик в x y (купить)

Примерно так, для readtext указать нужные координаты и параметры для распознавания:
CODE:
mouse(LEFT, 721, 646); // клик левой кнопкой в координаты
sleep(2000); // ждём 2 секунды

string Text; // в строку запишется результат распознания
loadsymbolbase ("C:\Program Files\Kibor\basetext.sib"); // путь к базе символов
if(readtext (NUM | MARK, #Text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 733, 831, 780, 848, -1) > 0) // если распознан хотя бы один символ
{
messagebox (Text); // что распозналось

if(formatsn(Text)>0 && formatsn(Text)<=50.000) // если распознаный текст является числом больше 0 и меньше 50.000
{
messagebox("111"); // если условие истина
}
else
{
messagebox("000"); // если ложь
}
}
3. 31ost - 26 Апреля, 2018 - 22:26:12 - перейти к сообщению
Спасибо больше, вот If не понимал как писать, но столкнулся с проблемой, что в этой мморпг игре не получается распознать нормально текст и цифры.. в другой программе вырезал эти циферки и всё равно не находит, а если их приблизить через Paint.net то там видно, что цвет пикселей постоянно меняется, не понимаю, что ещё можно сделать Улыбка
Пока писал текст, вспомнил, что в игре есть возможность увеличить интерфейс, пойду смотреть Улыбка
(Добавление)
Масштабирование интерфейса - помогло распознать получше, но теперь столкнулся с другой проблемой - всегда говорит что ложь и после цифры идут две буквы и символ, которые двигаются в зависимости от длины цифр



Оригинал:
3,900 ea.
Распознает так:
3.900 ea
так даже лучше, но как игнорировать буквы? Улыбка
Пытался писать так
if(formatsn(text)>0 && formatsn(text)<=50.000 ea)
if(formatsn(text)>0 ea && formatsn(text)<=50.000 ea)
и пишет что 000
(Добавление)
Если сделать так NUM | MARK, #text то там будут цифры распознаваться и даже если их дополняю то всегда выходит 000 может что-то неправильно понимаю?
4. Zireael - 27 Апреля, 2018 - 03:39:40 - перейти к сообщению
 Цитата:
видно, что цвет пикселей постоянно меняется, не понимаю, что ещё можно сделать

Сделать свою базу символов и подобрать правильные параметры для readtext в 'Настройке распознавания текста'.
Лишние символы из строки можно удалить, пример:
CODE:
string TEXT="1 15.000 ea"; // допустим это распознаный текст
char CTEXT[1000];
strcpy(#CTEXT[0], TEXT);

messagebox(format(#CTEXT[0]));
deletetext(#CTEXT[0], " " | "." | "," | "a" | "e"); // удаляем из строки все пробелы, точки, запятые, буквы 'e' и 'a'
messagebox(format(#CTEXT[0]));
5. Kibor - 27 Апреля, 2018 - 08:47:48 - перейти к сообщению
Создать свою базу.
Обучить только цифрам и точкам.
Буквы тоже обозначить как точки.
Тогда будет всегда нечто

3.900...
115.000...
Потом это преобразовать в число игнорируя последние точки.

Powered by ExBB FM 1.0 Final