wotres2 |
Отправлено: 26 Января, 2023 - 22:55:21
|
Наблюдатель
Покинул форум
Сообщений всего: 39
Дата рег-ции: Февр. 2022
Репутация: 3
|
wotres2 пишет: Доброго времени.
Не могу разобраться Readtext.
необходимо:
1. скан области.
2. запись символов с коэффициентом совпадения.
3. удаление пробелов.
в данный момент это единственная преграда перед полным отходом от виз. редактора, не могу преодолеть.
попытался так реализовать, не выходит, что поправить?
int n;
int readtextscan;
string text[15];
int global_screen[1370][770]; //скриншот
int cor;
string text1;
sleep(5000);
screen (#global_screen[0][0], 0, 0, 1366, 768, -1);
loadsymbolbase("C:\12345\newimage\archeage\farm_craft\numbers.sib"
cor = 0.8;
readtextscan = readtext (NUM, #text[0], 8, 1, -1, 0, 0, -1, -1, -1, 50, 810, 352, 825, 361, #global_screen[0][0]);
for (n=0; n<readtextscan; n++)
{
loop(readtextscan)
{
if (symbolcorrect(n)<cor)
{
text[n]=text[n+1];
}
}
}
for (n=0; n<readtextscan; n++)
{
text1=text1+text[n];
}
if (format(text1)>0)
{
messagebox(text1);
}(Отредактировано автором: 26 Января, 2023 - 23:00:44) |
|
|
Zireael |
Отправлено: 27 Января, 2023 - 01:31:16
|
Эксперт
Покинул форум
Сообщений всего: 4456
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: int cor;
cor = 0.8;
Нельзя в переменную int записать дробное число, нужно использовать double.
Цитата: 3. удаление пробелов.
Можно регуляркой удалить, в описании есть примеры.
Когда давно писал функцию для удаления некорректно распознанных символов.
CODE:string Text;
loadsymbolbase ("D:\Kibor2\basetext.sib");
readtext (NUM, #Text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 311, 419, 483, 447, -1);
messagebox (Text); // распозннный текст
correct(#Text, 0.7); // 0.7 корректность символа (от 0 до 1)
messagebox (Text); // текст после удаления некорректных символов
function correct(string #text, double cor)
{
char c[999];
strcpy(#c[0], text);
text="";
for(int i=0; i<size(#c[0]); i++)
{
if(symbolcorrect(i) >= cor)text=text+c[i];
}
} (Отредактировано автором: 27 Января, 2023 - 01:32:54) |
|
|
wotres2 |
Отправлено: 27 Января, 2023 - 15:17:40
|
Наблюдатель
Покинул форум
Сообщений всего: 39
Дата рег-ции: Февр. 2022
Репутация: 3
|
Zireael пишет: Цитата: int cor;
cor = 0.8;
Нельзя в переменную int записать дробное число, нужно использовать double.
Цитата: 3. удаление пробелов.
Можно регуляркой удалить, в описании есть примеры.
Когда давно писал функцию для удаления некорректно распознанных символов.
CODE:string Text;
loadsymbolbase ("D:\Kibor2\basetext.sib");
readtext (NUM, #Text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 311, 419, 483, 447, -1);
messagebox (Text); // распозннный текст
correct(#Text, 0.7); // 0.7 корректность символа (от 0 до 1)
messagebox (Text); // текст после удаления некорректных символов
function correct(string #text, double cor)
{
char c[999];
strcpy(#c[0], text);
text="";
for(int i=0; i<size(#c[0]); i++)
{
if(symbolcorrect(i) >= cor)text=text+c[i];
}
}
спасибо, добрый человек |
|
|
|