Год назад я написал статью «Переводим fb2 книжки, с нейронками, для себя» — про то, как собрал на паре Tesla P40 в гараже программу Sunny Narrator (“Солнечный сказочник”), которая переводит художественные книги через локальные и облачные LLM. Тогда это был скорее прототип «доказать себе, что так можно»: черновики читались с головной болью, книга в тысячу страниц переводилась два дня, а электричество, отключённое посреди процесса, стоило ещё двух.

За год программа доехала до версии 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, но это уже другая история.

Сколько стоит книга и сколько книг в день помещается в гараж

Математика простая и приятная:

  • Средняя книга — 1,5–2 млн токенов суммарно по всем стадиям.

  • Две Tesla P40 с этой парой моделей — 2–3 книги в день.

  • Если вместо локального железа взять подписку Qwen через API — книги начинают считаться уже десятками, упираясь только в лимиты подписки и вашу решимость.

Что происходит с результатом дальше? А вот тут самое интересное для скептиков «машинный перевод — это нечитаемо». Готовый перевод — это черновик высокой готовности. Его доводка до приличного вида сводится к:

  1. вычитке текста;

  2. замене слов, которые пропустили в словаре (имена, термины, говорящие фамилии);

  3. замене того, что «выглядит неприглядно» — кривых оборотов, неудачных каламбуров, стилистических провалов.

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

Скрин куска текста: от издательства, от MVP и оригинал
Скрин куска текста: от издательства, от MVP и оригинал

Для сравнения — фрагменты оригинала, перевода годичной давности и издательского перевода.

Словарь — это 80% успеха

Если из всей статьи вы запомните одну фразу, пусть это будет она: самое главное — подготовить корректный словарь. Модель может быть средней, железо — скромным, но со словарём книга переводится ровно: имена не плывут, термины не переименовываются на каждой странице, герои не меняют пол между главами. И наоборот: без словаря даже отличная модель даст вам дрейф имён и «Алису, которая стала Элис».

Откуда брать словарь? В программе есть встроенные NER‑словари: модель распознавания именованных сущностей (spaCy) проходит по книге и вытаскивает всех персонажей, организации, города и страны, а частотный анализ добавляет важные слова. На выходе получается заготовка книга.dic в формате оригинал = перевод, категория, род, примечания. Для серии книг — один общий словарь по всем томам.

Честно предупреждаю: эти словари собираются гигантскими, и на чистку и вычитку словаря иной раз уходят часы. Это нормальная цена входа. Пропущенное в словаре слово — это как раз та самая «неприглядность», которую потом придётся ловить на вычитке. Так что правило простое: час, вложенный в словарь до перевода, экономит день после.

Анонс: сайт обмена словарями (и немного про закон)

Словари — главная ценность всей затеи, и я готовлю сайт для обмена словарями: чтобы сообщество могло выкладывать и забирать готовые словари к книгам и сериям.

Зачем это нужно с юридической точки зрения: сам машинный перевод книги — территория серая, а вот словарь имён и терминов — обычный список фактов. Обмениваясь словарями, мы сможем не нарушая законодательства заметно поднимать качество перевода тех книг, которые у вас уже есть в формате FB2 или EPUB: взял свою копию, накатил чужой вычищенный словарь — и получил перевод, на который раньше уходили часы ручной подготовки. Перевод при этом каждый делает локально, сам, на своём железе или своём API.

Сайт в работе; как только будет что показать — напишу отдельно, а ссылка появится в репозитории.

Удивительное про длину: ±2% и речанкинг

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

Это не случайность, а встроенный контроль длин. Программа сравнивает размер блока оригинала и перевода, и если расхождение уезжает заметно за 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 — там код, документация (13 страниц, включая русский README), примеры конфигов под Ollama/llama.cpp/Docker и те самые рекомендуемые модели.

Если перевели что‑то интересное или готовы помочь со словарями/порталом обмена — жду в issues и PR. И, как и год назад: если у вас валяется без дела пара серверных видеокарт — вы знаете, что с ними делать.

Комментарии (22)


  1. netricks
    01.09.2026 18:41

    У меня немного другая идея. Нейронка переводит текст по ходу чтения. С учётом возникающих комментариев пользователя и памятью о его замечаниях. А заодно сразу идёт обсуждение текста. Получается модель не переводим-читаем, а скорее этакое совместное чтение с агентом. Эксперементируем пока


    1. Erop_M
      01.09.2026 18:41

      Интересно, тоже думал об этом. Только в сторону чтения с детьми — с проверкой усвоения и слушанием пересказа.

      Планируете опубликовать свои наработки?


      1. netricks
        01.09.2026 18:41

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


  1. funca
    01.09.2026 18:41

    эти словари собираются гигантскими, ... в формате оригинал = перевод, категория, род, примечания

    Интересно, насколько они большие - по сравнению с объёмом самой книги и по количеству слов на произведение. Как вы их отдаёте LLM если они так велики. Как поступаете с синонимами (вероятно я не понял какую роль играют категория, род и примечание).


    1. neowisard Автор
      01.09.2026 18:41

      На три книги по 700-600кб текста - 300кб словарь с ограничениями от 10 повторов, потом я его вырезаю до 5-15кб текста. словари динамические - в чанк для перевода попадают только те слова что есть в чанке, причем они заменяются до начала перевода.


  1. sergicus
    01.09.2026 18:41

    Гляньте эту программму https://github.com/primalrin/translatorFork_MOD, в ней очень удобно использовать бесплатные ключи гемини.


  1. eugenk
    01.09.2026 18:41

    Привет ! Интересная статья... Извини, возможно чайнеццкий вопрос, но не мог бы ты описать конфигурацию своего сервера и сколько примерно это будет стоить ??? А то глянул, сами видеокарты идут за довольно гуманный прайс. Если и остальное тоже, хотелось бы с этим поиграться.


    1. neowisard Автор
      01.09.2026 18:41

      в моем случае это просто старый сервер в гараже , в который через удлинители воткнуты в pciex16 две видеокарты + турбинки для охлаждения карт и напечатные корпуса турбинок (теслы без вентиляторов - надо дорабатывать) + блок питания.
      если дома - то вероятно rtx3090 будет разумнее. более ничего и не надо.


      1. neowisard Автор
        01.09.2026 18:41

        я бы для начала купил 2 API доступа к гуглу и qwen - и посмотрел на тестовой книжке сколько будет стоит перевод. он точно будет очень быстр и возможно недорог. проксиапи даже за рубли продают - дело 10 минут


  1. Skubent
    01.09.2026 18:41

    А например с deepl качество сравнивали?


    1. neowisard Автор
      01.09.2026 18:41

      я же говорил выше, книги особенно фантастика она расползается по словам , тутАлиса, потом Элис, потом еще как. меня к примеру это бесит. Очень много книг переводят такими переводчиками, они есть , и даже потом доведенные они не дотягивают немного. читать можно но коробит.
      или к примеру обсценная лексика, у некоторох авторов это фишка, но последние 2 тома перевода Империи вампиров от Джея Кристофа - полностью это убрали потому как нейронками перевели и не погрузились.


  1. Arondy
    01.09.2026 18:41

    Несколько месяцев назад встретил вашу прошлую статью, и пробовал ИИ для перевода с английского, тем более был повод - непереведенные книги Брэндона Сандерсона в серии, первые книги которой я уже прочитал.
    Вариант использования через API вместо ИИ агента мне был неудобен, в итоге навайбил через глм 5.2 собственный скилл, идеи в нем все те же - словарь, проверяемый пользователем, черновой перевод, затем полировка. Правда, автосоздаваемый словарь тянет уж слишком много терминов, в своем решении я даю это нейронке, она выбирает наиболее подходящие термины типа имен и названий, сразу их переводит и отдает человеку на проверку. Если что-то пропустила, то по ходу перевода добавляет в словарь и снова ждет утверждения.

    Насчет потребления токенов - 1.5-2 миллиона каких токенов, с учетом кеша или нет? У меня выходило около 1-3/20/0.2 миллиона input/cache/output на книгу в 128 страниц epub (Snapshot от того же Сандерсона). Те книги, про которые я говорил в начале, раза в 2-4 больше, и токенов на них тратится тоже больше, не кратно, но всё же.
    В переводах точно нужно пробовать разные модели, результаты могут быть совершенно нелогичными) Среди тех что пробовал, на удивление лучше всего переводила китайская Hy3 - намного более живой слог, чем у deepseek v4 flash 0731, хотя последний умнее по бенчмаркам.


    1. neowisard Автор
      01.09.2026 18:41

      та мне не будет кэша почти, вот пример
      ============================================================ 2026-09-02 00:57:23,881 - INFO - TRANSLATION METRICS REPORT 2026-09-02 00:57:23,881 - INFO - ============================================================ 2026-09-02 00:57:23,881 - INFO - Successful translations: 110 2026-09-02 00:57:23,882 - INFO - Failed translations: 0 2026-09-02 00:57:23,882 - INFO - Total tokens: 2,943,935 2026-09-02 00:57:23,882 - INFO - Retry tokens: 0 (0.0%) 2026-09-02 00:57:23,882 - INFO - Rechunk events: 0 2026-09-02 00:57:23,882 - INFO - XML repairs: 0 2026-09-02 00:57:23,882 - INFO - Language mismatch retries: 0 2026-09-02 00:57:23,882 - INFO -

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


      1. neowisard Автор
        01.09.2026 18:41


  1. DanielKross
    01.09.2026 18:41

    Очень интересно, спасибо!


  1. janvarev
    01.09.2026 18:41

    Посмотрел гитхаб; сам занимался переводами.

    Вопрос - я правильно понял, что словарь пока создается только через spacy и эмпириками и без перевода, а не через LLM с предположительными вариантами перевода? Второе было бы крайне удобно - чтобы сама сеть проанализировала на 0 проходе текст, и сформировала глоссарий. Потому что руками тяжко и долго.

    У меня это сделано на сайте так - посмотрите, может что пригодится.


    1. neowisard Автор
      01.09.2026 18:41

      нет, не верно ) готовый словарь уже с переводом, ида он делается spacy+ частотники , а потом улетает в llm для перевода, его можно дополнять комментами, гендером и т.п., хотя гендер часто берется из синопсиса предыдущей главы.


      1. janvarev
        01.09.2026 18:41

        готовый словарь уже с переводом, ида он делается spacy+ частотники , а потом улетает в llm для перевода

        А можете подсказать, на каком этапе он делается? Потому что я так понял по документации, что сразу же идет первый этап перевода (включая Fast mode), но не понял, когда делается словарь.

        И да - не хотите сделать опциональное заполнение словаря через LLM вместо spacy?


        1. funca
          01.09.2026 18:41

          заполнение словаря через LLM вместо spacy?

          Какие по-вашему положительные и отрицательные стороны у такой замены?


          1. janvarev
            01.09.2026 18:41

            Отрицательные - стоимость (нужно будет вызовы делать)

            Положительные - LLM имхо лучше трекают ситуативные спецтермины, нежели эвристики + это апргрейдабельно, кому нужно - используют тяжелые модели, чтобы лучше выделить. Универсально, опять же - не нужно думать, какой словарь подставить, какие эвристики, как потенциальную билингву разруливать; как с китайского/корейского переводить.


        1. neowisard Автор
          01.09.2026 18:41

          в app.py - проверка наличие файла имя_книги.dic если его нет - идем в словарь , это файл vocab...*. Я честно не понимаю как делать словарь с LLM , т.е. это настолько ниже плато паретто которым я руководствовался когда собирал функции, ну улучшит процентов на 5, а работы.. сейчас результат жуе фиксированный и понятный. я думаю я временно остановился.


          1. neowisard Автор
            01.09.2026 18:41

            соврал - словарь в ner.py , там же стоп слова ntlk и тд.д. (для одного языка, тут надо деделывать под разные)