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

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

 Страниц (30): В начало « 22 23 24 25 26 27 28 [29] 30 »   

> Описание: Обучаемая функция распознавания текста. Инструмент обучения распознавания.
Zireael
Отправлено: 09 Июня, 2022 - 01:37:43
Post Id



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


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




 Цитата:
как сделать клик на найденном слове?

CODE:
string Text;
loadsymbolbase ("D:\Kibor\basetext.sib");
readtext (EN, #Text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 155, 514, 192, 528, -1);
mouse(LEFT, 155 + symbolxpos(0), 514 + symbolypos(0));
 
 Top
Alex5757
Отправлено: 10 Сентября, 2022 - 17:34:57
Post Id



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


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




Kibor, или знающие люди, )) а как сделать, чтобы текст распознавался и записывался в файл блокнота *.txt или в файл таблицы *.xls ?
 
 Top
Zireael
Отправлено: 10 Сентября, 2022 - 17:59:47
Post Id



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


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




 Цитата:
как сделать, чтобы текст распознавался и записывался в файл блокнота

CODE:
string Text = "qwerty"; // допустим это распознанный текст
string Path = "D:\MyFile.txt"; // путь к файлу

if(fopen(Path, "w")) // открыть файл для записи
{
fwrite(Text); // записать текст
fclose(); // закрыть файл
start(Path); // запустить файл
}

Если нужно чтобы текст дописывался, то вместо "w", "a".
 
 Top
Alex5757
Отправлено: 11 Сентября, 2022 - 08:41:56
Post Id



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


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




 Zireael пишет:
 Цитата:
как сделать, чтобы текст распознавался и записывался в файл блокнота

CODE:
string Text = "qwerty"; // допустим это распознанный текст
string Path = "D:\MyFile.txt"; // путь к файлу

if(fopen(Path, "w")) // открыть файл для записи
{
fwrite(Text); // записать текст
fclose(); // закрыть файл
start(Path); // запустить файл
}

Если нужно чтобы текст дописывался, то вместо "w", "a".


Спасибо! буду пробовать.
 
 Top
Kibor
Отправлено: 30 Апреля, 2023 - 18:44:27
Post Id



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


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




Пример как исправить текст если вместо букв вставляются цифры, к примеру 0 или 3 вместо о или з
Или наоборот. Вместо цифр похожие буквы.

Имеем такую картинку которую надо распознать
1
---------

Настраиваем распознавание
2
---------

Получаем такой текст
3
---------

С помощью кода (код для примера. Можно составить более умный код)
CODE:
string Text;
loadsymbolbase ("C:\Program Files (x86)\Kibor\basetext.sib");
readtext (NUM | RU | MARK, #Text, 4, 1, -1, 15, -1, -1, -1, 0, 50, 1403, 345, 1669, 374, -1);
messagebox (Text);//тест

//Буквы в составе числа на цифры
loop(5)
{
while(regexreplace(-1, #Text, Text, "(?<=\d)о", "0", MULTILINE)){}
while(regexreplace(-1, #Text, Text, "о(?=\d)", "0", MULTILINE)){}
while(regexreplace(-1, #Text, Text, "(?<=\d)з", "3", MULTILINE)){}
while(regexreplace(-1, #Text, Text, "з(?=\d)", "3", MULTILINE)){}
}

//Цифры в составе слова на буквы
loop(5)
{
while(regexreplace(-1, #Text, Text, "(?<=[а-я|А-Я])0", "о", MULTILINE)){}
while(regexreplace(-1, #Text, Text, "0(?=[а-я|А-Я])", "о", MULTILINE)){}
while(regexreplace(-1, #Text, Text, "(?<=[а-я|А-Я])3", "з", MULTILINE)){}
while(regexreplace(-1, #Text, Text, "3(?=[а-я|А-Я])", "з", MULTILINE)){}
}

messagebox (Text);//тест

Исправляем
4
 
 Top
Zireael
Отправлено: 30 Апреля, 2023 - 18:54:31
Post Id



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


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




 Цитата:
while(regexreplace(-1, #Text, Text, "(?<=\d)о", "0", MULTILINE)){}
while(regexreplace(-1, #Text, Text, "о(?=\d)", "0", MULTILINE)){}

Можно одной строкой:
CODE:
while(regexreplace(-1, #Text, Text, "(?<=\d)о|о(?=\d)", "0", MULTILINE)){}

Т. к. могут бы англ. и рус. буквы, то можно и так:
CODE:
while(regexreplace(-1, #Text, Text, "(?<=\d)(o|о)|(o|о)(?=\d)", "0", MULTILINE)){}

o|о тут одна буква англ., другая рус.
 
 Top
Kibor
Отправлено: 30 Апреля, 2023 - 18:58:40
Post Id



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


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




Хорошо бы составить "умную" регулярку.
Можно было бы реализовать кибор функцию для корректировки текста распознанного. Типа
CODE:
string Text="о2-15 эт0 числ0";
Text=textcorrect(Text);
 
 Top
Zireael
Отправлено: 30 Апреля, 2023 - 19:24:14
Post Id



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


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




В некоторых языках есть функция замены, которая принимает массив, в котором записано что на что менять.
Что-то вроде:
CODE:
string replace[3][2];

replace[0][0]="o"; replace[0][1]="0"; // букву о меняем на 0
replace[1][0]="з"; replace[1][1]="3"; // з меняем на 3
replace[2][0]="i|l"; replace[2][1]="1"; // i или l меняем на 1

string Text="о2-15 эт0 числ0";
Text=textcorrect(Text, replace);

Но, учитывая что не реализована инициализация многомерных массивов при объявлении, то выглядит всё равно не очень.
Так было бы лучше:
CODE:
string replace[3][2] = { {"o", "0"}, {"з", "3"}, {"i|l", "1"} };

string Text="о2-15 эт0 числ0";
Text=textcorrect(Text, replace);


Одной регуляркой не обойтись, придётся несколько раз прогонять текст. Просто внутри функции будет быстрее.
 
 Top
Kibor
Отправлено: 30 Апреля, 2023 - 19:37:25
Post Id



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


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




Надо реализовать не просто регулярку, а нечто которое будет сначала заменять Явные ошибки, потом на их основание менее явные (которые станут явными) и т.д.
Понятно, что без ошибок не обойтись, но что то более менее можно придумать.
Естественно рекурсия. Но это вообще не проблема в плане быстродействия. Задачи то мелкие. Малый текст. И реализован внутренней функцией. Можно любой алгоритм придумать не заботясь о быстродействие.
 
 Top
Zireael
Отправлено: 30 Апреля, 2023 - 20:21:15
Post Id



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


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




Какие-то явные ошибки можно убрать. Тут сложно сделать что-то универсальное, т. к. нужно понимать контекст.
Да, если знаем что в тексте дата в числовом формате или время, то можно смело менять буквы на числа.
Но, вот для примера:
 Цитата:
Я заработал 0 центов. Сегодня поговорим о погоде.

В одном случае "0 центов", в другом "о погоде", а распознаваться может наоборот, "о центов" и "0 погоде".
 
 Top
Страниц (30): В начало « 22 23 24 25 26 27 28 [29] 30 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« О программе Кибор »


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




Powered by