@alekssamos
Программист любитель

Как из текста со смешанным алфавитом сделать нормальный?

Какие теги ещё поставить - не знаю.

У одной знакомой на работе тексты написаны смешанным алфавитом (русские и латинские буквы), вместо "У" английская "Y", вместо русской "С" английская "C"и так далее. Может кто сталкивался с такой проблемой и решал её?
Неужели придумывать различные комбинации для словаря, возможно даже с регулярными выражениями? Я пробовал как-то раз, всё равно криво получилось. Есть ли у кого решение?
Дополнительно
Мы не видим глазами. И я, и она. Пользуемся говорящей программой экранного доступа, синтезатором речи, голосом, зачитывает вслух. Ещё может использоваться шрифт брайля, там кириллица и латиница по-разному пишется, в одном слове такие перестановки недопустимы. Так вот. Ей важна точность информации и скорость обработки, даже ошибки на одну букву не желательны. Ну и это отвлекает от работы, сбивает с мысли и просто напросто раздражает. Подробностей я не знаю. Пробовала менять синтезаторы, но ни один её из-за этого не устраивает. Важно именно читать текст в реальном времени, а не копировать его куда-то в редакторы, заменять и прочее, но если это невозможно, только такой выход.
  • Вопрос задан
  • 268 просмотров
Пригласить эксперта
Ответы на вопрос 3
samodum
@samodum
Какой вопрос - такой и ответ
Я решал такую задачу, но давно, более 10 лет назад.
Вот ссылка на мою статью на хабре: https://habr.com/ru/post/86303/
Предполагаем, что в одном слове нельзя смешивать кириллицу и латиницу вместе. Слово должно состоять либо только из кириллицы, либо из латиницы. Если есть смешивание алфавитов, то надо привести слово к нужной кодировке.
Идея простая: программа пытается определить язык, на котором написано слово путём определения вхождения однозначно русских букв, таких как Ё, Ж, З, Ф, Я и т.д., и так же для английского: F, L, Q, S, V, W, Z и т.д.
После этого в слове принудительно заменяются все неоднозначные буквы (А, О, Е, У, Y, Х, X...) на соответствующие буквы того языка, который мы определили.
Можно пойти другим путём. Привести слово сначала к латинской кодировке, затем к латинице. И каждое из слов проверить в словаре. Если такое слово там найдено, то применить это слово. Надо будет доработать тот мой алгоритм, займусь как-нибудь.
Надеюсь, понятно объяснил.
Ответ написан
Комментировать
@alekssamos Автор вопроса
Программист любитель
Помог код из этой статьи. Сделал дополнение textnormalizer.
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Самый простой вариант - заменить все символы латиницы символами кириллицы. Но у этого метода есть существенный недостаток - он заменит буквы дляже в нормальных словах написанных латиницей.

Вариант посложнее - найти слова, в которых смешаны кирилица и латиница, и применить замену только к ним.

Но со словарем можно еще круче - при замене проверить слово и его словоформы по словарю, и если оно не найдено, то вывести предупреждение или оригинальное написание в скобках, например, или как вам будет удобнее.

Если чтение из браузера, то можно написать расширение или юзерскрипт. Если из редакторов типа microsoft word, то там тоже можно написать VBA скрипты. И наверняка у каких-то скринридеров есть API для плагинов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы