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

Далее я хотел написать классическую статью, ни разу не писал, ради прикола попросил туже ChatGPT она все написала, и стало скучно до жути, эта "классическая " статья будет под спойлером, она реально по теме, написана с двух запросов, а дальше будет кратенько что и зачем, с примерами.
Статья от нейронки, она поясняет что и зачем для тех кто первый раз.
Введение
Сегодня миллионы книг выходят в электронном виде. Но далеко не все они доступны на родном языке читателя. Конечно, можно загнать текст в Google Translate, но попробуйте перевести так целый роман — форматирование сломается, диалоги потеряются, а примечания исчезнут. а еще бывает переводчики добавляют контекст лишний (* Не всем удается это хорошо, как г-же Осояну) .
Мы решили эту проблему и собрали систему, которая умеет переводить целые книги в формате FB2, сохраняя все главы, сноски и даже внутренние ссылки.
FB2 — популярный формат электронных библиотек, особенно в русскоязычном интернете. Он прост, удобен и прекрасно подходит для хранения больших коллекций. Но при переводе книг из других языков в FB2 возникает вечная проблема: текст переводится, а структура книги — аннотации, примечания, сноски — теряется. Для издательств это трата времени и денег, а для читателей — неудобство. Автоматизация способна всё изменить: переводы станут доступнее, а скорость работы увеличится в разы.
Как устроена система
Мы построили её из четырёх основных «кирпичиков»:
Парсер FB2 — аккуратно вытаскивает текст и метаданные из книги, не ломая XML-разметку.
Нейросеть-переводчик — переводит текст параграф за параграфом, сохраняя контекст.
Постобработка — подчищает стиль и грамматику, чтобы перевод читался естественно.
Сборщик 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. Что делает :
Загружает конфиг или читает из ENV.
Загружет книжку FB2.
Если параметр NER = true то проверяет наличие файла имя_книжки.dic , если его нет пытается создать словарь используя нейронную сеть от spacy и тут же дополняет словарь самыми частыми используемыми словами и отдает его на перевод в основную нейросеть. Если нужен автоматический словарь надо что б на компе было VGPU 4Gb и выше иначе создайте имя_книжки.dic руками и можете ничего не добавлять или накидать словарь самостоятельно. Это критично для многотомных книг.
Нейросети используются через API , поэтому можно подключать любые облачные, локальные и какие угодно нейронки поддерживающие OpenAI compatible API.Предлагается использовать две разных, основную мультиязычную и вторую больше заточенную на итоговый язык, для более качественного перевода, это реально работает.
-
Текст разбивается на section который разбивается на куски (чанки) согласно параметру. Чанк дополняется словарем и резюме от прошлого чанка и отдается на перевод, затем на подготовку замечаний к переводу, затем на исправление согласно замечаниям, затем корректура, и подготовка краткого резюме чанка с указаем пола основновных персонажей( ибо между чанками часто пол теряется и корежит при прочтении ого-го)
Процесс такой Потом все это както суммируется и каждая section от fb2 записывается во временный файл, а после завершения перевода в итоговый файл. Метаинформация fb2 не переводится ,как и обложка, я забил. Это прототип.
Что бы все это запустить понадобятся знания python и инсталяция модулей с cuda или без (вручную создайте файл имя_книжки.dic ), установка моделей spacy и драйверов nvidia ну и API которое позволит вам залить туда много-много текста. Как правило количество токенов будет равным трехкратному размеру текста в байтах. Например модуль генерации замечаний по качеству перевода иногда генерирует список замеаний больше чем сам текст, даже с учетом лимитов. Тестировал качество переводов на разных параметрах я с помощью батчей , а перевод нескольких книг запускал так .
В процессе перевода генерируется гигантский 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)
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 работает очень быстро и формулы с картинками на месте, только гуглоперевод отвратный :(
Shado_vi
использовать графовую базу данных.
для одной из вариаций применения https://arxiv.org/html/2507.03311v1.
или предварительно прогнать несколько раз через несколько разных моделей и составить резюме для каждого персонажа, события, места и тп.
искать помощи для создания промтов для перевода у тех кто имел опыт в переводе художественных текстов.
использование адаптеров к моделям под определённую стилистику/жанр произведения.