ppt-cn-to-en

👤 user_b06c57a1 📦 v2.0.0 ⭐ 4.4 ⬇️ 318 下载
📄 办公效率 免费

📖 技能介绍


name: ppt-cn-to-en description: 将PPT中的中文内容替换为英文,保留原始格式、图片、布局、表格和图表。适用于需要把已有的中文演示文稿原地转化为英文版本的场景,不重新生成PPT。Trigger 用户要求将PPT翻译为英文、PPT中英文替换、PPT中文转英文等。 agent_created: true


PPT 中文转英文 (In-Place Replacement)

核心目标

对现有 PPTX 文件进行中文→英文转换。有两种模式:

  1. 原位替换模式(默认):仅替换文本框文字,图片/图表原样保留。适用于纯文本 PPT。
  2. 重绘图表面板模式:当 PPT 中包含中文图表(柱状图、Venn 图等,中文在图片内部而非文本框),需要用 Python/matplotlib 重新生成英文版图表并替换原图。

触发判断

在开始替换前,先判断 PPT 中中文的存在形式:

用以下代码检查是否所有中文都在文本框中:

from pptx import Presentation
prs = Presentation('input.pptx')
has_image_text = False
for slide in prs.slides:
    for shape in slide.shapes:
        if shape.shape_type == 13:  # PICTURE
            print(f"Slide has image: {shape.name}")
        if shape.has_text_frame:
            text = shape.text_frame.text.strip()
            if any(ord(ch) in range(0x4e00, 0xa000) for ch in text):
                print(f"Text CN: {text[:50]}")

判断规则: - 中文全部在文本框中 → 使用原位替换模式(Step 1-5) - 中文在图片/图表内部(图表是图片,不是 PPT 原生图表对象)→ 必须重新生成图表,不能原位替换 - 不确定 → 先尝试原位替换,检查输出 PPT 是否有残留中文图片

重绘图表面板模式(图片内中文)

当中文在图片内部时,采用以下流程:

A. 分析图片内容

由于模型不支持直接识别图片内容,需要: 1. 请用户描述图片中的文字内容,或提供图片文字清单 2. 或根据 PPT 上下文(周围文本框、标题)推断图片内容

B. 用 Python/matplotlib 重新生成英文图表

通用模板:

import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.sans-serif'] = ['Arial', 'DejaVu Sans']
matplotlib.rcParams['axes.unicode_minus'] = False

# 柱状图示例
fig, ax = plt.subplots(figsize=(3.2, 2.4))
categories = ['Phase I/II', 'Phase II', 'Phase III', 'Approved']
values = [12, 3, 4, 3]
ax.bar(range(len(categories)), values, color='#4472C4')
ax.set_xticks(range(len(categories)))
ax.set_xticklabels(categories, fontsize=7, rotation=15)
ax.set_title('Clinical Progress', fontsize=10, fontweight='bold', color='white',
             bbox=dict(boxstyle='round,pad=0.3', facecolor='#2F5597'))
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.tight_layout()
fig.savefig('chart_en.png', dpi=200, bbox_inches='tight')

C. 将新图表嵌回 PPT

from pptx import Presentation
from pptx.util import Inches

prs = Presentation('input.pptx')
slide = prs.slides[0]
# 找到目标图片位置,替换
slide.shapes.add_picture('chart_en.png', left, top, width, height)

D. 常见图表类型

本技能来自小葱技能站7w4.net。

图表类型 方法 注意事项
柱状图 ax.bar() 中文分类标签需翻译为英文
Venn 图 Circle() + ax.text() 癌症名称必须用标准英文缩写
折线图 ax.plot() 坐标轴标签翻译
表格 slide.shapes.add_table() 用 python-pptx 重建,不要用图片

E. 癌症名称翻译规范

易错点:器官名 ≠ 癌症名

中文 正确英文 错误英文
肝癌 HCC (Hepatocellular carcinoma) Liver
肾癌 RCC (Renal cell carcinoma) Renal
头颈癌 Head & neck cancer (HNC) Head & neck
胃癌 Gastric cancer Gastric
胰腺癌 Pancreatic cancer (PDAC) Pancreatic
三阴性乳腺癌 TNBC Triple-negative breast cancer

原则:图表中的癌症名称应使用标准学术缩写(HCC, RCC, PDAC, TNBC, NSCLC, CRC 等),而非器官名称。

工作流程(原位替换模式)

Step 1: 获取源文件

如果 PPTX 在 IMA 知识库中: - 调用 ima_api.cjsget_media_info 获取下载 URL 和认证 headers - 用 curl 下载到本地工作目录(约需 2-5 分钟,取决于网络) - 验证:检查文件 magic bytes 或使用 file 命令确认是 PPTX 格式

如果 PPTX 已在本地工作目录,直接使用。

Step 2: 提取中文文本并建立翻译

先提取所有含中文的段落文本:

python -c "
from pptx import Presentation
prs = Presentation('input.pptx')
for i, slide in enumerate(prs.slides):
    for shape in slide.shapes:
        if shape.has_text_frame:
            text = shape.text_frame.text.strip()
            if text and any(ord(ch) in range(0x4e00, 0xa000) for ch in text):
                print(text)
"

将提取的中文文本翻译为学术英文。组织为 TSV 格式(制表符分隔):

原始中文文本\t英文学术翻译

Step 3: 构建翻译词典文件

创建 translations.tsv,每行一条翻译对:

胰腺癌恶性度高、进展快、转移早、预后差 Pancreatic Ductal Adenocarcinoma: High Malignancy, Rapid Progression...
化疗  Chemotherapy

规则: - 长句优先放在前面(脚本按长度降序匹配) - 短词如"治疗"→"Therapy"要谨慎,可能误匹配长句中的部分 - 含特殊引号的文本(如 \u201c\u201d)TSV 可直接包含,无需转义

Step 4: 执行替换

使用 scripts/replace_cn_to_en.py

python scripts/replace_cn_to_en.py input.pptx translations.tsv output.pptx

脚本逻辑: 1. 加载 TSV,按 CN 文本长度降序排列 2. 逐 Slide → Shape → Paragraph 遍历 3. 先精确匹配,再最长子串匹配 4. 替换 Paragraph 第一个 run 的文本,清空其余 run 5. 最后进行短词碎片清理("优于"→"superior to" 等常见残留) 6. 自动验证输出零中文字符残留

Step 5: 验证

脚本自动输出验证结果。如仍有残留,手动检查残留段落,追加 TSV 条目后重新执行。

关键注意事项

  1. python-pptx 必须可用。 安装:pip install python-pptx
  2. 翻译顺序: 长文本的翻译放在 TSV 前面,避免短词先匹配污染长段落
  3. 中文引号处理: PPTX 文本中的 \u201c(左引号)和\u201d(右引号)与 ASCII " 不同,TSV 中应保持一致
  4. Run 结构: PPTX 文本可能分布在多个 Run 中,替换时只修改第一个 Run 并清空其余
  5. 文件大小: 原 PPTX 可能很大(含大量图片,50-100MB),下载需耐心
  6. 图片内中文无法原位替换: 如果中文在图片/图表内部(非文本框),必须重新生成图表。这是本技能最常见的失败原因,务必先判断中文存在形式。

常见问题

Q: 部分短文本被误匹配怎么办? A: 短词(如"治疗""联合")在 Step 4 自动清理阶段统一处理。如果仍有误匹配,将长文本翻译放在 TSV 前面。

Q: 中文引号导致的语法错误? A: TSV 格式天然支持 Unicode,用 Write 工具直接写入 TSV 文件即可包含中文引号。Python 脚本以 encoding='utf-8' 读取。

Q: IMA 下载超时? A: IMA COS 服务器可能带宽较低(~200KB/s),85MB 文件约需 7 分钟。使用 bash 的 curl 并设置足够大的 --max-time

Q: 替换后图片里还有中文? A: 这是预期行为。原位替换只处理文本框,不处理图片内容。需要切换到"重绘图表面板模式",用 Python/matplotlib 重新生成英文图表。

Q: Venn 图/柱状图里的癌症名称翻译不准确? A: 常见错误是把器官名当癌症名(Liver→HCC, Renal→RCC)。务必使用标准癌症缩写,参考"癌症名称翻译规范"表格。

🤖 AI 评测

这是一个功能明确的PPT汉译工具,文档和脚本都比较完善,翻译流程清晰且内置验证机制。主要优点是覆盖面广、考虑了图片内中文等边界情况;不足之处是依赖库单一、错误处理不够充分,敏感词清理可能产生误替换。对于标准格式PPT翻译效果较好,但复杂场景可能需要手动介入。整体质量中上,有改进空间。

📊 多维度评分

适应性4.4
规范性4.2
有效性4.5
可靠性4.2
可信度4.9

📁 包含文件 (2 个)

📄 SKILL.md 8 KB
📄 scripts/replace_cn_to_en.py 5.3 KB