开篇:一次意外的"技痒"
12月26日,本来是我休假的日子。
下午开着大鼠标去公司充电,顺便和同事闲聊。聊着聊着,话题转到了我最近在Hackathon上开发的Master-Translator项目——一个专门用于长文档翻译的MCP Server。
"我老公那边有本书需要翻译,"同事突然说,"他是书的作者之一,出版社一直催着要英文版,但考虑到成本和复杂度,迟迟没动。"
我眼睛一亮:"什么书?"
"《AV1视频编解码标准:原理与算法实现》,320多页,全是技术内容,公式、表格、架构图一大堆。"
巧了。我刚刚重构升级了Master-Translator,正愁没有硬核场景测试。这不就是最好的试金石吗?
"发我看看?"
当天晚上,我拿到了PDF。凌晨一点,大多数人已经进入梦乡,而我盯着屏幕上这本320页的技术书籍,技痒难耐。
一个疯狂的想法冒了出来:能不能用Master-Translator,在一个通宵内完成整本书的中译英?
答案是:可以。但过程远比想象中曲折精彩。
Part 1: 战前准备 - PDF解析的艰难抉择
从PDF到Markdown
拿到手的是一个PDF文件。第一个问题就来了:如何高质量地将PDF转换为可编辑的Markdown?
我测试了多种方案,最终选择了 MinerU——一个开源的高质量PDF解析工具。
为什么选择 MinerU?
| 工具 | 优点 | 缺点 |
|---|---|---|
| Marker | 开源免费,公式识别好 | 表格处理一般 |
| Mathpix | 公式识别极佳 | 收费,有配额限制 |
| Doc2X | 综合效果好 | 需要API Key |
| MinerU ✅ | 开源、表格/公式/图片都很好 | 需要本地部署 |
MinerU 是由 OpenDataLab 开源的 PDF 解析工具,对技术文档的支持非常好——公式、表格、图片都能高质量提取。解析后的Markdown文件巨大——812KB,8122行,包含:
- 📖 11个完整章节
- 🖼️ 240张技术图片
- 📊 85个HTML表格(带单元格合并)
- 🔢 数百个LaTeX数学公式
- 📚 48条参考文献
这不是一个普通的文档翻译任务,这是一场技术马拉松。
为什么不能用Google翻译 / DeepL / ChatGPT?
在动手之前,我也考虑过现成的工具。但很快意识到它们无法胜任:
| 工具 | 核心问题 |
|---|---|
| Google Translate | PDF翻译会破坏所有格式——85张表格会变成乱码,240张图片位置丢失 |
| DeepL | 免费版5MB限制(本书PDF 8.2MB直接超限),Pro版20MB限制,更致命的是无法维护术语一致性("帧内预测"在不同段落可能翻译不同) |
| ChatGPT | 长文档的"道德风险"——它会自作主张地总结而非忠实翻译,44万字需要150+次对话 |
这些工具都是为短文本设计的。面对320页的技术书籍,它们要么格式崩溃,要么上下文断裂,要么术语漂移。
这正是我开发 Master-Translator 的初衷:为长文档翻译而生。
Part 2: 凌晨的翻译之旅
Master-Translator-MCP-Server登场
凌晨1点30分,我启动了自研的Master-Translator-MCP-Server。这是一个专门为长文档翻译设计的MCP工具集,核心特性包括:
- 智能分块:基于章节边界的语义分割
- 术语一致性:跨块术语表维护
- 上下文编织:块间上下文传递
- 增量翻译:支持断点续传
# 启动翻译任务
mcp_master-transl_translate_document(
document_path="/path/to/full_chinese.md",
target_language="english",
model="deepseek-v3"
)
凌晨3点:第一次危机
翻译进行到约60%时,我发现了一个问题——Token消耗超出预期。
320页的技术书籍,包含大量专业术语和公式,每个分块都需要:
- 输入:原文 + 上下文 + 术语表
- 输出:完整翻译
我快速切换到了更经济的模型配置,继续战斗。
凌晨5点:曙光初现
翻译主体完成。但还不能睡——我需要做质量验证。
快速扫描发现几个问题:
- 一些图片引用路径有typo
- 部分公式的LaTeX格式需要调整
- 整体结构需要复核
记录下这些问题后,我终于在6点多躺下,眯了一会儿。
Part 3: 起床后的惊喜与挑战
图片引用差异排查
起床后的第一件事,是检查翻译质量。我写了一个脚本来统计中英文版本的差异:
# 中文版图片引用
grep -o '!\[.*\](images/[^)]*\.png)' full_chinese.md | wc -l
# 结果: 240
# 英文版图片引用
grep -o '!\[.*\](images/[^)]*\.png)' full_english.md | wc -l
# 结果: 238
少了2张图片!
失踪的第10.2节
经过仔细排查,我发现了问题所在——整个10.2节(电影颗粒模型估计)在翻译过程中丢失了!
这一节包含:
- 约180行内容
- 17,897个字符
- 3个子章节(10.2.1、10.2.2、10.2.3)
- 2张关键图片
原因分析:这一节恰好位于分块边界处,在某次处理中被遗漏。
补译修复
发现问题后,我立即使用Claude完成了这一节的补译:
# 10.2 Film Grain Model Estimation
The film grain algorithm in AV1 codec includes two parts:
the encoder-side film grain model estimation and the
decoder-side film grain synthesis...
## 10.2.1 Image Content Analysis
...
## 10.2.2 Image Denoising
...
## 10.2.3 Piecewise Linear Function Estimation
...
修复后再次验证:240/240 图片引用完全匹配 ✅
Part 4: Word导出的意外挑战
翻译完成了,但故事还没结束。我需要将Markdown导出为Word文档,供进一步编辑和排版。
第一次尝试:Typora导出
用Typora打开Markdown,直接导出Word——失败。
LaTeX公式解析错误,部分公式因为源PDF的OCR问题存在格式缺陷。
第二次尝试:MCP导出工具
使用mcp_master-transl_export_to_word——部分成功。
生成了267KB的文档,但只有纯文本,图片、表格、公式全部丢失。原来这个工具使用的是基础的python-docx,不支持富格式。
第三次尝试:Pandoc直接转换
pandoc full_english.md -o full_english.docx --embed-resources --standalone
结果:图片和公式正常,但85个HTML表格全部变成纯文本!
问题根源:源文件中的HTML表格是单行压缩格式,并且使用了colspan合并单元格,Pandoc无法正确解析。
最终方案:Markdown → HTML → Word
经过反复尝试,我找到了完美的解决方案:
# 步骤1: Markdown → HTML(嵌入所有资源)
pandoc full_english.md -o full_english.html \
--embed-resources --standalone --mathjax
# 步骤2: HTML → Word
pandoc full_english.html -o full_english_from_html.docx
成功! 最终生成了8.1MB的完整Word文档:
- ✅ 240张图片完整嵌入
- ✅ 85个表格正确渲染(包括合并单元格)
- ✅ 数学公式通过MathJax完美呈现
Part 5: 最终成果
翻译统计
| 指标 | 数值 |
|---|---|
| 原书页数 | 320页 |
| 中文原文 | 44万字符 |
| 英文译文 | 13.5万词 / 93万字节 |
| Markdown行数 | 8,122行 |
| 章节数 | 11章 |
| 图片数 | 240张 |
| 表格数 | 85个 |
| 公式数 | 数百个 |
| 参考文献 | 48条 |
时间线
| 时间 | 工作内容 |
|---|---|
| 凌晨 1:00 | 开始PDF解析和预处理 |
| 凌晨 1:30 | 启动Master-Translator翻译 |
| 凌晨 3:00 | 处理Token消耗问题 |
| 凌晨 5:00 | 翻译主体完成,初步验证 |
| 凌晨 6:00+ | 记录问题,小睡休息 |
| 上午 | 起床,排查图片差异 |
| 上午 | 发现并补译10.2节 |
| 下午 | 解决Word导出问题 |
| 下午 1:10 | 项目完成 🎉 |
技术反思
这次经历教会我什么?
1. 边界处理的重要性
长文档分块翻译时,块边界处最容易出问题。10.2节的丢失就是一个典型案例。未来需要加强边界检测和完整性验证。
2. 格式转换的复杂性
Markdown → Word 看似简单,实际上涉及:
- HTML表格解析
- LaTeX公式渲染
- 图片嵌入
- 合并单元格处理
最终的"两跳转换"方案(MD→HTML→DOCX)是一个有价值的经验。
3. AI工具的边界
即使是最强大的AI翻译工具,也需要人工复核。这次发现的问题——丢失章节、图片引用错误、公式格式问题——都是AI难以自我发现的。
Master-Translator的下一步
基于这次实战,我计划为Master-Translator添加以下功能:
- 完整性校验:自动比对源文档和译文的结构
- 图片引用审计:自动检测缺失或错误的图片引用
- 增强型Word导出:内置两跳转换方案
- 边界重叠检测:在分块时自动检测并处理边界内容
彩蛋:来自作者的反馈
下午,我把翻译样稿(前言 + 第一章 + 第三章)发给了同事。
几分钟后,微信消息开始刷屏:
同事:"这么快[惊讶][惊讶][惊讶]"
同事:"辛苦了 辛苦了"
同事:"太牛了[强][强][强][强]"
同事:"果然技术大佬"
同事:"我老公说效果很赞[强][强][强][强]"
那一刻,通宵的疲惫一扫而空。
"效果很赞"——这四个字,来自书的作者本人,是对这次翻译最好的认可。
也许,这不只是一次技术验证,而是一个新故事的开始。
结语:深夜的魔力
回顾这个通宵,从凌晨一点的疯狂想法,到下午一点的最终完成——12个小时,320页,44万中文字符翻译为13.5万英文词。
这不仅仅是一次翻译任务,更是一次AI能力边界的探索。
在AI时代,我们能做的事情边界在不断扩展。一个人,一个通宵,一套自研工具,就能完成以前需要专业团队数周才能完成的工作。
但同时,这也提醒我:AI是放大器,不是替代者。真正的价值在于:
- 理解问题的能力
- 设计解决方案的能力
- 发现和修复问题的能力
- 持续优化工具的能力
凌晨的咖啡已经凉了,但完成一件Cool事的满足感,比任何咖啡因都提神。
本文使用的工具:
- MinerU - 高质量PDF解析工具
- Master-Translator-MCP-Server - 长文档翻译MCP工具
- Pandoc - 文档格式转换
- Claude - AI编程助手
如果你对AI翻译或MCP开发感兴趣,欢迎在评论区交流!
