Zireael |
Отправлено: 09 Июня, 2022 - 01:37:43
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: как сделать клик на найденном слове?
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)); |
|
|
Zireael |
Отправлено: 10 Сентября, 2022 - 17:59:47
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: как сделать, чтобы текст распознавался и записывался в файл блокнота
CODE:string Text = "qwerty"; // допустим это распознанный текст
string Path = "D:\MyFile.txt"; // путь к файлу
if(fopen(Path, "w")) // открыть файл для записи
{
fwrite(Text); // записать текст
fclose(); // закрыть файл
start(Path); // запустить файл
}
Если нужно чтобы текст дописывался, то вместо "w", "a". |
|
|
Alex5757 |
Отправлено: 11 Сентября, 2022 - 08:41:56
|
Прохожий
Покинул форум
Сообщений всего: 5
Дата рег-ции: Окт. 2018
Репутация: 0
|
Zireael пишет: Цитата: как сделать, чтобы текст распознавался и записывался в файл блокнота
CODE:string Text = "qwerty"; // допустим это распознанный текст
string Path = "D:\MyFile.txt"; // путь к файлу
if(fopen(Path, "w")) // открыть файл для записи
{
fwrite(Text); // записать текст
fclose(); // закрыть файл
start(Path); // запустить файл
}
Если нужно чтобы текст дописывался, то вместо "w", "a".
Спасибо! буду пробовать. |
|
|
Kibor |
Отправлено: 30 Апреля, 2023 - 18:44:27
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Пример как исправить текст если вместо букв вставляются цифры, к примеру 0 или 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);//тест
Исправляем
|
|
|
Zireael |
Отправлено: 30 Апреля, 2023 - 18:54:31
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: 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|о тут одна буква англ., другая рус. |
|
|
Zireael |
Отправлено: 30 Апреля, 2023 - 19:24:14
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
В некоторых языках есть функция замены, которая принимает массив, в котором записано что на что менять.
Что-то вроде:
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);
Одной регуляркой не обойтись, придётся несколько раз прогонять текст. Просто внутри функции будет быстрее. |
|
|
|