paper-translatorlisted
Install: claude install-skill obenic/paper-translator
# 文献翻译
把学术论文 PDF 译成中文,**图文完整**,同时产出 Markdown 与 PDF。
## 铁律:论文 = 正文 + 图
只提取文本层,你会交付一份**看起来完整、实际残缺**的译文——图注翻译得再好,读者也看不到图。
这不是假设,是本 skill 的成因:一篇 24 页论文,正文 20 页有文本层,图 1–4 单独占第 21–24 页。文本提取一切正常、零报错、零缺页,图却一张都没进译文。
PDF 里的图有三种形态,文本提取全都拿不到:
| 形态 | 为什么会漏 |
|------|-----------|
| 独立整页图 | 该页文字量≈0,但整篇不是扫描件,"扫描件检测"放行 |
| 正文页内嵌图 | 该页文字量正常,看不出异常 |
| 矢量绘制图表 | `get_images()` 返回 0 张,栅格图检测完全失效 |
`extract_paper.py` 三种都检测,并做**图数量交叉校验**:正文引用了 Fig.1–4,就必须产出 4 张图。**对不上时脚本 exit 3 并告警——不要在告警未解决前开始翻译。**
## 流程
**先把 `$SK` 指对,否则后面每条命令都会 `No such file`。** `$SK` 是本 skill 的**真实目录**——放着 `*.py` 的那个:
```bash
SK=~/.claude/skills/paper-translator # 常见位置(全局安装)
ls "$SK"/*.py >/dev/null 2>&1 || echo "SK 不对:该目录没有脚本"
```
那一行检查不能跳。有些安装方式下 `~/.claude/skills/<name>/` 里**只有 `SKILL.md`**,是一个指向别处的注册桩;此时把 `$SK` 换成桩正文里写明的真实路径(例如本体放在别的盘)。PowerShell 用 `$env:USERPROFILE` 代替 `~`。
步骤编号一览,照这个顺序走:
| 步 | 干什么 | 谁干 |
|---|---|---|
| **1.0** | 环境自检 `preflight.py` | 脚本 |
| **2.0** | PDF → Word `pdf_to_docx.py` | 脚本 |
| **2.1** | 从 Word 抽正文 + 图 `docx_extract.py` | 脚本 |
| **2.2** | **决策点:问用户满不满意 ★** | 人工 |
| **3.0** | 回退提取 `extract_paper.py`(仅 2.2 不满意,或本机无转换器时) | 脚本 |
| **4.0** | 切分面板 `panel_split.py`(两条路都要做) | 脚本 + 你数 `--layout` |
| **5.0** | 翻译 | 模型 |
| **5.1** | 写 Markdown | 模型 |
| **5.2** | 插图归位 `insert_figures.py` | 脚本 |
| **5.3** | 加目录 `add_toc.py` | 脚本 |
| **6.0** | 转 PDF `md_to_pdf.py`(目录页 + PDF 书签自动生成) | 脚本 |
| **7.0** | 完成前自检 | 模型 + 人工 |
### 1.0 环境自检:先确认这台机器干得了这活
**这是第一条命令,比转 Word 更早。** 你的机器不等于别人的机