Communitygithub.com

sulipapa/localize-infographic-pdf

保留原稿艺术效果的PDF本地化(例如英语→中文),适用于设计导出的信息图/单页文档——一个Claude Code技能,可擦除矢量/Type3源文本并在原位重绘译文。

localize-infographic-pdf 是什么?

该技能专为设计导出的PDF文件(如信息图、单页宣传页)提供本地化方案,确保译文版本在视觉上与原始版本完全一致,仅将全部运行文本替换为目标语言。其核心原理是栅格化页面,擦除源文本,然后在原始坐标位置合成译文,而照片、图表、渐变、图标、Logo等艺术元素完全不重新生成。技能支持Claude Code、Cursor等AI代理平台,通过一套脚本工作流实现:从PDF中解析文本位置、提取可见文本并生成半透明参考图、提供翻译代理提示、自动合成最终图像、输出带裁剪标记的PDF供质量审查。引擎自动处理浅色文本在深色背景、深色文本在浅色背景、渐变或照片背景、幽灵文本层条目、对齐项目符号列表等常见场景,无需额外配置。典型使用场景是本地化市场营销材料、产品手册、数据图表等设计文件。

兼容平台✓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(每个物理文本行一个条目,包含bbox/颜色/大小)和 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以及 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。
  • CJK字体默认 Hiragino Sans GB.ttc(macOS;W3常规索引0 / W6粗体索引2)。可通过 overrides.json 中的 "font" 覆盖其他语言/字体。
  • 渲染缩放默认6.0(≈432 dpi)。迭代时降低到4以提升速度;打印时提高。
  • 默认保留源语言的:URL、电子邮件、品牌/产品商标、Logo嵌入文本、裸数字/单位、专有名称。由翻译决定;保留正则表达式预先标记明显的部分。

参考文件

  • references/pipeline.md — 原理、擦除策略决策树以及常见视觉缺陷及其精确修复方法目录(条纹、残留、破损药丸、尺寸塌陷)。
  • references/agent-prompts.md — 即用型翻译和审查代理提示。
  • references/overrides.md — overrides.json 模式以及如何测量图表/药丸坐标。

相关技能