[分享创造] 做了个基于 LLM 的小说 EPUB 翻译工具,效果能打过市面上大部分机器翻译

[分享创造] 做了个基于 LLM 的小说 EPUB 翻译工具,效果能打过市面上大部分机器翻译
[分享创造] 做了个基于 LLM 的小说 EPUB 翻译工具,效果能打过市面上大部分机器翻译

最近在看一套日文轻小说,找不到中文版,试了一圈市面上的方案:

  • 沉浸式翻译逐段翻,角色名字一会儿一变,前后完全不统一
  • 直接把一章丢给 AI ,上下文一长就开始漂移,设定记不住
  • 传统机翻就不说了,纸鹤给你翻成起重机

问题的根源在于:长篇小说的翻译本质上是一个有状态的任务,但大多数工具把它当成一个无状态的文本转换在处理。

所以就自己写了一个:ePubTsuyaku


核心设计

整体是一条四阶段流水线,模拟人类读书→翻译的过程:

0. Reference Phase (可选) 如果有系列前作的精翻版,可以先喂进去。程序会提取惯用译名、人名对照和文风特征,作为后续阶段的软参考。翻系列作品的话这个功能很有用。

1. Summary Phase 按 EPUB spine 顺序串行读取每一章,让 LLM 生成章节摘要和上下文状态(人物关系、当前设定等)。这一步是串行的,目的是建立稳定的全书上下文链。

2. Translation Phase 每章切成多个批次,在冻结的章节上下文上并发翻译。关键点是"冻结"——翻译过程中不更新上下文,避免批次间互相污染。

3. Review Phase 对每个批次做结构化校对,LLM 对照原文打分。低于阈值的批次会带着校对反馈自动重翻,最多重试 N 次。

4. Rebuild 把译文回写进原始 EPUB 的 XHTML 结构,保留目录、资源、大部分元数据,生成新书。不是把原书拆了重建,是在原结构上做替换。


工程上的一些细节

断点续跑:进度写进 progress.json,任务中断后直接续,不用从头跑。

Provider 支持:兼容任意 OpenAI-compatible 接口。三个阶段(摘要/翻译/校对)可以分别指定不同模型,比如摘要用便宜的小模型,翻译用效果好的大模型。

Web UI:用 Flask 写了个本地界面,选书、上传、调参、看实时日志、下载结果都在一个页面里。不想敲命令行的话直接用这个。

Web UI 界面


翻译质量

用《玩乐关系》第三卷做了个横向对比测试,三个译本:本项目( DeepSeek-v4-flash )、沉浸式翻译( Qwen3.6-plus 逐段)、谷歌机翻。

评测用的是配套写的另一个开源工具 translation-quality-evaluator,跑 LLM judge 对准确性、术语一致性、流畅度等六个维度打分。

结果大概是:本项目综合分 57.4 ,LLM 逐段 35.1 ,机翻 15.2 。术语一致性这项差距最明显,这也是流水线设计的主要目标。

翻译结果对比:

翻译文本对比

LLM judge 的翻译分数:

量化评测数据

详细的评测数据和文本对比在这篇文章里: https://www.tritium.work/2026/05/24/ePubTsuyaku:基于 LLM 的长篇 EPUB 电子书翻译工具/


适合的场景

  • 翻轻小说、网文、长篇小说这类上下文强依赖的 EPUB
  • 系列作品,希望继承前作译名和语气

项目地址

GitHub: https://github.com/Tritium0041/ePubTsuyaku

官网: https://epub.tsuyaku.cyou/

MIT 协议,Python 3.9+,依赖用 uv 或 pip 装都行。欢迎试用,有问题或者想法直接开 Issue 。

来源: v2ex查看原文