- BrainTools - https://www.braintools.ru -
Год назад я написал статью «Переводим fb2 книжки, с нейронками, для себя [1]» — про то, как собрал на паре Tesla P40 в гараже программу Sunny Narrator («Солнечный сказочник»), которая переводит художественные книги через локальные и облачные LLM. Тогда это был скорее прототип «доказать себе, что так можно»: черновики читались с головной болью [2], книга в тысячу страниц переводилась два дня, а электричество, отключённое посреди процесса, стоило ещё двух.
За год программа доехала до версии 2.1, я перевёл достаточно книг, чтобы набить руку, и понял главное: это уже инструмент не только для меня, но и для переводчиков — и для всех любопытных. Рассказываю, что изменилось, сколько это стоит в токенах и почему без человека ничего не работает.
Первое. Перевод средней книги потребляет всего 1,5–2 миллиона токенов. Звучит как много, но на деле это одна книга — целиком, со всеми стадиями: перевод, замечания, исправление, корректура, резюме глав. Не десятки миллионов, не бесконечные диалоги с чат-ботом. Конечная, предсказуемая, небольшая величина.
Второе. Переводчики по-прежнему нужны и важны. Особенно хорошие. Нейронка не умеет в словотворчество: встречая новый термин, она чаще всего просто транскрибирует его. Классический пример — книги Нила Эшера: нейросеть честно выдаст «габлдак», в то время как живой переводчик в своё время нашёл великолепный «уткотреп» (а до него был ещё и «бормокряк» — и это тоже придумал человек). Машинный перевод не заменяет переводчика — он снимает с него черновую работу и оставляет то, что делает перевод литературой.
Если в прошлой статье Sunny Narrator был «поделкой на 200 строк, обросшей костылями», то сейчас это внятный пайплайн:
FB2 и EPUB (плюс DOCX и PDF через Calibre-конвейер). Причём FB2 идёт отдельным «классическим» путём — структура книги (стихи, строфы, разделы) сохраняется один в один.
Пять стадий контроля качества: перевод → замечания → исправление → корректура → резюме чанка. Можно включить быстрый режим из двух стадий — примерно в 2,5 раза быстрее, но уже не для финального художественного качества.
Checkpoint/resume: после каждого чанка пишется контрольная точка. Отключили свет, упала модель, уехал кот на клавиатуру — запуск продолжает с чанка №51 из 100, а не с начала. Моя старая боль «4 дня из-за электричества» закрыта.
JSON_MODE: модели на всех стадиях отвечают структурированным JSON — парсинг перестал быть лотереей.
Серийные словари: можно прогнать всю серию книг и собрать единый словарь имён и терминов по всем томам. Для многотомников это спасение.
Пайплайн почти не изменился с прошлой статьи — но каждая стадия стала надёжнее.
Самый неочевидный вывод года: если переводить одной моделью, текст выглядит неполным. Хорошие переводческие модели отлично пишут, но слабо вычитывают; хорошие «вычитыватели» скучно переводят. Поэтому в Sunny Narrator работают две роли:
MODEL_TRANSLATE — переводчик;
MODEL_PROOFREAD — корректор, который смотрит на результат со стороны и чинит.
Мой личный вариант, сложившийся за месяцы прогонов:
gemma4-26B-A4B — переводчик;
qwen3.6-35B-A3B — корректор.
Обе — компактные MoE-модели, которые уверенно живут на паре Tesla P40 и выдают 40–70 токенов в секунду. Это весьма и весьма быстро: для локального железа вчерашнего дня — почти непозволительно. Можно брать модели и меньше, они тоже работают, — но именно эта пара даёт лучшее соотношение скорости и «литературности» из всего, что я пробовал.
Кстати, год назад в комментариях мне советовали посмотреть в сторону Qwen вместо Mistral — совет оказался пророческим, спасибо. Теперь очередь за советом про графовые БД и RAG, но это уже другая история.
Математика [3] простая и приятная:
Средняя книга — 1,5–2 млн токенов суммарно по всем стадиям.
Две Tesla P40 с этой парой моделей — 2–3 книги в день.
Если вместо локального железа взять подписку Qwen через API — книги начинают считаться уже десятками, упираясь только в лимиты подписки и вашу решимость.
Что происходит с результатом дальше? А вот тут самое интересное для скептиков «машинный перевод — это нечитаемо». Готовый перевод — это черновик высокой готовности. Его доводка до приличного вида сводится к:
вычитке текста;
замене слов, которые пропустили в словаре (имена, термины, говорящие фамилии);
замене того, что «выглядит неприглядно» — кривых оборотов, неудачных каламбуров, стилистических провалов.
То есть человек делает то, что он и должен делать: редакторскую и переводческую работу, а не разгребает кашу из путающихся имён и родов. Переводчику такой черновик экономит недели; любопытному читателю — позволяет вообще прочесть книгу, которая иначе не добралась бы до него.
Для сравнения — фрагменты оригинала, перевода годичной давности и издательского перевода.
Если из всей статьи вы запомните одну фразу, пусть это будет она: самое главное — подготовить корректный словарь. Модель может быть средней, железо — скромным, но со словарём книга переводится ровно: имена не плывут, термины не переименовываются на каждой странице, герои не меняют пол между главами. И наоборот: без словаря даже отличная модель даст вам дрейф имён и «Алису, которая стала Элис».
Откуда брать словарь? В программе есть встроенные NER-словари: модель распознавания именованных сущностей (spaCy) проходит по книге и вытаскивает всех персонажей, организации, города и страны, а частотный анализ добавляет важные слова. На выходе получается заготовка книга.dic в формате оригинал = перевод, категория, род, примечания. Для серии книг — один общий словарь по всем томам.
Честно предупреждаю: эти словари собираются гигантскими, и на чистку и вычитку словаря иной раз уходят часы. Это нормальная цена входа. Пропущенное в словаре слово — это как раз та самая «неприглядность», которую потом придётся ловить на вычитке. Так что правило простое: час, вложенный в словарь до перевода, экономит день после.
Словари — главная ценность всей затеи, и я готовлю сайт для обмена словарями: чтобы сообщество могло выкладывать и забирать готовые словари к книгам и сериям.
Зачем это нужно с юридической точки зрения [4]: сам машинный перевод книги — территория серая, а вот словарь имён и терминов — обычный список фактов. Обмениваясь словарями, мы сможем не нарушая законодательства заметно поднимать качество перевода тех книг, которые у вас уже есть в формате FB2 или EPUB: взял свою копию, накатил чужой вычищенный словарь — и получил перевод, на который раньше уходили часы ручной подготовки. Перевод при этом каждый делает локально, сам, на своём железе или своём API.
Сайт в работе; как только будет что показать — напишу отдельно, а ссылка появится в репозитории.
Признаться, я ожидал, что русского текста на выходе станет ощутимо больше — традиционно перевод с английского «разбухает». А потом я посмотрел на цифры и удивился: английский мапится в русский с точностью до пары процентов.
Это не случайность [5], а встроенный контроль длин. Программа сравнивает размер блока оригинала и перевода, и если расхождение уезжает заметно за 10% — значит, что-то пошло не так: модель съела абзац, нафантазировала, задвоила. В этом случае срабатывает речанкинг: блок разбивается пополам и каждая половина переводится заново. Просто, топорно — и на практике реально решает львиную долю ошибок перевода. Итоговая книга по размеру сходится с оригиналом в пределах ±5%.
Лог по-прежнему огромный (кратно больше самой книги) и по-прежнему лучший инструмент диагностики.
В прошлый раз под статьёй было немного комментариев, но все по делу. Краткий отчёт, что из этого выросло:
«Плагин Calibre переводит книгу за 2 часа, а у вас 2 дня» — да, короткие и простые тексты плагины щёлкают быстро, и для фанфиков/рассказов это честный выбор. Но на книгах от 500+ страниц без контекста, словаря и моделей от 20B текст рассыпается: голова лопнет от переключений имён, родов и полов. Теперь у меня есть и скоростной режим, и вменяемое время: 2–3 книги в день на локальном железе.
«Попробуйте Qwen вместо Mistral» — сделано: связка qwen3.6-35B-A3B + gemma4-26B-A4B сейчас рекомендуемая в репозитории.
«Боль с FB2 в Calibre» — понимаю, сам там живу: поэтому FB2 идёт отдельным бережным пайплайном, а вот EPUB/DOCX/PDF теперь, наоборот, доступны через Calibre-конвейер.
«А надо ли усложнять, может прогресс сам всё решит?» — прошёл год. Готового инструмента, который переводил бы книгу целиком с удержанием контекста, имён и терминов, так и не появилось. Прогресс решает качество абзаца; контекст книги по-прежнему приходится строить руками. Так что усложняем дальше.
Есть отличные скилы для Claude ChatGPT но объем вычитки в дни для меня все еще много. Но спасибо тем ребятам что выкладывают такие переводы, пару книг я брал с таким переводом и после них не выдержал и значительно доработал составление словарей, узнал что такое косинусные сравнения, вектора и NLP пайплайн.
Переводчикам — как черновик высокой готовности: словарь + вычитка вместо перевода с нуля. Особенно на больших сериях, где единый словарь имён решает половину проблем.
Издательствам и редакциям — как способ быстро прикинуть, стоит ли браться за книгу, и как черновой слой под работу редактора. (И да, вопрос лицензии на код открыт.)
Любопытным читателям — как возможность прочесть книгу, которой нет на вашем языке: своя копия книги, свой словарь, своё железо, никакой магии и никакого нарушения закона.
Энтузиастам локальных LLM — как живую боевую нагрузку для пары старых серверных GPU: 40–70 токенов в секунду на Tesla P40 сегодня вполне по карману.
Всё как раньше: питон, два провода и упрямство.
Репозиторий: github.com/NW15D/sunny-narrator [6] — там код, документация (13 страниц, включая русский README), примеры конфигов под Ollama/llama.cpp/Docker и те самые рекомендуемые модели.
Если перевели что-то интересное или готовы помочь со словарями/порталом обмена — жду в issues и PR. И, как и год назад: если у вас валяется без дела пара серверных видеокарт — вы знаете, что с ними делать.
Автор: neowisard
Источник [7]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/34950
URLs in this post:
[1] Переводим fb2 книжки, с нейронками, для себя: https://habr.com/ru/articles/946870/
[2] болью: http://www.braintools.ru/article/9901
[3] Математика: http://www.braintools.ru/article/7620
[4] зрения: http://www.braintools.ru/article/6238
[5] случайность: http://www.braintools.ru/article/6560
[6] github.com/NW15D/sunny-narrator: https://github.com/NW15D/sunny-narrator
[7] Источник: https://habr.com/ru/articles/1077366/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1077366
Нажмите здесь для печати.