Install
openclaw skills install @jiaranbb/pdf-readeropenclaw skills install @jiaranbb/pdf-reader一条命令完成「鉴别文字层 → 提取 → 质检 → 落盘」,不要手工拼 pdftotext/视觉读取流程。
python3 <skill-dir>/scripts/pdf2md.py 输入.pdf -o 输出.md
Codex 手动安装到默认目录后,常用路径是:
python3 ~/.codex/skills/pdf-reader/scripts/pdf2md.py 输入.pdf -o 输出.md
--lang 只允许本机 tesseract 已安装的语言代码组合。| 情形 | auto 的行为 |
|---|---|
| 有文字层 | pdftotext -layout(财报大表格保列对齐,中文 CID 字体最稳) |
| pdftotext 质量不达标 | 换 markitdown(用户可用 --engine markitdown 强制) |
| 无内嵌字体(扫描件) | 直接 tesseract OCR(chi_sim+eng,--dpi 默认 300) |
| 全部不达标 | 选相对最优并在 warnings 里说明,此时才考虑视觉读取 |
常用参数:--first N --last M 只转部分页(OCR 大文件先抽几页试质量);--engine ocr 强制 OCR;--lang chi_tra+eng 繁体。
engine/ocr:实际用了哪个引擎、是否 OCR 产物chars_per_page ≥ 40 且 garbage_ratio ≤ 0.03 才算合格(脚本已自动换引擎,无需人工判断)sparse_pages:几乎无文字的页 → 混合文档(部分扫描页),对这些页单独 --engine ocr --first N --last M 或视觉读取warnings:必须逐条读并照做,不能忽略正文里每页有 <!-- 第 N 页 --> 标记,grep -n 命中后往上找最近的页标记即可回溯原 PDF 页码。
ocr: true,引用关键数字(金额、比例、日期)前必须回原 PDF 对应页视觉复核。%PDF 会报 not_a_pdf 并退出——按调用方流程先用 file 鉴别真实类型(纯文本直接 cp,zip 打包先解压)。brew install poppler # pdftotext / pdffonts / pdftoppm / pdfinfo
brew install tesseract tesseract-lang # OCR + chi_sim 中文包
uv tool install "markitdown[pdf]" # 备选引擎