Год назад я написал статью «Переводим 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 — книги начинают считаться уже десятками, упираясь только в лимиты подписки и вашу решимость.
Что происходит с результатом дальше? А вот тут самое интересное для скептиков «машинный перевод — это нечитаемо». Готовый перевод — это черновик высокой готовности. Его доводка до приличного вида сводится к:
вычитке текста;
замене слов, которые пропустили в словаре (имена, термины, говорящие фамилии);
замене того, что «выглядит неприглядно» — кривых оборотов, неудачных каламбуров, стилистических провалов.
То есть человек делает то, что он и должен делать: редакторскую и переводческую работу, а не разгребает кашу из путающихся имён и родов. Переводчику такой черновик экономит недели; любопытному читателю — позволяет вообще прочесть книгу, которая иначе не добралась бы до него.

Для сравнения — фрагменты оригинала, перевода годичной давности и издательского перевода.
Словарь — это 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)

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

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

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

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

neowisard Автор
01.09.2026 18:41в моем случае это просто старый сервер в гараже , в который через удлинители воткнуты в pciex16 две видеокарты + турбинки для охлаждения карт и напечатные корпуса турбинок (теслы без вентиляторов - надо дорабатывать) + блок питания.
если дома - то вероятно rtx3090 будет разумнее. более ничего и не надо.
neowisard Автор
01.09.2026 18:41я бы для начала купил 2 API доступа к гуглу и qwen - и посмотрел на тестовой книжке сколько будет стоит перевод. он точно будет очень быстр и возможно недорог. проксиапи даже за рубли продают - дело 10 минут

Skubent
01.09.2026 18:41А например с deepl качество сравнивали?

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

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, хотя последний умнее по бенчмаркам.
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 -Но тут надо погрузится какие токены, вход, выход и посмотреть как считает. если уж лезть глубже.

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

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

janvarev
01.09.2026 18:41готовый словарь уже с переводом, ида он делается spacy+ частотники , а потом улетает в llm для перевода
А можете подсказать, на каком этапе он делается? Потому что я так понял по документации, что сразу же идет первый этап перевода (включая Fast mode), но не понял, когда делается словарь.
И да - не хотите сделать опциональное заполнение словаря через LLM вместо spacy?

funca
01.09.2026 18:41заполнение словаря через LLM вместо spacy?
Какие по-вашему положительные и отрицательные стороны у такой замены?

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

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

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

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