本文最后更新于 2026年5月20日。
Word 文档(.docx)和 Excel 一样,本质上也是一个符合 OOXML (Office Open XML) 标准的 ZIP 压缩包。不过在翻译场景下,由于 Word 的文档结构比 Excel 的单元格结构更加“散乱”,两者在处理细节上有显著差异。
1. 结构上的核心差异
在 Excel 中,文本主要集中在 sharedStrings.xml;但在 Word 中,内容分布在 word/document.xml(正文)、word/header1.xml(页眉)、word/footer1.xml(页脚)等多个文件中。
-
Excel 的最小单位是“单元格” (Cell): 结构非常规整。
-
Word 的最小单位是“运行” (Run): 一个段落(Paragraph)由多个 Run 组成。比如“这是翻译”,在 XML 里可能会因为格式不同被拆成三个
<w:r>标签。
2. 两种方案在 Word 上的表现
方案 A:调用库(如 Python-docx 或 Go 的 unipdf/docx)
-
优点: 帮你处理了复杂的
Run逻辑。库会自动识别段落和文本块,你只需要修改paragraph.text或遍历run.text。 -
缺点: 性能开销大。对于超长文档,库的解析速度会变慢。
-
关键点: AI 翻译通常需要上下文。使用库时,建议按段落提取文本,翻译完后再写回,这样能保持语义连贯。
方案 B:按 ZIP 解析 XML
-
优点: 速度极快,适合大批量处理。
-
致命伤(格式断裂): 这是 Word 的大坑。在 XML 源码中,一个单词可能因为你改过其中一个字母的颜色,就被拆成了两个标签:
<w:t>Trans</w:t> <w:t>late</w:t>如果你按 XML 标签翻译,AI 会分别收到 "Trans" 和 "late",翻译结果会一塌糊涂。
-
适用场景: 除非你有一套极其精密的算法来清理和重新合并这些
w:t标签,否则不建议直接解析 XML。
3. Word 翻译的“最优解”路径
考虑到你目前在用 Go 优化工具性能,针对 Word 的建议如下:
-
采用“段落级”提取: 不要按单词或 Run 翻译。利用库(如 Go 的
unioffice或 Python 的python-docx)获取整段文本。 -
保留样式标记(Placeholders): 如果段落中有加粗、超链接,可以先用占位符(如
[#1])替换这些特殊样式的词,把纯文本给 AI,拿到翻译后再还原样式。 -
处理重复: Word 的文本重复率通常低于 Excel,不需要像 Excel 那样过度追求
Unique Strings,但可以针对页眉页脚做去重。
总结建议
-
Excel: 推荐解析 XML 或 Unique Strings 过滤(因为重复内容多,省钱且快)。
-
Word: 推荐调用成熟的库(因为结构复杂,保住格式比省那点性能更重要)。