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. 常見圖表型別

圖表型別 方法 注意事項
柱狀圖 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)
"

小蔥技能7w4.net有更新,你可以訪問看下。

將提取的中文文本翻譯為學術英文。組織為 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