Communitygithub.com

sulipapa/localize-infographic-pdf

保留原始設計的 PDF 在地化工具(例如英→中),專門處理設計匯出的資訊圖表/單頁文宣,可擦除向量/Type3 文字並在原位重繪翻譯內容。

localize-infographic-pdf 是什麼?

這是一個 Claude Code 技能,專為保留設計稿視覺風格的 PDF 在地化需求而設計,特別適用於由設計軟體匯出的資訊圖表、單頁文宣等文件。有別於傳統的文字編輯或生成式 AI 重繪方式,該技能採用「遮蓋與覆蓋」策略:它會將頁面點陣化,偵測隱藏在背後的文字圖層(搜尋用文字層),擦除源文字的向量/Type3 字形,然後在相同座標位置上繪製翻譯後的中文文字。過程中所有圖片、圖表、漸層、圖示和 Logo 等美術元素完全保留,不會被重新生成或改變。 此技能提供一套完整的腳本流程,從分析 PDF 結構、提取文字單元、自動產生翻譯用檔案,到合成最終的在地化 PDF。支援處理淺色/深色文字背景、平面/漸層/照片背景、多行文字方塊自動對齊等常見情境。主要支援 Python 環境,依賴 PyMuPDF、NumPy、OpenCV 和 Pillow 等程式庫,預設使用 Hiragino Sans GB 字型處理中日韓文字。透過三次角色循環(翻譯者→合成器→審查者)模擬專業在地化團隊流程,確保最終輸出與原始設計幾乎相同。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add sulipapa/localize-infographic-pdf

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

在地化資訊圖表 PDF(保留美術設計)

產生一份翻譯版本的設計 PDF,外觀與原始版本完全相同,唯一差別是所有內文文字都換成目標語言。運作方式是將頁面點陣化、擦除源文字,然後將翻譯內容合成回相同座標位置——所有美術元素(照片、圖表、漸層、圖示、Logo)都不會重新生成。

為何採用此流程(請先閱讀)

設計軟體匯出的 PDF 通常將可見文字儲存為向量外框(文字轉曲線)或 Type3 字形——它們並非可編輯文字,也沒有乾淨的方法來「取代文字」。 但這些 PDF 通常也附帶一個隱藏的、可搜尋的文字圖層,其文字框與可見文字像素對齊。該圖層免費提供了精確的位置/大小資訊。 所以:不要嘗試編輯文字,也不要使用生成式影像模型來「重繪」背景——那樣會改變美術元素且無法做到像素忠實。相反地,採用遮蓋與覆蓋:擦除每個源文字的字形序列,並在相同位置重繪翻譯內容。背景保持位元組忠實。 更多詳細原理與失敗模式請參閱 references/pipeline.md。

工作流程(按順序從技能的 scripts/ 執行腳本)

選擇一個工作目錄(預設 loc_work)。所有腳本都接受 SOURCE.pdf [OUTDIR] [PAGE] 參數。

  1. 分析 — 01_analyze.py SOURCE.pdf OUTDIR 確認文字如何儲存、列出內嵌圖片、渲染頁面。查看渲染結果,注意任何嵌入在圖表/Logo/照片影像中的文字(它們不會出現在文字圖層中,必須作為 manual_labels 處理)。

  2. 提取 — 02_extract.py SOURCE.pdf OUTDIR (環境變數 LOC_KEEP='brandA|brandB' 可保留更多源語言文字)。產生 units.json(每個實體文字行一個條目,包含邊界框/顏色/大小)和 translator_source.txt(一個可讀的、帶 ID 標記的承載檔案)以及 half_*.png。

  3. 翻譯 — 派遣一個翻譯代理。將 translator_source.txt 和 half_0/1.png 交給它。它必須寫入 OUTDIR/translation.json = {"<id>":"译文", ...} 涵蓋每個 ID(對於 KEEP-AS-IS 的 ID 保持不變)。使用 references/agent-prompts.md 中的提示。

  4. 覆蓋(僅在需要時) — 寫入 OUTDIR/overrides.json,用於自動引擎無法看到的文件特定部分:嵌入圖像中的文字(manual_labels)、位於細描邊控制項(如藥丸形狀/徽章)內部的文字(solid_fill_labels)、置中標籤區域(centered_id_ranges)以及 drop_ids。結構與如何測量座標請參閱 references/overrides.md。多數簡單傳單不需要覆蓋;圖表較多的文件可能需要少量設定。

  5. 合成 — 03_compose.py SOURCE.pdf OUTDIR → final_zh.png。這是確定性引擎(背景重建 + 統一大小的重繪)。每個文件不需要調整。

  6. PDF 與裁切 — 04_pdf.py SOURCE.pdf OUTDIR OUT.pdf → 產生 PDF 以及用於 QA 的 zh_L/zh_R.png。

  7. 審查與迭代 — 派遣一個審查代理比較 zh_L/zh_R.png 與 half_0/1.png(提示在 references/agent-prompts.md)。透過編輯 overrides.json / translation.json 修正問題,然後重新執行 03→04。重複直到乾淨。常見問題及其修復方式列於 references/pipeline.md。

三個角色的循環(翻譯者 → 合成器 → 審查者)模擬人類在地化團隊;執行審查者 1-2 次即可捕捉到長尾問題(殘留源文字、尺寸錯誤的區塊)。

引擎自動處理的項目(無需設定)

  • 淺色文字在深色背景上 以及 深色文字在淺色背景上的面板(自動選擇正確的背景顏色)。
  • 平面面板、平滑漸層和照片背景(自動選擇填充或修補區域)。
  • 「幽靈」文字圖層條目(沒有可見字形,自動跳過,永不繪製)。
  • 項目符號列表(項目符號被第一個文字列吃掉的情況,自動重新對齊)。
  • 字型大小:保持原始大小,每個區塊統一,使換行的段落/引言不會參差不齊。

預設值與需求

  • Python:pymupdf (fitz), numpy, opencv-python (cv2), Pillow。
  • 中日韓字型預設 Hiragino Sans GB.ttc(macOS;W3 常規索引 0 / W6 粗體索引 2)。可透過 overrides.json 中的 "font" 覆蓋以支援其他語言/字型。
  • 渲染比例預設為 6.0(約 432 dpi)。迭代時可降低至 4 以加快速度;印刷用途時提高。
  • 預設保留源語言:URL、電子郵件、品牌/產品商標、Logo 內的嵌入文字、純數字/單位和專有名詞。由翻譯者決定;KEEP 正則表達式會預先標記明顯的項目。

參考檔案

  • references/pipeline.md — 原理、移除策略決策樹,以及常見視覺缺陷及其精確修復方法(條紋、殘留、破損的藥丸形狀、尺寸崩潰)的目錄。
  • references/agent-prompts.md — 可直接複製使用的翻譯者和審查者代理提示。
  • references/overrides.md — overrides.json 結構以及如何測量圖表/藥丸形狀座標。

相關技能