← 返回
未分类

ppt-cn-to-en

将PPT中的中文内容替换为英文,保留原始格式、图片、布局、表格和图表。适用于需要把已有的中文演示文稿原地转化为英文版本的场景,不重新生成PPT。Trigger 用户要求将PPT翻译为英文、PPT中英文替换、PPT中文转英文等。
将PPT中的中文内容替换为英文,保留原始格式、图片、布局、表格和图表。适用于需要把已有的中文演示文稿原地转化为英文版本的场景,不重新生成PPT。Trigger 用户要求将PPT翻译为英文、PPT中英文替换、PPT中文转英文等。
user_b06c57a1
未分类 community v2.0.0 2 版本 93333.3 Key: 无需
★ 0
Stars
📥 14
下载
💾 0
安装
2
版本
#latest

概述

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. 常见图表类型

| 图表类型 | 方法 | 注意事项 |

|---------|------|---------|

| 柱状图 | 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)。务必使用标准癌症缩写,参考"癌症名称翻译规范"表格。

版本历史

共 2 个版本

  • v2.0.0 可以将图片中的中文转化为英文了 当前
    2026-06-10 20:47 安全 安全
  • v1.0.0 Initial release
    2026-06-09 17:28 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

developer-tools

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 666 📥 323,791
security-compliance

Skill Vetter

spclaudehome
AI智能体技能安全预审工具。安装ClawdHub、GitHub等来源技能前,检查风险信号、权限范围及可疑模式。
★ 1,210 📥 266,150
ai-intelligence

self-improving agent

pskoett
捕获经验教训、错误和纠正,以实现持续改进。使用时机:(1)命令或操作意外失败;(2)用户纠正……
★ 4,055 📥 795,902