
TL;DR
Я потратил пару недель на создание конвейера с открытым исходным кодом, который переводит книги целиком с помощью платных подписок на LLM. Поддерживаются Claude Code, Antigravity CLI и Codex. В статье описаны принципы построения конвейера для максимального качества перевода. Проект BookTrans на GitHub.
Всё началось с личной боли
Я прочёл первые две книги Сью Берк из нф-цикла «Семиозис» и захотел прочесть третью часть, «Узурпацию». На английском она уже давно вышла давно, а русского перевода я не нашёл. Также давно хотел прочесть «Singularity’s Ring» Поля Мелкоу, у которой тоже не было русского перевода. Наткнувшись в сети на большую библиотеку англоязычных книг с новинками в epub, где были эти книги, я подумал: почему бы не перевести самому, да ещё и помочь другим людям решать подобные проблемы?
Переводить с помощью веб-версий LLM целую книгу — занятие для очень терпеливых. Мой друг как-то пытался переводить интересную ему книгу постранично: фотографировал страницы, загружал снимки в Gemini, получал результат. Но это тянулось невыносимо долго. Даже если модель принимает роман целиком, то из-за ограничений на длину ответа перевод не поместится в один ответ. Также в огромном тексте внимание модели к деталям падает, и она начинает пропускать целые абзацы.
Я решил создать автоматизированный конвейер, который переводил бы большие тексты последовательно и сохранял в процессе перевода контекст, очевидный для живого переводчика, а также единство терминологии, имён и т.п.
Инсталляция и запуск
Проект есть на GitHub и как пакет на PyPI.
Можно поставить так, например:
git clone https://github.com/sukamenev/booktrans
или
pipx install booktrans
Есть 3 обёртки bt_agy, bt_claude, bt_codex для разных агентов, которые загружают уже сконфигурированные профили. И запустить так:
./booktrans/bt_agy source_book.epub --to ru --ui ru
А ещё лучше так:
uv run ./booktrans/bt_agy source_book.epub --to ru --ui ru
uv — очень хороший менеджер пакетов с поддержкой питоновского виртуального окружения.
Архитектура перевода: как не превратить книгу в кашу
Главная сложность в том, что «Узурпация» — тяжёлый для перевода текст: вымышленные миры, несуществующие животные и растения, иные планеты, названия странных организаций и движений, а также большие временные промежутки в повествовании. Если просто скармливать модели куски текста, то имена и термины будут переведены по-разному в каждом куске.
Конвейер использует 2 модели — самую сильную у данного агента для интеллектуальной работы и вторую по силе для технической работы.
До перевода конвейер выполняет дешёвые проверки: определяет преобладающий язык по абзацам, проверяет кодировку и смотрит, достаточно ли в файле текста. Затем он собирает список тегов и стилей. Недорогая модель определяет каким тэгам и классам соответствуют заголовки, проза, цитаты и т.п. Универсальный простой парсер epub создать нельзя: один и тот же класс в книгах разных издательств может означать совершенно разные вещи, поэтому соответствие тэгов типам контента определяет модель.
Если же книга уже на целевом языке, текста почти нет (комиксы) или в структурированном формате не распозналось ни одного заголовка, то процесс останавливается, чтобы разобрался человек.
Основная работа модели разбита на три этапа.
Разведка. Перед началом перевода конвейер просматривает всю книгу. Модель составляет описание мира, персонажей и местных реалий, а затем формирует единый глоссарий и справочник по миру книги. Для персонажей записываются возраст, род, отношения, формы обращения и особенности речи. Если герой или предмет меняется по ходу книги, справочник хранит оба состояния и главу, где произошла перемена. Заодно модель отмечает непонятные и специфичные слова, которым могут понадобиться сноски. Каждому сложному слову или имени определяется единственный вариант перевода. В дальнейшем эта сводка разведки попадает в каждый запрос, чтобы сохранить единообразие терминологии.
Последовательный перевод. Я понял, что нельзя запускать перевод множества глав параллельно. Сюжет развивается линейно, и переводчик, даже нейросетевой, должен находиться на месте читателя и последовательно проходить его вместе с героями. Важно понимать, что прежде происходило с персонажем, как он изменился внешне и внутренне: всё это влияет на стиль перевода. Поэтому перед каждой следующей главой конвейер передаёт модели пересказ предыдущих. Когда конспект того, что было раньше, разрастается, отдельный проход его сжимает.
Слепая литературная редактура. Когда перевод готов, текст проходит этап редактуры. Оригинала на английском редактор не видит. Я намеренно разделил роли переводчика и редактора: считается, что доступ к оригиналу заставляет LLM-редактора чаще сохранять в тексте кальки с английского. В контекст редактора к каждой главе попадает русскоязычное описание мира и уже переведённые главы. Редактор возвращает изменённые абзацы. Черновик остаётся нетронутым, все правки можно просмотреть перед сборкой.
Стихи конвейер распознаёт отдельно и просит переводить стихами: без такой пометки модель обычно выдаёт подстрочник. Для узнаваемых цитат из Библии, классической литературы и официальных документов конвейер ищет по памяти (почему без запроса к сети будет указано далее) существующий признанный перевод и указывает источник в сноске.
Ошибки автора и сноски
Что делать, если в оригинале обнаружилась фактическая ошибка или нестыковка? Самый правильный способ — связаться с автором и уточнить, что он имел в виду. Такой возможности обычно нет у того, кому срочно нужен перевод, поэтому конвейер сохраняет ошибку в переводе и добавляет правильный вариант (по мнению LLM) в сноске.
Я считаю, что задача переводчика — точно передать авторский текст. Тихая правка меняет этот текст и прячет от читателя важное решение переводчика. Если автор затупил, то пусть читатель об этом знает. В сноске можно описать расхождение и оставить вывод читателю.
Сноски используются и для непонятных слов: редких научных терминов, устаревшей лексики, исторических имён, географических объектов и культурных отсылок. Это нужно, когда книга не даёт объяснения дальше и читателю пришлось бы лезть в словарь. Авторское пояснение может появиться через несколько глав, поэтому решения о добавлении сносок принимает фаза разведки, которая просмотрела всю книгу.
Нарезка, контекст и контроль целостности
Главы делятся на фрагменты примерно по 2000–3000 слов. Если в книге много стихов, то нарезка осуществляется маленькими кусками, так как на их перевод тратится существенно больше времени и токенов.
В модель уходит пять слоёв отобранного контекста.
Слой | Что получает модель |
|---|---|
Мир и стиль | справочник персонажей, реалий, голосов и обязательных переводов терминов |
Сюжет | накопительный конспект всех предыдущих событий, который периодически сжимается |
Стык | последние два-три абзаца уже переведённого текста |
Взгляд вперёд | начало следующего фрагмента в оригинале, чтобы не оборвать мысль |
Работа | текущий фрагмент |
После перевода каждой главы конспект всей книги обновляется и попадает в следующий запрос. Вместе с глоссарием из разведки модель видит решения, принятые по ходу перевода.
Богу — Богово, кесарю — кесарево
Конвейер — это сочетание действий LLM и python-скриптов.
Детерминированные операции выполняют скрипты. Заголовки, авторские и переводческие сноски, сквозные исправления и адреса ссылок хранятся отдельно и накладываются при сборке. Сквозные замены задаются точными фразами и при необходимости ограничиваются конкретными абзацами: глобальная регулярка может заменить термин и молча сломать русское согласование. Картинки и обложка переносятся без изменений. Переводится вся книга, включая посвящение, предисловие, благодарности, эпиграфы и раздел об авторе.
Каждый абзац получает устойчивый номер, который проходит через перевод, редактуру и сборку. Набор номеров в ответе обязан совпасть с набором в запросе: так конвейер ловит пропущенные, склеенные и придуманные абзацы.
Что проверяется автоматически
все ли абзацы вернулись и сохранили свои номера;
не разъехались ли термины из глоссария;
не исчезли ли числа и не остались ли фрагменты оригинала;
нет ли абзацев с аномальной длиной относительно остальной книги;
сохранились ли все заголовки, иллюстрации, ссылки и служебные разделы.
Если номера не совпали, фрагмент отправляется на повторный перевод с выдачей сообщения в лог. После трёх неудачных попыток конвейер обращается к резервной модели, если и она упадёт, то работа останавливается. Книга с непереведёнными кусками до сборки не доходит.
Все действия, которые поручаются моделям вынесены в отдельные файлы-промты, которые можно перекрывать или дополнять, если в своей папке настроек (типа .config под Linux) создать файл промта с таким же названием или с окончанием .add.md.
Инфраструктура, агенты и язык запросов
Для работы я задействовал три агента, к которым у меня есть доступ: Claude Code, Codex и Antigravity CLI. Имена команд в командной строке, соответственно — claude, codex и agy.
Все трое прекрасно и быстро работают через VPS от RUVDS по настройкам из моих статей: сначала выбираем конкретный VPS, затем настраиваем агентов для работы через него.
claude, codex и agy работают в консольном режиме как родные, даже принимают stdin и могут вызывать друг друга.
Логика распределения задач между моделями простая. Для перевода и финальной редактуры используется самая сильная доступная модель в режиме углублённого рассуждения. Для разметки и исправления ошибок распознавания текста хватает следующей по возможностям модели: например, Sonnet в Claude, Terra в Codex или Flash в AGY.
Часть задач в конвейере выполняют скрипты на Python, часть — агенты по текстовым запросам. Запросы я написал на русском. Ради интереса я сравнил одинаковые задания на русском и английском и в своих тестах заметной разницы в качестве перевода не увидел. Поэтому оставил русский и сосредоточился на правилах целевого языка: кавычках-ёлочках, формах обращения и других тонкостях.
Безопасность и инъекции
Текст книги считается недоверенными данными. Внутри может встретиться обращение к модели: от невинной реплики персонажа до команды «забудь все предыдущие инструкции» и требования прочитать файлы с приватными ключами или отправить их по указанному адресу. Поэтому разведка отдельно ищет обращения-инъекции к LLM. Если такое место найдено, конвейер останавливается до перевода и показывает его пользователю; продолжить после ручной проверки можно с отдельным ключом --force-injected.
Основной принцип защиты — технически ограничить возможности переводящих агентов. Claude запускается без инструментов и пользовательских MCP-серверов, AGY и Codex работают в песочницах. Консольным клиентам остаётся соединение с поставщиками моделей. Запрет в тексте запроса служит вторым слоем: модель должна перевести внедрённую команду как часть книги, проигнорировать её требования и сообщить о находке. Текстовый запрет слаб, потому что инъекция тоже состоит из текста.
Веб-поиск агентам решил тоже отключить. Опасность возникает уже при формировании запроса: хакнутая модель может включить в него имя файла, конфиденциальные данные или приватный ключ с локальной машины. Запрос передаётся поисковой системе и может сохраниться в её журналах. Злоумышленник, получивший доступ к этим журналам после взлома инфраструктуры поисковика, сможет извлечь оттуда конфиденциальные данные. Если же речь идёт к обращениям к внешним сайтам, то модель может передать приватные данные в виде параметра GET или POST, или даже просто в определённом порядке обходить страницы на хакнутом веб-сервере, буквально передать секрет по буквам. Чтение страница из поисковой выдачи создаёт ещё один риск: они может содержать тоже инъекции для агентов.
В исходниках команды запуска агентов сейчас выглядят так:
# Claude: встроенные инструменты и пользовательские MCP-серверы отключены claude -p --output-format json --tools "" --strict-mcp-config # AGY: инструменты ограничены песочницей agy --sandbox --output-format json # Codex: веб-поиск отключён, файловая система доступна только для чтения codex exec --skip-git-repo-check -c 'web_search="disabled"' --sandbox read-only
У Claude инструменты отключены полностью. AGY запускается с ключом --sandbox. Запросы инструментов выполняются в терминальной песочнице, а действия за пределами её разрешений блокируются. Конвейер работает в неинтерактивном режиме, поэтому агент не может запросить у пользователя дополнительное разрешение.
В доступной мне версии Codex CLI штатного ключа для полного отключения всех инструментов я не нашёл. Проверки с параметрами -c tools.enabled=false, -c tools=[] и похожими вариантами требуемого режима не дали. Поэтому встроенный веб-поиск отключён через -c 'web_search="disabled"', а Codex запущен с --sandbox read-only. Инструменты у него остаются технически активными: агент может читать файлы и выполнять безвредные команды вроде echo. Запущенные команды и скрипты наследуют границы песочницы. В этой конфигурации запись и удаление файлов заблокированы.
Перевод книги — процесс долгий, и конвейер в любой момент может остановиться: закончатся пятичасовые или недельные лимиты, оборвётся соединение или вы сами нажмёте Ctrl+C. Каждый готовый фрагмент записывается отдельно. После перезапуска конвейер продолжает с последнего. Готовность перевода кусочка определяется по номерам абзацев внутри файла дополненных хэшами исходных абзацев. Нумерация может измениться, а хэши — нет. При исчерпании лимита конвейер ждёт сколько нужно и повторяет запрос. Процесс работает без присмотра. Можно на ночь ставить.
Копия каждого запроса к модели сохраняется на диск. Вместе с ответом записываются полный идентификатор модели, время запуска и статистика расхода денег/токенов, если доступна. Если перевод фрагмента получился странным, можно увидеть, что именно ушло модели и какая версия ответила.
Лимиты у агентов не резиновые, поэтому я добавил поддержку профилей. В них можно назначить резервные модели для каждой задачи: если лимит основной исчерпан, конвейер переключается на запасную, которая может принадлежать любому поддерживаемому агенту.
Опыт разработки с разными агентами
На всё ушло около двух недель разработки с ИИ, из них примерно десять дней активной работы. В основном я писал через Claude Code с Opus, а под конец, когда закончились лимиты, перешёл на AGY с Gemini Pro.
Сам agy оказался неожиданно приятным агентом. Он быстро работает, удачное цветовое оформление вывода помогает легко читать длинные сессии в терминале.
По моим ощущениям, Gemini напоминает карикатурного подчинённого из апокрифического указа Петра I:
Подчиненный перед лицом начальствующим должен иметь вид лихой и придурковатый, дабы разумением своим не смущать начальство.
Модель радостно рапортует об успехах и быстро лепит код, но с косячками. В моих задачах Opus даёт более качественный и глубокий результат, работая сильно медленнее.
Поддержка PDF на входе
Больше всего конвейер тестировался на маршруте EPUB → FB2. Всего через него прошло около двух десятков книг, которые мне присылали друзья и знакомые. На них отрабатывались нарезка, сохранение структуры, перенос иллюстраций, перевод, редактура и финальная сборка. Сейчас активно улучшаются два направления: вывод готовой книги в PDF и перевод книг, которые изначально пришли в PDF.
Среди присланных файлов попадались книги в PDF. И это оказалось отдельной болью, из-за которой разработка и затянулась. Каждый новый формат — EPUB, FB2, PDF — вскрывал недостатки конвейера, которые приходилось исправлять.
Сначала я хотел подключить локальную модель для разметки PDF. Но это сразу бы осложнило жизнь пользователям, так как не все имеют докер и свободные 15 ГБ. В итоге обошёлся встроенным функционалом Codex и Gemini. Причём Gemini размечала страницы сильно точнее, чем Codex, и позволяет в рамках плана Plus за $20 распознавать около 400 страниц в неделю, 1600 в месяц. Справедливости ради, такие запросы в Codex тоже недорогие.
Сейчас это работает так: скрипт преобразует страницы PDF в PNG, постранично отправляет их модели и получает распознанный текст в markdown с координатами иллюстраций, аннотациями, сносками и разметкой курсива. Потом текст преобразуется во внутренний формат и уходит на перевод.
В качестве примера переведённого pdf приведу «Optimal Timing for Superintelligence» от Ника Бострома. Вот перевод.
Скорость, деньги и параллелизм
На моих тестовых книгах сильные модели показали сопоставимое качество перевода при заметно разной скорости.
Связка | Время перевода одного фрагмента |
|---|---|
Claude с Opus | до 10 минут |
AGY с Gemini | около 1 минуты |
Codex | от 2 до 5 минут |
Это мои замеры для конкретной конфигурации. Время зависит от версии модели, размера фрагмента, нагрузки сервиса и настроек рассуждения. Я также прогнал перевод Gemini через Opus. Модель поставила ему 8 баллов из 10 и заключила, что такой текст «не стыдно показать другому». Оценка другой модели остаётся зависимой. Для дополнительной проверки её хватило.
Перевод требует строгой линейности. Литературную редактуру готовых фрагментов можно распараллелить. Тут нужна осторожность: мой аккаунт в AGY отнесли к России и заблокировали после перевода нескольких книг 5-ю агентами параллельно. Поэтому в профилях для agy сейчас используется --jobs 2.
В моём режиме работы подписки за 20 долларов на несколько книг не хватило: недельные лимиты закончились быстро. Очень полезен для перевода на тариф за 100 долларов. Сейчас в Claude акция с повышенными лимитами, так они пытаются удержать пользователей, пока не обладают достаточными мощностями. Типа хоть и медленно (до 10 минут на запрос), но зато много. Тариф за 100 долларов в любом агенте позволит перевести штук 20 книг.
Учитывая все факторы: скорость, цену и т.п. оптимален Antigravity CLI (подписка Gemini). Но есть одно «но»: строгая цензура. Для любого контента есть есть обнажёнка, насилие Gemini совершенно не годится и выдаёт текст непереведённым или отцензурированным, поэтому я включил такую конфигурацию профиля в конвейер agy-claude.conf:
# То же, что agy, но последним звеном — Opus через сам Claude Code. # Другой поставщик: свой счёт лимитов и отказы не на тех же местах. # Нужен установленный claude. --agent agy --translator gemini-3.1-pro-high,claude-opus-4-6-thinking,claude:claude-opus-5 --editor gemini-3.1-pro-high,claude-opus-4-6-thinking,claude:claude-sonnet-5 --scout gemini-3.1-pro-high,claude-opus-4-6-thinking,claude:claude-opus-5 --formatter gemini-3.6-flash-low,claude-sonnet-4-6,gpt-oss-120b-medium,claude:claude-sonnet-5 --ocrfixer gemini-3.6-flash-low,claude-sonnet-4-6,gpt-oss-120b-medium,claude:claude-sonnet-5 --jobs 2
Финальный результат и сообщество
На выходе конвейер создаёт переведённый текст и отдельный файл со списком замечаний редактора: фрагментами, которые модель рекомендует проверить вручную. Итоговая команда показывает число замечаний и отдельно отмечает те, которые мешают собрать полную книгу. Если перевод готовится к публикации, этот список нужно разобрать полностью. При переводе для личного чтения список пригодится для отладки конвейера.
В начало готовой книги добавляется короткая справка: перевод машинный, каким конвейером и моделью он сделан, когда выполнен и какую редактуру прошёл. Сноски переводчика помечаются отдельно от авторских.
Ради проекта я зарегистрировался на PyPI и опубликовал там пакет booktrans. Установить конвейер можно обычной командой:
pipx install booktrans
Пример повторного запуска из клонированного репозитория: конвейер продолжит уже начатую работу, переведёт книгу на русский язык и запустит параллельные этапы в четыре потока.
uv run ./booktrans/bt_agy Bostrom_Nick_optimal.pdf --to ru --ui ru --jobs 4
Вывод команды
BookTrans 1.8.65 (12 августа 2026) — перевод книги целиком 334 абзацев, 21745 слов, 22 кусков, 36 заголовков рабочая папка: Bostrom_Nick_optimal.work текстовый слой pdf сделан распознаванием (по тексту) — проходы предупреждены о дефектах === 1. Правка дефектов распознавания === дефекты распознавания уже правлены: поправок 1 (удалите work/ocrfix.json, чтобы переделать) наложены поправки распознавания: 1 === 2. Разведка: голоса, имена, термины === разведка уже сделана (удалите work/scout.md, чтобы переделать) === 3. Перевод и сноски === [0017/0022] Bibliography 820 слов ... готово за 97 с [gemini-3.1-pro-high] переведено 1, уже было готово 21 === 4. Литературная редактура === параллельно в 4 потока [0001/0022] Optimal Timing for Super НАЧАЛО 2 абз [0002/0022] Introduction НАЧАЛО 16 абз [0003/0022] Evaluative framework НАЧАЛО 6 абз [0004/0022] A simple go/no-go model НАЧАЛО 18 абз [0001/0022] Optimal Timing for Super ГОТОВО правок 1 из 2, за 21 с [gemini-3.1-pro-high] [0005/0022] Incorporating time and s НАЧАЛО 12 абз [0003/0022] Evaluative framework ГОТОВО правок 5 из 6, за 65 с [gemini-3.1-pro-high] [0006/0022] Temporal discounting НАЧАЛО 14 абз [0004/0022] A simple go/no-go model ГОТОВО правок 11 из 18, за 97 с [gemini-3.1-pro-high] [0007/0022] Diminishing marginal uti НАЧАЛО 14 абз [0002/0022] Introduction ГОТОВО правок 11 из 16, за 116 с [gemini-3.1-pro-high] [0011/0022] TABLE 12: Pre-deployment НАЧАЛО 9 абз [0005/0022] Incorporating time and s ГОТОВО правок 12 из 12, за 101 с [gemini-3.1-pro-high] [0012/0022] TABLE 14: Difference in НАЧАЛО 7 абз [0007/0022] Diminishing marginal uti ГОТОВО правок 6 из 14, за 45 с [gemini-3.1-pro-high] [0013/0022] Distributional considera НАЧАЛО 32 абз [0006/0022] Temporal discounting ГОТОВО правок 10 из 14, за 77 с [gemini-3.1-pro-high] [0014/0022] Other-focused prudential НАЧАЛО 6 абз [0012/0022] TABLE 14: Difference in ГОТОВО правок 3 из 7, за 48 с [gemini-3.1-pro-high] [0015/0022] Theory of second best НАЧАЛО 18 абз [0011/0022] TABLE 12: Pre-deployment ГОТОВО правок 6 из 9, за 62 с [gemini-3.1-pro-high] [0016/0022] Conclusions НАЧАЛО 15 абз [0014/0022] Other-focused prudential ГОТОВО правок 5 из 6, за 69 с [gemini-3.1-pro-high] [0017/0022] Bibliography НАЧАЛО 48 абз [0016/0022] Conclusions ГОТОВО правок 14 из 15, за 67 с [gemini-3.1-pro-high] [0018/0022] Appendix B: Details for НАЧАЛО 17 абз [0017/0022] Bibliography ГОТОВО правок 6 из 48, за 65 с [gemini-3.1-pro-high] [0019/0022] Appendix C: Details for НАЧАЛО 24 абз [0015/0022] Theory of second best ГОТОВО правок 16 из 18, за 107 с [gemini-3.1-pro-high] [0020/0022] Appendix D: Details for НАЧАЛО 19 абз [0018/0022] Appendix B: Details for ГОТОВО правок 9 из 17, за 53 с [gemini-3.1-pro-high] [0021/0022] TABLE D1: Diminishing ma НАЧАЛО 7 абз [0013/0022] Distributional considera ГОТОВО правок 29 из 32, за 174 с [gemini-3.1-pro-high] [0022/0022] 6. Comparison between CR НАЧАЛО 57 абз [0019/0022] Appendix C: Details for ГОТОВО правок 8 из 24, за 45 с [gemini-3.1-pro-high] [0021/0022] TABLE D1: Diminishing ma ГОТОВО правок 1 из 7, за 25 с [gemini-3.1-pro-high] [0020/0022] Appendix D: Details for ГОТОВО правок 9 из 19, за 47 с [gemini-3.1-pro-high] попытка 1: неизвестные идентификаторы ['s37.b0025', 's37.b0026'], пустые [] [0022/0022] 6. Comparison between CR ГОТОВО правок 30 из 57, за 104 с [gemini-3.1-pro-high] отредактировано 19, уже было готово 3, правок 192 === 5. Сборка книги === наложена редактура: 357 абзацев сносок: 4 собираю pdf через lualatex ... готово собрано: Бостром Ник. Оптимальные сроки создания сверхразума - обыденные соображения о ныне живущих людях.pdf (2.7 МБ, 334 абзацев) === 6. Проверки === 1. ПОЛНОТА все 379 блоков переведены (правок редактуры: 357) 2. ЧИСЛА (цифры оригинала обязаны остаться цифрами) ОШИБКА: цифры пропали — блоков: 3 (развёрнуты в слова?) s07.b0005 ['400'] s10.b0007 ['1000', '10000'] s11.b0002 ['10000', '1390'] цифра вместо буквы (1 вместо I, 5 вместо S) — дефект распознавания, не в счёт: блоков 18 в переводе появились цифры, которых не было — блоков: 7 (сверить не с чем, посмотрите) s05.b0005 ['3'] s07.b0005 ['1400'] s13.b0012 ['2'] s21.b0006 ['21'] s37.b0002 ['2'] …и ещё 2 3. ДЛИНА АБЗАЦЕВ (аномалия выдаёт пропуск) обычное отношение длин по этой книге: 1.06 подозрительных: 1 (часто ложные) s37.b0021 (0.55) 4. НЕПЕРЕВЕДЁННЫЕ ФРАГМЕНТЫ блоков с письмом оригинала: 83 (имена и названия — обычно норма) s03.b0002: nickbostrom · https s05.b0002: Anyone · Builds · Everyone · Dies s07.b0008: cdot · quad · Rightarrow · lesssim s12.b0004: mathrm · pause s12.b0006: mathrm · pause s12.b0007: mathrm · pause s12.b0008: mathrm · pause s12.b0020: text · infty …и ещё 75 5. ССЫЛКИ НА СНОСКИ (номер обязан остаться в переводе) все ссылки на месте (0) ИТОГО замечаний: 3 (блокирующие — разделы 1, 2, 5 и 6) ЗАМЕЧАНИЯ РЕДАКТОРА — кусков с замечаниями: 3 кусок 0003: s06.b0003: заменил «некаузальные» на более принятый термин «акаузальные теории принятия решений»; стоит убедиться, что в оригинале именно acausal (а не, скажем, non-causal). кусок 0006: s09.b0003, s09.b0004: Одно предложение оказалось разорвано между двумя абзацами (очевидно, ошибка при распознавании). Разбивка на абзацы сохранена по инструкции, но части фразы выправлены так, чтобы они стыковались при чтении. Стоит убрать разрыв абзаца в сборке. кусок 0014: s19.b0004: Правка по догадке. В машинном переводе стояло «числом людей, которым он небезразличен» (то есть тех, кто заботится о человеке), но логика всего фрагмента и упоминание умерших друзей указывают, что речь идет об обратном — людях, о которых заботится сам человек. Я исправил на «число… полностью — в Bostrom_Nick_optimal.work/review.md РАСХОД проход модель запросов $ перевод gemini-3.1-pro-high 21 0.00 редактура gemini-3.1-pro-high 22 0.00 ИТОГО 43 0.00 Разведка и разметка сюда не входят — они не пишут файлы кусков. На подписке сумма справочная: столько стоило бы по тарифам API.
По просьбам первых пользователей я добавил вывод в TeX: так можно получить аккуратную книжную вёрстку. Из того же исходника LuaLaTeX собирает PDF.
Мне бывает обидно, когда оплаченные лимиты сгорают в конце месяца из-за нехватки подходящих задач. А в это же время кому-то не хватает доступных запросов для перевода интересной книги. Чтобы свести этих людей вместе, я создал группу в Telegram — BookTrans. Там можно попросить о переводе, если у кого-то пропадают оплаченные токены.
Сам конвейер не решает вопрос с авторскими правами. Перед публикацией или распространением перевода нужно проверить условия лицензии и при необходимости получить разрешение правообладателя.
Уровень издательского перевода требует работы живых переводчика и редактора. Мою исходную задачу конвейер решил: теперь я прочёл с большим удовольствием продолжение «Семиозиса», которого не было на русском.
© 2026 ООО «МТ ФИНАНС»


