Друзья, подскажите как отсеять шум, то есть находит то что нужно, и шум с отрицательным значением корректности, как вот отсеять то что с отрицательными значениями?
П.С. на форуме искал не нашел тем таких.
1. ivantu - 11 Декабря, 2018 - 06:00:45 - перейти к сообщению
2. Kibor - 11 Декабря, 2018 - 06:04:06 - перейти к сообщению
Отделение распознанного текста от шума и сортировка символов в Кибор
В видео есть устаревшая информация
Теперь не надо отдельно подсчитывать индексы массивов при переводе строки в string 13 10 Теперь эти 2 символа перевода строки будут учитываться за 2 символа во всех функциях и будут совпадать.
В видео есть устаревшая информация
Теперь не надо отдельно подсчитывать индексы массивов при переводе строки в string 13 10 Теперь эти 2 символа перевода строки будут учитываться за 2 символа во всех функциях и будут совпадать.
CODE:
sleep(500);
string Text;
loadsymbolbase ("C:\бот_ряд\base - 5.sib");
readtext (NUM, #Text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 498, 313, 827, 622, -1);
//messagebox (Text);//тест
char c_text[100];//В этот массив запишем текст весь
int aw=size(Text);//Узнаем кол символов
//messagebox (aw);//тест
strcpy(#c_text[0], Text);//Скопируем текст с string в массив char
char A[300];
int X[300];
int kml=0;
int tkml;
int Min;
int tx;
int kor=0;
for (int n=0; n<aw; n++)//Перебираем посимвольно
{
if (c_text[n]!=' ' && symbolcorrect(kor)>0.5 && symbolheight(kor)>25) //если не пробел и корректность более 0.5 и высота более 25
{
A[kml]=c_text[n];//Сохраним символ
X[kml]=symbolxpos(kor);//Сохраним его координаты по X
kml++;
}
kor++;
//if (formatci(c_text[n])==13) kor--;//Если это перевод строки, уменьшим счетчик символов (так как первод строки это 13 10 - 2 символа. А функции используют 1)
}
A[kml]=0;
//messagebox (format(#A[0]));//тест
string T="";
if (kml>0)
{
tkml=0;
ee:;
Min=99999;
for (n=0; n<kml; n++)
{
if (X[n]<Min){Min=X[n]; tx=n;}//Если позиция этого символа самая левая и он не был сохранен
}
T=T+A[tx];//Допишем в string
X[tx]=100000;//Что бы его больше не считать укажем что он находится далеко правее
tkml++;
if (tkml<kml) goto ee;
}
messagebox (T);//тест
string Text;
loadsymbolbase ("C:\бот_ряд\base - 5.sib");
readtext (NUM, #Text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 498, 313, 827, 622, -1);
//messagebox (Text);//тест
char c_text[100];//В этот массив запишем текст весь
int aw=size(Text);//Узнаем кол символов
//messagebox (aw);//тест
strcpy(#c_text[0], Text);//Скопируем текст с string в массив char
char A[300];
int X[300];
int kml=0;
int tkml;
int Min;
int tx;
int kor=0;
for (int n=0; n<aw; n++)//Перебираем посимвольно
{
if (c_text[n]!=' ' && symbolcorrect(kor)>0.5 && symbolheight(kor)>25) //если не пробел и корректность более 0.5 и высота более 25
{
A[kml]=c_text[n];//Сохраним символ
X[kml]=symbolxpos(kor);//Сохраним его координаты по X
kml++;
}
kor++;
//if (formatci(c_text[n])==13) kor--;//Если это перевод строки, уменьшим счетчик символов (так как первод строки это 13 10 - 2 символа. А функции используют 1)
}
A[kml]=0;
//messagebox (format(#A[0]));//тест
string T="";
if (kml>0)
{
tkml=0;
ee:;
Min=99999;
for (n=0; n<kml; n++)
{
if (X[n]<Min){Min=X[n]; tx=n;}//Если позиция этого символа самая левая и он не был сохранен
}
T=T+A[tx];//Допишем в string
X[tx]=100000;//Что бы его больше не считать укажем что он находится далеко правее
tkml++;
if (tkml<kml) goto ee;
}
messagebox (T);//тест
3. ivantu - 11 Декабря, 2018 - 06:10:53 - перейти к сообщению
спасибо большое.