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

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

1. KevinS - 27 Мая, 2023 - 06:03:59 - перейти к сообщению
Здравствуйте. Делаю распознавание цифровой капчи. Столкнулся с проблемой, при получении результата самый верхний элемент (цифра 6) занимает первое место, хотя ее место в середине. Я понимаю, что можно сделать сортировку с использованием symbolxpos(), но вместе с этим мне в проекте необходимо делать проверку на корректность распознавания через функцию correct() и совместить у меня две эти вещи не получается.

CODE:

function correct(string #Text, double cor)
{
char c[100];
strcpy(#c[0], Text);
Text="";
for(int i=0; i<size(#c[0]); i++)
{
if(symbolcorrect(i)>=cor) Text=Text+c[i];
}
return Text;
}


Скрин капчи: https://ibb.co/4V8Y2Wf
2. Zireael - 27 Мая, 2023 - 11:36:19 - перейти к сообщению
CODE:
string Text;
loadsymbolbase ("D:\Kibor2\basetext.sib");
readtext (NUM, #Text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 39, 66, 577, 222, -1);
messagebox (Text);//тест

double SymbolCorrect = 0.5; // коррекстность символа


int LenText = size(Text);
string Result = "";
char TextC[999];
strcpy(#TextC[0], Text);

int LastMinPosX = -9999;
for(int j =0; j<LenText; j++)
{
int PosSymbol;
int MinPosX = 9999;
int Found = 0;
for(int i=0; i<LenText; i++)
{
if(TextC[i] != '^r' && TextC[i] != '^n' && TextC[i] != ' ')
{
if(symbolxpos(i) < MinPosX && symbolxpos(i) > LastMinPosX)
{
MinPosX = symbolxpos(i);
PosSymbol = i;
Found = 1;
}
}
}
if(Found==0) continue;
if(symbolcorrect(PosSymbol) >= SymbolCorrect) Result = Result + TextC[PosSymbol];
LastMinPosX = MinPosX;
}
messagebox(Result);

Powered by ExBB FM 1.0 Final