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

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

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

> Без описания
fun
Отправлено: 09 Августа, 2020 - 23:26:51
Post Id



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


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




При работе с распознаванием текста я не могу обеспечить стабильное распознавание английских I, l, i, j. Понятно что задача не простая, может можно сделать костыль в виде функции сравнения с игнорированием отличия в этих буквах? Или добавить какой-нибудь спецсимвол типа '*' для игнорирования отличия в конкретном месте: "The *nst*tute for *ust*ce" == string
 
 Top
Zireael
Отправлено: 09 Августа, 2020 - 23:56:46
Post Id



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


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




 Цитата:
в виде функции сравнения с игнорированием отличия в этих буквах?

CODE:
string Text = "The institute for Justice"; // с чем сравнить
string Text2 = "The lnstjtute for iustice"; // допустим это распознанный текст

int result = compare(Text, Text2);
messagebox(result); // вернёт 1 если строки одинаковые, иначе 0


function compare(string s, string s2)
{
regexreplace(-1, #s, s, "[iIjJl]", "*"); // в скобках символы, которые будут заменены
regexreplace(-1, #s2, s2, "[iIjJl]", "*");
messagebox(s+"^r^n"+s2);
if(s==s2)return 1;
return 0;
}
 
 Top
fun
Отправлено: 10 Августа, 2020 - 00:40:01
Post Id



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


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




спасибо, попробую
 
 Top
Kibor
Отправлено: 10 Августа, 2020 - 07:11:29
Post Id



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


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




Какая стоит задача?
Распечатка отсканированных документов?
Или просто надо проверить что в каком то месте экрана находится слово к примеру
junior
и проблема в том, что мы его можем распознать как
junlor
iunior

и тд..

Если стоит задача просто сравнить слово с шаблонным, то все просто. Обучайте все символы которые путает одному.
То есть
i l j обучите как l
В шаблоне с которым сравнивается тоже замените эти символы все на l
Тогда не будет проблем. будет сравнение
lunlor == lunlor
 
 Top
fun
Отправлено: 10 Августа, 2020 - 18:26:14
Post Id



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


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




 Kibor пишет:
Какая стоит задача?

Задача проверить что выводится на экране из нескольких известных вариантов. Я перед тем как тему создавать пробовал обучить все совпадающие символы как l, но не очень получилось, наверное не хватает опыта, потом попробую еще раз. Вариант с заменой который предложил Zireael мне вполне подходит.
 
 Top
Kibor
Отправлено: 10 Августа, 2020 - 18:35:20
Post Id



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


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




 fun пишет:
Задача проверить что выводится на экране из нескольких известных вариантов. Я перед тем как тему создавать пробовал обучить все совпадающие символы как l, но не очень получилось, наверное не хватает опыта, потом попробую еще раз. Вариант с заменой который предложил Zireael мне вполне подходит.

Вообще то результат один ожидается. Только тут замена символов идет с помощью регулярки После распознавания, а я говорю про замену Во время распознавания. Если у вас не получилось обучить что бы можно было сделать как говорю я, то метод Zireael не поможет.



А еще можете не париться по поводу точности распознавания так как ниже код))
Но этот код работает быстрее

CODE:


if (runpython()==0){messagebox ("Не удалось запустить Python"); goto er;}//Запускаем интерпретатор Python
sendgetpython("import difflib");

//Массив верных слов
int kml=7;
string all_string[7]={"junior", "working", "recognition", "with", "violet", "interest", "renewal"}

messagebox ("корявое junlor = точое "+rez("junlor"));//Узнаем каккое слово близкое к корявому junlor
messagebox ("корявое worklng = точое "+rez("worklng"));//Узнаем каккое слово близкое к корявому worklng
messagebox ("корявое recognjtion = точое "+rez("recognjtion"));//Узнаем каккое слово близкое к корявому recognjtion
messagebox ("корявое recognllltjon точое = "+rez("recognllltjon"));//Узнаем каккое слово близкое к корявому recognllltjon
messagebox ("корявое lnterest = точое "+rez("lnterest"));//Узнаем каккое слово близкое к корявому lnterest
messagebox ("корявое vlolet = точое "+rez("vlolet"));//Узнаем каккое слово близкое к корявому vlolet
messagebox ("а на что похоже это? ietsert = точое "+rez("ietsert"));//Узнаем каккое слово близкое к корявому ietsert


closepython();//Завершаем работу с интерпретатором
er:;




function rez(string s)
{
double max=-1;
double t;
double i=0;
for (int n=0; n<kml; n++)
{
t=compare(s, all_string[n]);
if (t>max)
{
max=t;
i=n;
}
}
return all_string[i];
}



function compare(string s1, string s2)
{
sendgetpython("s1=^'"+s1+"^'");
sendgetpython("s2=^'"+s2+"^'");
__python
normalized1 = s1.lower()
normalized2 = s2.lower()
matcher = difflib.SequenceMatcher(None, normalized1, normalized2)
__end_python
return formatsn(sendgetpython("matcher.ratio()"));
}



 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0)
« Предложения по программе »


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




Powered by