$npx -y skills add woodfishhhh/EZ_math_model --skill pdfUse when EZ_math_model needs to read or convert PDF problem statements, extract text or tables from PDF attachments, summarize reference papers, or fall back when MinerU is unavailable.
| 1 | # pdf — PDF 读取与转换兜底 |
| 2 | |
| 3 | ## 何时使用 |
| 4 | |
| 5 | - 用户上传 `.pdf` 题目。 |
| 6 | - 需要读取优秀论文 PDF 的摘要、目录或局部章节。 |
| 7 | - MinerU 不可用或输出失败。 |
| 8 | - PDF 扫描件需要 OCR。 |
| 9 | |
| 10 | ## 优先链路 |
| 11 | |
| 12 | 1. `mineru` skill。 |
| 13 | 2. 宿主 `pdf` skill。 |
| 14 | 3. `pdfplumber` 文本和表格提取。 |
| 15 | 4. 图像 OCR 兜底。 |
| 16 | |
| 17 | ## 论文 PDF 导出兜底 |
| 18 | |
| 19 | `scripts/runtime/export_paper.ps1` 的 simple text-only PDF 只用于占位交付。该兜底 |
| 20 | 使用基础字体,非 ASCII 字符会被替换为 `?`,因此中文 formal 论文不能把它视为 |
| 21 | 高保真 PDF。出现该兜底时必须: |
| 22 | |
| 23 | - 在 `export_report.json` 中写 `pdf_fallback` 与 `paper_pdf_high_fidelity=false`; |
| 24 | - 在 `export_audit.json` 中标记 `pdf_readability=placeholder` 或 warning; |
| 25 | - 最终质量等级最高为 `provisional_pass`。 |
| 26 | |
| 27 | ## 题目 PDF 转 Markdown |
| 28 | |
| 29 | ```python |
| 30 | import pdfplumber |
| 31 | |
| 32 | with pdfplumber.open("problem.pdf") as pdf: |
| 33 | text = "\n\n".join(page.extract_text() or "" for page in pdf.pages) |
| 34 | |
| 35 | with open("problem.md", "w", encoding="utf-8") as f: |
| 36 | f.write(text) |
| 37 | ``` |
| 38 | |
| 39 | 复杂表格、公式和多栏排版优先交给 `mineru`。 |
| 40 | |
| 41 | ## 参考论文读取策略 |
| 42 | |
| 43 | - 优先读标题、摘要、目录、参考文献。 |
| 44 | - 只在需要借鉴模型表述时读对应章节。 |
| 45 | - 每篇累计读取页数不超过 5 页。 |
| 46 | - 不全文复制优秀论文内容。 |
| 47 | |
| 48 | ## 失败诊断 |
| 49 | |
| 50 | | 情况 | 处理 | |
| 51 | |---|---| |
| 52 | | 全部 PDF 工具不可用 | 保留原 PDF,让多模态能力直接读 | |
| 53 | | 提取乱码 | 写诊断,建议用户提供文本版 | |
| 54 | | 公式提取失败 | 保留原始字符串,由 writer 补 LaTeX | |