Перевод английской 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
Перевод XHTML файлов
Этот скрипт переводит основной текст книги. Перевод сохраняется в папку progress.
python 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
Чтобы проверить получившийся 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