Стадия перевода: мост к book_translator без модификации стороннего репозитория
This commit is contained in:
@@ -98,6 +98,56 @@ ebook-convert "Название.epub" "Название.azw3"
|
||||
- `.epub` — через Send to Kindle (веб или почта), Amazon конвертирует на своей стороне;
|
||||
- `.azw3` — по USB прямо в `documents/` на устройстве.
|
||||
|
||||
## Перевод (опционально)
|
||||
|
||||
Перевод делает сторонний проект
|
||||
[`vetermanve/book_translator`](https://github.com/vetermanve/book_translator)
|
||||
(DeepSeek или локальная Ollama). **Репозиторий не модифицируется** — он
|
||||
вызывается через свой штатный CLI и форматы файлов. `scripts/translate.py` —
|
||||
мост: раскладывает наш XHTML в его входной JSON, запускает
|
||||
`03_translate_parallel.py --all`, собирает результат обратно.
|
||||
|
||||
Подготовка (один раз):
|
||||
|
||||
```bash
|
||||
git clone https://github.com/vetermanve/book_translator.git ~/Projects/book_translator
|
||||
~/.venvs/pdf2epub/bin/pip install openai python-dotenv # openai нет в их requirements.txt
|
||||
export DEEPSEEK_API_KEY=... # либо .env в рабочем каталоге, либо USE_OLLAMA
|
||||
```
|
||||
|
||||
Сначала проверка, нужен ли перевод вообще (язык, объём; ничего не тратит):
|
||||
|
||||
```bash
|
||||
~/.venvs/pdf2epub/bin/python scripts/translate.py out/book.html out/book.ru.html \
|
||||
--repo ~/Projects/book_translator --workdir out/tr --check-only
|
||||
```
|
||||
|
||||
Если книга уже на целевом языке, скрипт откажется переводить (`--force`
|
||||
переопределяет). Сам перевод:
|
||||
|
||||
```bash
|
||||
~/.venvs/pdf2epub/bin/python scripts/translate.py out/book.html out/book.ru.html \
|
||||
--repo ~/Projects/book_translator --workdir out/tr --workers 12
|
||||
```
|
||||
|
||||
Прерванный перевод возобновляется: сторонний скрипт помнит готовые главы.
|
||||
Дальше `out/book.ru.html` упаковывается тем же `ebook-convert` с
|
||||
`--language=ru`.
|
||||
|
||||
Курсив и полужирный переживают внешний переводчик в виде маркеров
|
||||
`⟦i⟧…⟦/i⟧`; на обратном пути баланс маркеров проверяется по каждому абзацу.
|
||||
Картинки, заголовки и порядок блоков вообще не покидают наш скрипт — наружу
|
||||
уходит только текст, сборка идёт по индексам. В отчёте после перевода:
|
||||
«без перевода» — главы, вернувшиеся с другим числом абзацев (оставлен
|
||||
оригинал), «разметка потеряна» — абзацы, где модель испортила маркеры и
|
||||
курсив снят. Оба числа должны быть близки к нулю.
|
||||
|
||||
Самопроверка моста без сети и ключей:
|
||||
|
||||
```bash
|
||||
cd scripts && python3 test_translate.py
|
||||
```
|
||||
|
||||
## Проверка результата
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user