Как реализовать распознавание совпадающих русских и английских символов?
Начал изучать OCR. Вопрос стал следующим образом: какие есть алгоритмы, чтобы отличить русские символы от английских. Не секрет, что в обоих языках есть символы с одинаковым написанием:
habrahabr - английские буквы
атличный ресурс - русские буквы (грамматическая ошибка сделана специально)
Так вот, в данном случае и там, и там есть буква "а", которая может быть распознана, как английская, так и русская, что при последующем написании распознанного текста шрифтом, в котором эти буквы различны, явно отразиться пользователю. Как пример, рукописные шрифты.
Как можно решить такой вопрос? Может, кто знает алгоритмы?
Пока в голову приходит следующее: иметь образы для всех русских букв, а из образов для английских букв удалить все совпадающие с русскими. Далее, когда слово распознано, проверять, есть ли в нем английские буквы, и если есть менять все русские на их аналог английского языка. Например, слово hAbrAhAbr (большие буквы - это те, которые распознаются в данном случае, как русские). Проверяем: видим английские буквы в слове, значит, это английское слово, поэтому меняем символы А на соответствующие английские. Как-то так. Но что будет, если слово является смешанным, допустим, название фирмы: boyarinъ - понятно, что вроде "боярин" должно английскими буквами писаться, а вот твердый знак русскими, то есть мой алгоритм уже не сработает.
Кроме того, в Вашем алгоритме как распознать слова:
a а
on оп
no по
c (одиночная цэ в предложении letter c) с
moon тооп
Примеры так себе, но в Вашем варианте будут слова, которые сплошь будут состоять из русских букв, так что придется смотреть контекст, так сказать, хотите Вы или нет )
на случай указанных Вами исключений сделайте выбор языка распознания, чтобы можно было принудительно включить русский или английский.
хотя в примере с боярином сделал бы так: если в слове есть английское символы, то заменить на англ.все русские, которые выглядят как английские.соотв., твердый знак не будет заменен.
проблема в том, что в тексте могут встречаться оба языка, то есть при жестком выборе языка некоторые слова не распознаются. Ну, а с боярином, да, я к такому выводу и прихожу, но, может, уже есть какие-то крутые решения данного вопроса. Спасибо за ответ!
Суть алгоритма: если в слове встретились русские символы (ф,ж,д,ю,...) то слово целиком считается русским и все буквы о, а, е будут здесь русские.
То же самое и для английского языка
Да, благодарю за ответ - к этому я и склоняюсь для простейших решений. Для добросовестного распознавания, я считаю, что нужно внедрять AI - обучать его словарям языков, основным словосочетаниям, морфологии и тд. Но это уже больно сложно))