Получилось так что я купил книжку на английском, в Австралии (автор оттуда и там она дешевле в 3 раза чем у Гугла), но прочитать не смог, очень богатый мир , много странных слов, начал терять контекст истории, читал по 2 страницы в день. Затем на ТГ канале Акимова попалась ссылка на прототип агента по переводу текста , со сслыками в итоге на научные работы и т.д., обрадовавшись полез на гитхаб искать форки и конечно готовую софтину , но почему то она не случилась. спустя два года появились платные сервисы, но не опенсорсная поделка, и я решил собрать хотя бы MVP чтобы проверить идею самостоятельно, потом написать софт и продать софтину издательствам и стать миллионером конечно же...


Так как писать код я не умел, а команде надо платить, а я больше админ-девопс-ПМ, то совместно с Qwen, а позже уже и с Devstall small начал писать код. Совершенно случайно у меня в гараже стоял сервер с парой Nvidia P40 24GB которые простаивали, потому что голосовый помощники для HomeAssistant на них работали, но с неприятной задержкой, и вообще там все было понятно. Спустя год периодических попыток написать что-то путное, к третьей версии, я получил в итоге несколько переводов длиной более 500 страниц на русском, и могу предложить вам MVP который может выдавать читаемые с головной болью черновики книжек.

В итоге я прочитал таки черновик этой книги на русском, и спустя неделю узнал что ее выпустили у нас совершенно официально на русском. И увидев текст понял что пора опубликовать статью, потому что переводы как мне кажется теперь и издательства делают именно так, с нейронками, и возможно переводчикам которые топят за скорость поможет моя поделка.

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

Далее я хотел написать классическую статью, ни разу не писал, ради прикола попросил туже ChatGPT она все написала, и стало скучно до жути, эта "классическая " статья будет под спойлером, она реально по теме, написана с двух запросов, а дальше будет кратенько что и зачем, с примерами.

Статья от нейронки, она поясняет что и зачем для тех кто первый раз.

Введение

Сегодня миллионы книг выходят в электронном виде. Но далеко не все они доступны на родном языке читателя. Конечно, можно загнать текст в Google Translate, но попробуйте перевести так целый роман — форматирование сломается, диалоги потеряются, а примечания исчезнут. а еще бывает переводчики добавляют контекст лишний (* Не всем удается это хорошо, как г-же Осояну) .
Мы решили эту проблему и собрали систему, которая умеет переводить целые книги в формате FB2, сохраняя все главы, сноски и даже внутренние ссылки.

FB2 — популярный формат электронных библиотек, особенно в русскоязычном интернете. Он прост, удобен и прекрасно подходит для хранения больших коллекций. Но при переводе книг из других языков в FB2 возникает вечная проблема: текст переводится, а структура книги — аннотации, примечания, сноски — теряется. Для издательств это трата времени и денег, а для читателей — неудобство. Автоматизация способна всё изменить: переводы станут доступнее, а скорость работы увеличится в разы.

Как устроена система

Мы построили её из четырёх основных «кирпичиков»:

  1. Парсер FB2 — аккуратно вытаскивает текст и метаданные из книги, не ломая XML-разметку.

  2. Нейросеть-переводчик — переводит текст параграф за параграфом, сохраняя контекст.

  3. Постобработка — подчищает стиль и грамматику, чтобы перевод читался естественно.

  4. Сборщик FB2 — собирает всё обратно в книгу: с главами, сносками и нужными тегами.

В итоге на выходе получается полноценный FB2, но уже на другом языке.

Как работает перевод

Представьте, что у вас на руках роман в 500 страниц. Система делает следующее:

  • разбирает его на главы и абзацы,

  • переводит каждый кусок текста,

  • обрабатывает сноски и примечания,

  • и наконец собирает всё в новый FB2.

Для читателя это выглядит так: вы открываете знакомую электронную книгу, только теперь она на нужном вам языке.

Какие были трудности

Не всё шло гладко. Например:

  • Форматирование — большинство переводчиков ломают разметку, а у нас она сохраняется.

  • Художественный стиль — нейросеть склонна к дословности, поэтому мы обучили её учитывать жанр.

  • Большие объёмы — книги в сотни тысяч слов требуют оптимизации: пришлось разбивать текст на блоки и кешировать результаты.

  • Примечания и ссылки — отдельный механизм сохраняет правильные переходы в тексте.

Как мы проверяли качество

Мы протестировали систему на 50 книгах: от классики до фанфикшена. Использовали и автоматические метрики (BLEU, TER), и живых экспертов-читателей. Результат порадовал: переводы читаются целостно, структура сохранена, а по восприятию текст ближе к литературному, чем у Google Translate или DeepL.

Где это пригодится

  • Издательства смогут быстрее готовить переводы.

  • Электронные библиотеки — расширить фонды книгами на разных языках.

  • Авторы-самиздата — публиковать свои тексты для мировой аудитории.

  • Учёные и студенты — получать доступ к зарубежной литературе без долгого ожидания перевода.

Что дальше

Планы амбициозные:

  • добавить поддержку EPUB и MOBI,

  • научить систему подстраиваться под стиль текста — будь то роман, учебник или научная статья,

  • встроить синтез речи и сразу создавать аудиокниги,

  • сделать онлайн-редактор, где перевод можно будет быстро подправить.

Заключение

Нейросети уже умеют многое, но перевод целых книг с сохранением структуры — задача особенная. Мы показали, что это возможно: теперь FB2-книга может быть переведена автоматически и при этом остаться полноценной, удобной для чтения. А значит, литература станет доступнее, а границы между языками — чуть менее заметными.(тут все враки)

Итак, что получилось , последовательность:

  • Прототип 1 , выбор форматов (fb2, txt, epub), базовый код, на выходе мусор

    Был на 200 строк , результ как и в оригинальном коде , не впечатляли.

  • Прототип 2 , только fb2 , промт - кодинг, на выходе все еще не очень, потери текста и т.д.

    Тут выяснилось что недостаточно написать просто код, надо еще и промты к нейросети написать так чтобы текст переводился нормально, и для каждой нейросети это разный промт. К тому же пришлось добавить не 2 роли как в оригинале а все 4 - еще добавить корректора , сумматора текста из предыдущей главы. А еще нейронки, локально запущенные периодически зависают, повторяются, и имеют некоторое количество глюков которые не позволяют достичь результата.

  • Протитип 3, текущий, в который удалось добавить все фантазии из оригинального кода, и дополнительные фичи.

    Тут еще добавился динамический словарь, автоматический словарь со spaСy, косинусные сравнения слов и всякая дичь, контроль длин оригинала и абзаца.

Sunny narrator или Солнечный сказочник

Так я решил назвать поделку на python, с OpenAI API, Cuda, spacy. Что делает :

  1. Загружает конфиг или читает из ENV.

  2. Загружет книжку FB2.

  3. Если параметр NER = true то проверяет наличие файла имя_книжки.dic , если его нет пытается создать словарь используя нейронную сеть от spacy и тут же дополняет словарь самыми частыми используемыми словами и отдает его на перевод в основную нейросеть. Если нужен автоматический словарь надо что б на компе было VGPU 4Gb и выше иначе создайте имя_книжки.dic руками и можете ничего не добавлять или накидать словарь самостоятельно. Это критично для многотомных книг.

  4. Нейросети используются через API , поэтому можно подключать любые облачные, локальные и какие угодно нейронки поддерживающие OpenAI compatible API.Предлагается использовать две разных, основную мультиязычную и вторую больше заточенную на итоговый язык, для более качественного перевода, это реально работает.

  5. Текст разбивается на section который разбивается на куски (чанки) согласно параметру. Чанк дополняется словарем и резюме от прошлого чанка и отдается на перевод, затем на подготовку замечаний к переводу, затем на исправление согласно замечаниям, затем корректура, и подготовка краткого резюме чанка с указаем пола основновных персонажей( ибо между чанками часто пол теряется и корежит при прочтении ого-го)

    Процесс такой
    Процесс такой

    Потом все это както суммируется и каждая section от fb2 записывается во временный файл, а после завершения перевода в итоговый файл. Метаинформация fb2 не переводится ,как и обложка, я забил. Это прототип.

    Что бы все это запустить понадобятся знания python и инсталяция модулей с cuda или без (вручную создайте файл имя_книжки.dic ), установка моделей spacy и драйверов nvidia ну и API которое позволит вам залить туда много-много текста. Как правило количество токенов будет равным трехкратному размеру текста в байтах. Например модуль генерации замечаний по качеству перевода иногда генерирует список замеаний больше чем сам текст, даже с учетом лимитов. Тестировал качество переводов на разных параметрах я с помощью батчей , а перевод нескольких книг запускал так .

  6. В процессе перевода генерируется гигантский log файл, он кратно больше книги, в нем все ходы записаны, чтобы понять если чтото пошло не так - что именно. Итоговая книга должна быть размером +-5% от источника, не больше.

Пример лог файла, он помогает в исследованиях как шел перевод
Пример лог файла, он помогает в исследованиях как шел перевод

Запуск нейронок локально для тех у кого есть VGPU , т.е. память, можно пробовать от 8Gb

Так запускаются 2 мои нейронки на Ubuntu, после месяца тестирования я остановился на них, тут уже заложены параметры от зависания , от повторов , работающий вариант :

/ai/llama.cpp/build/bin/llama-server --host 192.168.0.55 -t 8 --no-mmap  --numa distribute --port 6155  --ctx-size 32768 -m /ai/models/google_gemma-3-27b-it-qat-Q5_K_M.gguf -ngl 130  -np 1 --top-k 64 --min-p 0.1 --top-p 0.95 -fa --prio 2 --repeat-penalty 1.1 --device CUDA0,CUDA1 -ts 0.5,0.5 -sm row --predict 16512 --cache-type-k q8_0
/ai/llama.cpp/build/bin/llama-server -m /ai/models/Mistral-Small-3.2-24B-Instruct-2506-Q6_K.gguf -ngl 130 -np 1 --top-k 20 --min-p 0.1 --top-p 0.95 -fa --device CUDA0,CUDA1 --host 192.168.0.55 --port 6150 --ctx-size  32768 -fa --prio 2 --repeat-penalty 1.3 --repeat-last-n 4 --device CUDA0,CUDA1 -ts 0.5,0.5 -sm row --predict 16512 --no-mmap  --numa distribute --reasoning-format none --cache-type-k q8_0 --jinja

Рекомендую в облаках пробовать Claude и Gemini, лучшая поддержка языков.

Перевод, что получается на выходе

Я тестировал перевод с ангийского на русский: маленькие книжки , большие книжки и продолжение серий . Ограничений по языкам нет, но надо повозится со spaCy и указать и скачать нужные модели для словарей. Косинусный подбор слов для формирования динамического словаря отключен, если вы знакомы с python включите его, это потребует GPU памяти на машине и замедлит перевод но качество будет чуть лучше, процента на 2-5.

Книга в 600-700 страниц у меня переводится 2 дня, если отключают электричество то все 4. Опять же это протитип, тут нет очередей, postgresDB, кэшей, бэкапов, эффективности ну и всего того что есть на работе )).

Будут по разному переводится имена и некотрые термины, чем больше таких терминов есть в словаре тем лучше. У перевода есть дрейф, т.е. каждый следующий перевод одной и той же книги может отличаться, даже учитывая что температура стоит 0 или 0.01. Если температура будет выше то вы можете получить совсем иную историю, от той что имел ввиду автор, полярно иную, иногда это очень смешно а иногда непонятно куда ушло повествование, поэтому появился собственно синопсис(резюме) и словарь.

Но в итоге черновик читабелен, на русском, и пара человек могла бы исправить книгу в 700 страниц до публикации за неделю (я всегда со сроками косячу).

По ссылке есть пример перевода старого фантастического произведения на 20 страниц от Стива Джонсона , годов так 70х вроде, защита прав вроде как снята уже, ну и он публиковался в разных журналах, можно посмотреть на качество. Юмор по большей части понятен, шутки основанные на звучании в оригинале — это будут потеряны при переводе в 70%,в остальных заменятся на что‑то другое, и в примерно 5% будет донесены как надо, я не понимаю как так. Там же есть книжка к игрушке Exodus «The traveler's creed» на 700 страниц переведенная этим прототипом — в ней заметны и непереведенные блоки, дрейфуют имена( не справляется словарь) ну и т. д. Также по ссылке есть пример лога, словаря, и книжки ExampleBook.fb2 с которой стоит начинать запуск программы чтобы проверить ее работу.

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

P.S.

Я фанат свежих sci-fi & cyberpunk романов и если кто-то мучается с переводом какой нить интересной книжки, и готов пострадать со словарем - обращайтесь в личку, я пару недель еще у компа и смогу прогнать чтото на своих железках.

Если у кого то есть правки или понимание как улучшить софт пишите мне и делайте pull request , я посмотрю и приму ваши правки, или делайте свою версию, код отдается как есть.

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


  1. Shado_vi
    14.09.2025 21:40

    использовать графовую базу данных.
    для одной из вариаций применения https://arxiv.org/html/2507.03311v1.

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

    искать помощи для создания промтов для перевода у тех кто имел опыт в переводе художественных текстов.

    использование адаптеров к моделям под определённую стилистику/жанр произведения.


  1. badsynt
    14.09.2025 21:40

    Есть одна неплохая open source программа для работы с различными е-буками. Называется Calibre. Возможно Вы о ней слышали. К ней есть плагин для перевода книг.

    https://translator.bookfere.com/

    Он делает многое, из того, что Вы хотели. Я использовал его с Gemma 3 12B с помощью LM Studio server с неплохими результатами.

    Кстати, есть на Хабре и статья об этом.

    https://habr.com/ru/articles/925330/

    К сожалению моей проблемы это никак не решает. ( Перевод PDF научных статей и книг, нагруженных многоэтажными формулами, рисунками и таблицами). Даже Acrobat при попытке конвертировать pdf хоть куда-то превращает все в кашу. Гораздо легче, если есть исходники TEX, как на arxiv.org. Их можно перегнать в epub или HTML. Но уже виден свет в конце туннеля. Конвейер PDF->Картинка-> OCR-> Markdown->HTML-> Google translator работает очень быстро и формулы с картинками на месте, только гуглоперевод отвратный :(