pdf-readerlisted
Install: claude install-skill danking211367/pdf-reader-skill
# 通用 PDF 读取技能
本技能使用 `scripts/pdf_tools.py` 读取任意 PDF。核心策略是先建立页面地图,再只抽取必要页面;遇到扫描/图片页时渲染为 PNG 供视觉理解,或按需 OCR。
## 准备
```bash
python -m pip install pymupdf
# 把本目录(仓库根)设到 TOOL 变量:TOOL="<本仓库的绝对路径>/scripts/pdf_tools.py"
TOOL="$(cd "$(dirname "$0")" && pwd)/scripts/pdf_tools.py"
PDF="C:/path/to/document.pdf"
```
- 若已把本技能安装到 `~/.claude/skills/pdf-reader`,可用 `TOOL="~/.claude/skills/pdf-reader/scripts/pdf_tools.py"`(Windows 展开为 `C:/Users/<用户名>/.claude/skills/pdf-reader/scripts/pdf_tools.py`)。
- Windows 上若 `python` 不在 PATH,可用 `py -3` 替代。
- 脚本依赖 PyMuPDF;缺少时会提示安装。
- OCR 可选:`python -m pip install pytesseract Pillow`,并安装 Tesseract OCR 与所需语言包。
## 工作流
### 1. 先建地图
```bash
python "$TOOL" meta "$PDF"
python "$TOOL" toc "$PDF"
```
`meta` 返回页数、加密状态、书签数量、元数据;`toc` 返回书签目录。若 PDF 没有书签,生成候选目录:
```bash
python "$TOOL" outline "$PDF" --max-pages 0
```
`outline` 按字号和粗体识别标题,适合无书签的文本型 PDF。`--max-pages 0` 表示扫描全部页;若结果过杂,调高 `--min-size`;若输出提示无文本层,改用 `img` 视觉阅读。
### 2. 按需抽取文本
```bash
python "$TOOL" text "$PDF" 12
python "$TOOL" text "$PDF" 12 16
python "$TOOL" text "$PDF" --pages 3,5-8
```
- 一次最多带 3–5 页进上下文,够用即止。
- 若某页输出“本页无文本层”,说明可能是扫描/图片页,改用 `img` 或 `ocr`。
- 加密 PDF 在命令末尾加 `--password "密码"`。
### 3. 扫描/图片页渲染
```bash
python "$TOOL" img "$PDF" 12 "C:/temp/page-12.png"
python "$TOOL" img "$PDF" 12 16 "C:/temp"
```
默认 `--zoom 2.0`。页面宽大或文件很大时可降到 `--zoom 1.5`;需要看清精确编号或小字时可提高 zoom。渲染后使用图像查看工具阅读,读完及时清理。
### 4. 关键词定位
```bash
python "$TOOL" search "$PDF" "关键词"
python "$TOOL" search "$PDF" "^Part No" --rege