@aygumov

Как перевести строку со шрифтом в обычный текст?

Есть ли в питоне функция, которая допустим из "YOᑌ ᑎᗩᗰE" будет делать "YOU NAME". Причем, чтобы была ещё поддержка многих шрифтов.
Или же всё таки придётся делать это самому:
{
"a": "это буква на разных шрифтах",
"b": "это буква на разные шрифтах",
...
}
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Встроенной функции нет. И похоже, что речь идёт не столько о разных шрифтах, а сколько о гомоглифах - символах юникода из разных алфавитов, которые выглядят похоже. Например, как русское и латинское "о". Это нетривиальная задача, но пакет confusable_homoglyphs (ставится через pip) может помочь. В частности, функция is_confusable().
from confusable_homoglyphs.confusables import is_confusable


wtf = 'YOᑌ ᑎᗩᗰE 42'

is_good = []
result = []
for c in wtf:
    data = is_confusable(c, preferred_aliases=[], greedy=True)
    if data:
        data = data[0]
        alias = data['alias']
        if alias in ('LATIN', 'COMMON'):
            data = False
    if data:
        is_good.append('!')
        print(data)
        result.append(data['homoglyphs'][0]['c'])
    else:
        is_good.append(' ')
        result.append(c)
    print()
print(''.join(result))
print(''.join(is_good))

Работает неидеально, но настройки модуля лежат в JSON - можно кое-что поправить. Или создать issue на гитхабе проекта.

Конечно, можно извратиться, отрендерить строку и прогнать по ней OCR, но это такая себе идея.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
В Python такой функции нет. Вам придется делать это самому. В Python есть достаточно средств, чтобы сделать это.
Ответ написан
Ваш ответ на вопрос

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

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