Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 5.27 Функция распознавания текста.

Страниц (30): В начало « ... 11 12 13 14 [15] 16 17 18 19 ... » В конец
 

141. Kibor - 25 Февраля, 2019 - 15:36:53 - перейти к сообщению
 White Bear пишет:
Во время обучения, необходимо нажимать кнопку сохранить уже правильно распознанный символ ( в окне подбора параметров распознавания текста) ?

Как хотите. Если символ красный будет добавлен новый.
Если зеленый , то докорректирован будет старый.

 White Bear пишет:
Имеется ли возможность просмотреть содержание базы, какие символы, цифры и буквы уже добавлены в базу.

Нет
142. AdryV - 26 Февраля, 2019 - 03:03:45 - перейти к сообщению
а не подскажите возможно ли этим способом разгадать капчу? буквы/цифры/разрые цвета/разный фон/зачеркивание длинными линиями
143. Kibor - 26 Февраля, 2019 - 03:30:33 - перейти к сообщению
Очень абстрактное описание.
Нет.
Фильтры для этого не предназначены.
Можно распознать только то, чему удалось обучить. И мы можем быть уверенны что оно будет выглядеть более менее похоже.
144. White Bear - 03 Марта, 2019 - 12:45:12 - перейти к сообщению
Здравствуйте.
Направьте на путь истинный.....
создал свою базу символов, текст распознается правильно,
проверяю при помощи
messagebox(text_KIB)
я так понял, это в текстовом формате, в дальнейшем надо присвоить какой то переменной.
распознанный материал имеет такой вид :

22 + 33, или 12 - 11, может быть 0 + 45, ну и так далее. может быть умножение или деление.
(между цифрами и знаками возможно пробелы, как определить не знаю)
цифры могут быть как однозначными . так и двузначными, в дальнейшем,трехзначными.
мне необходимо из этого выделить цифры, и символ действия с этими цифрами.
произвести сложение, вычитание, умножение , деление, в зависимости от распознанного результата, ну и понятно получить результат, который я смогу использовать в дальнейшем.
Пожалуйста, как можно подробнее, с примерами.
мои познания в программировании ограничены рамками VBS, немного VBA, но VBS ограничен
работой с Win API. потому и обратил внимание на данный продукт.
Заранее спасибо.
145. Zireael - 03 Марта, 2019 - 13:14:42 - перейти к сообщению
 Цитата:
Пожалуйста, как можно подробнее, с примерами.

CODE:
string Text="22 + 33";
int x=func(Text); // передаем в функцию строку
messagebox(x); // результат

function func(string s)
{
string num1, num2, znak;
if(regexreplace(1, #num1, s, "^\s*(\d+)\s*([\+\-\*\/])\s*(\d+)\s*$", "$1")==0)return -10011001;
//messagebox(num1);
if(regexreplace(1, #znak, s, "^\s*(\d+)\s*([\+\-\*\/])\s*(\d+)\s*$", "$2")==0)return -10011001;
//messagebox(znak);
if(regexreplace(1, #num2, s, "^\s*(\d+)\s*([\+\-\*\/])\s*(\d+)\s*$", "$3")==0)return -10011001;
//messagebox(num2);

if(znak=="+")return formatsn(num1) + formatsn(num2);
if(znak=="-")return formatsn(num1) - formatsn(num2);
if(znak=="*")return formatsn(num1) * formatsn(num2);
if(znak=="/")return formatsn(num1) / formatsn(num2);

return -10011001;
}

Если какой-то из параметров не распознан вернёт число -10011001.
146. Kibor - 03 Марта, 2019 - 13:31:16 - перейти к сообщению
Все таки стоит сначала пройтись этим:
regexreplace(-1, #Text, Text, " ", "");
удалить пробелы.
Так как возможно что распознавание поставит пробел между цифрами, если вторая цифра узкая на общем фоне. К примеру перед 1
..
147. White Bear - 06 Марта, 2019 - 12:09:34 - перейти к сообщению
Доброе время суток. Спасибо за быстрый ответ.
сегодня только добрался до "самообразования" ::smile24.gif::
что-то у меня ничего не получается, не могу разобраться с пунктуацией и форматами.
вот "часть моих трудов"...
CODE:
string text_KIB;
loadsymbolbase("E:\kibor_set\FF\BazaPrimers.sib");
string text, num1, num2, znak;; //пробовал и не объявлять эти переменные
win w_KIB;
int ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB;
int sx_KIB, sy_KIB;

start_();

sleep(100);
readtext(NUM | MARK, #text_KIB, 8, 1, -1, -1, -1, -1, -1, 0, -1, sx_KIB+466, sy_KIB+360, sx_KIB+530, sy_KIB+376, -1);

messagebox(text_KIB)

вот мое начало. результат распознавания 57 - 39, соответствует предоставленному.
далее:
CODE:
string Text=text_KIB;
int x=func(Text);
messagebox(x);

здесь получается -842150451
CODE:
function func(string s)
{
string num1, num2, znak;
if(regexreplace(1, #num1, s, "^\s*(\d+)\s*([\+\-\*\/])\s*(\d+)\s*$", "$1")==0)return -10011001;
messagebox(num1);
if(regexreplace(1, #znak, s, "^\s*(\d+)\s*([\+\-\*\/])\s*(\d+)\s*$", "$2")==0)return -10011001;
messagebox(znak);
if(regexreplace(1, #num2, s, "^\s*(\d+)\s*([\+\-\*\/])\s*(\d+)\s*$", "$3")==0)return -10011001;
messagebox(num2);

if(znak=="+")return formatsn(num1) + formatsn(num2);
if(znak=="-")return formatsn(num1) - formatsn(num2);
if(znak=="*")return formatsn(num1) * formatsn(num2);
if(znak=="/")return formatsn(num1) / formatsn(num2);

return -10011001;
}

а вот здесь выдает "Ошибка: в STRINGS[7]=Text"

удаление пробелов вообще не понял в какой участок кода вставлять.
может я не правильно задавал вопрос???
(Добавление)
И еще один вопрос можно ли в функцию, вставит еще одну функцию ???
Спасибо.
148. Zireael - 06 Марта, 2019 - 23:17:48 - перейти к сообщению
CODE:
string text_KIB="57 - 39"; // распознанная строка

int x=func(text_KIB); // передаём в функцию
messagebox(x);


function func(string s)
{
string num1, num2, znak;
regexreplace(-1, #s, s, "[^\d\+\-\*\/]", ""); // удалить из строки всё кроме чисел и знаков +-*/
if(regexreplace(1, #num1, s, "^(\d+)([\+\-\*\/])(\d+)$", "$1")==0)return -10011001;
//messagebox(num1);
if(regexreplace(1, #znak, s, "^(\d+)([\+\-\*\/])(\d+)$", "$2")==0)return -10011001;
//messagebox(znak);
if(regexreplace(1, #num2, s, "^(\d+)([\+\-\*\/])(\d+)$", "$3")==0)return -10011001;
//messagebox(num2);

if(znak=="+")return formatsn(num1) + formatsn(num2);
if(znak=="-")return formatsn(num1) - formatsn(num2);
if(znak=="*")return formatsn(num1) * formatsn(num2);
if(znak=="/")return formatsn(num1) / formatsn(num2);

return -10011001;
}

 Цитата:
И еще один вопрос можно ли в функцию, вставит еще одну функцию ???

Нет смысла, функции не локальные. Можно из одной функции вызывать другую, при необходимости передавать параметры через указатели.
149. White Bear - 07 Марта, 2019 - 13:09:14 - перейти к сообщению
...
 Цитата:
И еще один вопрос можно ли в функцию, вставит еще одну функцию ???

Нет смысла, функции не локальные. Можно из одной функции вызывать другую, при необходимости передавать параметры через указатели.[/quote]

Спасибо, как говорится : "разжевали и в рот положили"
с функциями разобрался.
с regexreplace примерно понятно, с синтаксисом надо разобраться,
сложный...
с переменными num1,num2,znak все определяется корректно.

formatsn(num1) + - * / formatsn(num2) преобразует и считает.
еще пару вопросов (не надоел ещё?) :)

1. переменные объявленные в функции распространяются только в внутри этой функции?
CODE:
function func(string s)
{
string num1, num2, znak;
... далее по тексту...
или их можно использовать во всем коде, или объявить сразу в блоке "Старт"
2.
CODE:
formatsn(num1) + formatsn(num2)

как лучше присвоить это выражение к переменной, для дальнейшего использования ?
например с функцией "key", или дальнейших расчетов?
Ещё раз спасибо, Вы сэкономили мне кучу времени.
150. Zireael - 07 Марта, 2019 - 13:14:38 - перейти к сообщению
 Цитата:
1. переменные объявленные в функции распространяются только в внутри этой функции?

Если переменные объявлены в функции, то они локальные, видны только в самой функции.
Если объявить в начале скрипте, то будут глобальными и видны в любом месте скрипта.
 Цитата:
2. как лучше присвоить это выражение к переменной, для дальнейшего использования ?

CODE:
int k=formatsn(num1) + formatsn(num2); // присвоить переменной k

Powered by ExBB FM 1.0 Final