Юрий, да неважно где лежит текст. Вот конкретный пример, решите задачу, чтоб был принт ‘ok’ в обоих случаях: https://notepad.pw/734aq7j
Частично решил таким способом: https://notepad.pw/2adv5202 , но это работает не со всеми вариантами. В последнем цикле текст остаётся без изменений
OCR, Tesseract - определяют текст по картинке. Где я тут писал что у меня картинка? Про файнридер вообще молчу. Обычный тхт. Формат строк - str, кодировка utf-8. Питон их правильно берёт и отображает, но не позволяет работать как с обычным текстом. Надо каким-то образом преобразовывать к обычному шрифту.
ScriptKiddo, вот этот вариант очень близок к правде. Я сначала так и сделал, но оказалось что это работает не со всеми шрифтами. Вот готовый код с примерами текста. В последнем цикле текст почему-то остаётся без изменений. Код залил в нотпад: https://notepad.pw/2adv5202
Основное свойство текста - это кодировка, а шрифт, это уже особенность отображения.
Что в вашем понимании обычный вид?
В каком редакторе этот текст отображается? (от этого сильно зависит алгоритм действий)
Руслан ., так это обычная кодировка utf-8. Открывается хоть нотпадом, хоть блокнотом. Но из за разных шрифтов питон не может работать с такими строками. Их надо как-то преобразовать в обычный вид. А консоль выдаёт кучу кракозябр при type. Но пайчарм их правильно отображает. Вопрос в том, как их преобразовать питоном, после взятия строки
Можно попробовать сконвертировать текст таким образом:
import unicodedata
list_texts = ["ᴰᴼᴺ'ᵀ ᴮᴱ ᴬᶠᴿᴬᴵᴰ ᵀᴼ ᶠᴬᴵᴸ ᴮᴱ ᴬᶠᴿᴬᴵᴰ ᴺᴼᵀ ᵀᴼ ᵀᴿʸ",
" ",
" ", "̈", "ᶠᴿᴬᴺᴷᶠᵁᴿᵀ",
"ʙᴇ ᴏɴ ʏᴏᴜʀ ᴡᴀʏ ᴛᴀᴋᴇ ᴡʜᴀᴛ ʏᴏᴜ ɴᴇᴇᴅ"]
for s in list_texts:
row_str = map(lambda x: x if len(x) == 1 else ' ', (str(unicodedata.name(_)).split(' ')[::-1][0] for _ in s))
print(''.join(list(row_str)))
На выходе будет вот так:
DON T BE AFRAID TO FAIL BE AFRAID NOT TO TRY
YOU WERE BORN BECAUSE YOU ARE GOING TO BE IMPORTANT TO SOMEONE
BECAUSE THEY LOOK
DU SSELDORF
FRANKFURT
BE ON YOUR WAY TAKE WHAT YOU NEED
Попробуйте использовать функцию unicodedata.name()