name: document-translator description: 多格式文档保留样式翻译;支持Word/Excel/PPT/PDF全文翻译,翻译后保持原始排版、字体、字号;触发于用户上传文档并要求翻译为指定语言 dependency: python: - python-docx==1.1.0 - openpyxl==3.1.2 - python-pptx==0.6.23 - pdfplumber==0.10.3 - lxml==5.1.0
将用户上传的 Word/Excel/PPT/PDF 文档翻译为指定语言,同时完整保留原始格式(字体、字号、颜色、样式)。
根据文件扩展名选择对应脚本:
| 格式 | 脚本 | 说明 |
|---|---|---|
| .docx | scripts/docx_translator.py | 完整保留格式 |
| .xlsx | scripts/xlsx_translator.py | 完整保留格式 |
| .pptx | scripts/pptx_translator.py | 完整保留格式 |
| scripts/pdf_translator.py | 格式可能损失,建议优先用原始格式 |
调用脚本 --mode extract 提取文档中的所有可翻译文本:
python scripts/docx_translator.py --mode extract --input ./your-document.docx
脚本输出 JSON 格式的文本提取结果,包含:
- paragraphs: 所有段落和sdt元素文本(按文档顺序)
- tables: 表格单元格文本(按行列索引)
注意: - Word文档中的sdt(结构化文档标签)元素会被正确提取 - 规范性引用、标准格式文本等都在sdt中,都能被提取
读取 references/terminology.md 获取术语保护规则,然后执行翻译:
user_id、api_key)保持原样调用脚本 --mode replace 将翻译结果写回文档:
python scripts/docx_translator.py --mode replace --input ./your-document.docx --output ./translated-document.docx --translations ./translations.json
translations.json 格式:
{
"paragraphs": [
{"element_index": 0, "type": "p", "text": "原文", "translated": "译文"},
{"element_index": 1, "type": "sdt", "text": "原文", "translated": "译文"}
],
"tables": [
{"element_index": 2, "rows": [["A1", "B1"], ["A2", "B2"]]}
]
}
注意:
- element_index 必须与提取结果一致
- type 可选(p/sdt),用于区分段落和结构化标签
- translated 字段为翻译后的文本
technical-doc.docx,要求翻译为英文# 翻译后回填(假设翻译结果在 translations.json) python scripts/docx_translator.py --mode replace --input ./technical-doc.docx --output ./technical-doc-en.docx --translations ./translations.json ``` - 关键要点: - sdt元素(封面标题、规范性引用等)会被自动处理 - 术语表中的专业词汇不会被翻译
data.xlsx,要求翻译为日文presentation.pptx,要求翻译为中文user_id、getUserInfo() 保持原样这个Skill质量中等偏上,能够较好地完成Word、Excel、PPT等常见文档的翻译工作,翻译后基本能保留原始排版和样式。优点是支持多种格式、有术语保护机制、操作流程清晰。不足之处是PDF翻译效果较差,原始格式容易丢失;部分功能实现较为基础,复杂文档可能处理不够理想。如果主要是翻译Office文档(Word/Excel/PPT),这是一个可用的选择;但如果需要高质量的PDF翻译,可能需要考虑其他方案。