Skip to content

Перевод английской EPUB-книги на русский

В этом посте я расскажу, как перевести английскую книгу EPUB с помощью локальной LLM (Ollama). Весь процесс выполняется на одной машине.

В качестве примера используется книга Элеанор Прей "Письма из Владивостока".

Замечание. Процесс ресурсоёмкий: перевод книги среднего размера локальной моделью занимает примерно 18–24 часа. Желательно иметь GPU и достаточно RAM для модели Ollama.


Предварительные требования

  • Ollama сервер с установленной моделью gemma4:26b.

Папки будущего проекта

/opt/epub-translate/
├── venv/                 # python venv, pip модули
├── input/                # оригинальный файл .epub
├── work/                 # распакованный файл
├── progress/             # checkpoint.json
├── output/               # переведённый .epub
├── 01_inspect.py         # распаковка epub + статистика сегментов/слов
├── 02_translate.py       # перевод
└── 03_repackage.py       # запаковка EPUB
sudo mkdir -p /opt/epub-translate/{input,work,progress,output}
sudo chown -R "$USER":"$USER" /opt/epub-translate

Установка виртуального окружения Python

python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install beautifulsoup4 lxml ollama

Копирование оригинального файла

Возьмите оригинальный EPUB файл и положите в папку input.

cp "/path/to/Letters from Vladivostock, 1894-1930 -- Eleanor Lord Pray.epub" input/

Распаковка EPUB файла

Этот скрипт распаковывает EPUB файл в папку work и считает статистику.

python 01_inspect.py

01_inspect.py

Перевод XHTML файлов

Этот скрипт переводит основной текст книги. Перевод сохраняется в папку progress.

python 02_translate.py

02_translate.py

После окончания скрипта дальше вам нужно отредактировать XHTML файлы в папке work, проверить их на артефакты и другие неточности.

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

cd /opt/epub-translate
source venv/bin/activate

screen -S xlate
python 02_translate.py

Для отключения от отправки процесс в фон нажать Ctrl-A затем D. Чтобы подключиться к процессу позже screen -d -r xlate.

Чтобы прокрутить вверх находять в процессе нажать Ctrl-A затем Esc. Нажать кнопку PageUp. Затем выйти из режима прокрутки кнопкой Esc.

Чтобы затем завершить процесс:

screen -X -S xlate quit

Запаковка перевода в EPUB

Когда XHTML файлы будут успешно отредактированы можно собрать их обратно в EPUB файл в папке output.

python 03_repackage.py

03_repackage.py

Чтобы проверить получившийся EPUB файл вам потребуется Java

java -version
cd ~/epub-translate 
curl -L -o epubcheck.zip https://github.com/w3c/epubcheck/releases/download/v5.3.0/epubcheck-5.3.0.zip
unzip -q epubcheck.zip
java -jar epubcheck-*/epubcheck.jar output/Letters_from_Vladivostock_RU.epub