ТранскрибаторТранскрибатор
Практическая инструкция

Латиница внутри русских слов расшифровки: как найти смешанные буквы через Python

Проверка латинских букв внутри русского слова без автоматической замены. CSV-отчёт с номером строки, позицией символа и контекстом для редактора.

Транскрибатор
ЗАПИСЬПЛАН РАБОТЫСохраните исходный текстНайдите смешанные токеныПроверьте каждую заменуПроверить результатОТ СЛОВ К РЕЗУЛЬТАТУ
Работа с реальной записьюНаглядный учебный примерШаблон для копирования
1Сохраните исходныйтекст2Найдите смешанныетокены3Проверьте каждую замену
Диагностика отмечает кандидатов; решение о правильной букве принимает редактор по контексту.

Почему похожее слово не находится

Латинская o и кириллическая о выглядят похоже, но имеют разные кодовые точки. В учебном слове мoдель второй символ — латинский. Поиск по полностью кириллическому модель может не найти его. Такое смешение бывает после копирования текста или ручного исправления; по одному признаку нельзя установить причину.

Проверьте, что проблема действительно в алфавите. Нормализация NFC решает другую задачу — разные представления составного символа. Она не превращает латинскую o в русскую о. Не запускайте нормализацию как универсальное исправление всех похожих букв.

Отделите подозрительные слова от правильной латиницы

Строка «Обсудили Python и новую мoдель» содержит правильное название Python и кандидата мoдель. Отдельное латинское слово само по себе не ошибка. Смешанный токен тоже может быть намеренным: техническая маркировка, формула или буквенный код требует проверки.

В примере применяется ограниченная эвристика: токены из A–Z, a–z, А–Я, а–я и Ёё. Она отмечает одновременно два набора внутри одного токена. Это не полная реализация стандарта Unicode для определения письменности и не проверка безопасности адресов. Буквы других языков, цифры и дефисы требуют отдельной схемы.

Создайте отчёт, оставив исходник неизменным

Сохраните transcript.txt в UTF-8. Положите рядом mixed_letters.py и выполните python mixed_letters.py. Новый mixed-script-report.csv создаётся в режиме x, поэтому прежний отчёт не перезаписывается. Если он уже существует, выберите другое имя результата и укажите проверяемую версию.

Номер строки начинается с единицы. latin_positions — позиции латинских букв внутри найденного слова, также с единицы. context содержит первые 200 символов строки; полный контекст проверяйте в исходном TXT. В длинной строке слово может оказаться за границей этого фрагмента, но его текст и номер сохраняются.

import re, csv
from pathlib import Path
text = Path("transcript.txt").read_text(encoding="utf-8-sig")
with Path("mixed-script-report.csv").open("x", encoding="utf-8-sig", newline="") as target:
    writer = csv.writer(target)
    writer.writerow(["line", "word", "latin_positions", "context"])
    for line_no, line in enumerate(text.splitlines(), 1):
        for match in re.finditer(r"[A-Za-zА-Яа-яЁё]+", line):
            word = match.group()
            if re.search(r"[A-Za-z]", word) and re.search(r"[А-Яа-яЁё]", word):
                positions = " ".join(str(i+1) for i,c in enumerate(word) if c.isascii() and c.isalpha())
                writer.writerow([line_no, word, positions, line[:200]])
print("Список кандидатов сохранён; исходный TXT не изменён")

Исправляйте только подтверждённые места

Откройте отчёт и сверяйте кандидаты с терминологией, записью и ближайшими репликами. В мoдель замена o на о может быть обоснованна; в названии продукта похожая последовательность способна быть точной. Сохраните журнал «было — стало — основание». Не стирайте различия автоматически ради одинаковой частоты слов.

После исправлений найдите термин обычным поиском и повторите диагностический скрипт на новой копии. Если требуется сравнение версий, используйте HTML-отчёт правок. Подготовить исходную текстовую основу можно через Транскрибатор, а точные названия всё равно нужно проверять.

Отсутствие кандидатов не доказывает отсутствие ошибок: полностью латинское слово с похожими буквами этот фильтр не отметит. Проверяйте критичные имена отдельно. CSV с репликами может содержать конфиденциальный материал; локальный отчёт сохраняет тот же контекст и требует тех же правил доступа.

Учебный пример

Учебный пример: слово, название и обозначение

В примерах символ o в мoдель латинский; остальные оценки требуют знания контекста.

ФрагментДиагностикаДействие
мoдельСмешанный токенПроверить вторую букву
PythonТолько латиницаНе менять автоматически
AБСмешанный токенПроверить обозначение
ПоискРазные кодовые точкиНайти кандидатыКонтекстИмя или обычное словоПринять решениеКонтрольИсправленная копияПроверить поиск
Похожесть начертания помогает заметить проблему, но не определяет правильный алфавит.

Все фрагменты учебные. Не считайте наличие смешанной буквы доказательством намеренной подмены или ошибки конкретного человека.

Журнал проверки смешанных символов

Рабочая заготовкаВыделите и скопируйте
Версия TXT: [имя]
Строка: [номер]
Токен: [точный текст]
Позиция латинской буквы: [число]
Контекст и термин: [проверка]
Решение: [оставить / исправить]
Основание: [запись / словарь]
Поиск после правки: [результат]

Частые вопросы

Почему NFC не помогла?

Латинская и кириллическая буквы не становятся одной буквой при нормализации NFC.

Нужно заменить все английские буквы?

Нет. Правильные названия и обозначения должны сохраниться.

Отчёт находит все алфавиты Unicode?

Нет. В примере используется ограниченный набор русских и базовых латинских букв.

Можно исправить всё одной командой?

Для расшифровки безопаснее проверить кандидаты по контексту и сохранить журнал решений.