PDF_TO_MD
功能
将 PDF 文档转换为 Markdown 文本,适合将 PDF 内容送入大模型处理、知识库构建或文档摘要等场景。
底层使用
pymupdf4llm 库提取版面结构并还原为 Markdown 格式(标题、段落、列表、表格等);对于扫描件,会先通过 ocrmypdf 做全页 OCR 后再转换。
语法
| 参数 | 类型 | 说明 |
|---|---|---|
| STRING | PDF 来源,支持 HTTP/HTTPS URL 或本地路径(见下方"来源格式") |
| STRING(可选) | 选项字符串,格式为 ,必须是非 NULL 字面量 |
返回值:STRING 类型的 Markdown 文本。
来源格式
| 格式 | 示例 | 说明 |
|---|---|---|
| HTTP/HTTPS URL | | 自动下载,默认超时 30 秒,默认限制 100 MB |
options 可用字段
| 字段 | 默认值 | 取值 | 说明 |
|---|---|---|---|
| | / / | OCR 策略,见下方"OCR 策略说明" |
| | 正整数(秒) | HTTP 下载超时时间 |
| (100 MB) | 正整数(字节) | HTTP 下载大小上限,超过则报错 |
| | 正整数(秒) | OCR 处理超时时间 |
| | 正整数(秒) | 单步操作超过此时间记录 WARNING 日志 |
| — | | 测试模式,不处理真实 PDF,直接返回固定占位内容 |
options 格式示例:
OCR 策略说明
PDF_TO_MD 的 OCR 逻辑分两步:
第一步:分类
检测各页词密度(每页 ≥ 20 个词视为有文字),若超过 50% 的页面词数不足,则判定为扫描件。
第二步:转换
| 策略 | 行为 |
|---|---|
(默认) | 文字型 PDF 直接用 转 Markdown;扫描件先触发内部 OCR 再转换。若转换结果内容稀疏(平均每页字符数 < 300),则额外调用 做全页 OCR,再用纯文本提取兜底,取字符数更多的结果(兜底路径输出为带 分隔符的纯文本,非标准 Markdown) |
| 跳过 OCR,直接转 Markdown(扫描件可能输出空内容) |
| 调用 时强制启用内部 OCR;若结果仍稀疏,还会额外触发 + 纯文本兜底 |
使用示例
与 PDF_TO_JSON 的对比
| 维度 | PDF_TO_MD | PDF_TO_JSON |
|---|---|---|
| 适用场景 | LLM 输入、知识库、摘要 | 程序化解析、坐标提取、版面分析 |
| 输出格式 | Markdown 文本(兜底时为纯文本) | 结构化 JSON(含坐标、块信息) |
| 内容丰富度 | 标题/段落/列表/表格的 Markdown 还原 | 每页文本 + 精确版面坐标 |
| OCR 策略 | pymupdf4llm 内部 OCR + ocrmypdf 纯文本兜底(二次) | ocrmypdf 预处理后再用 fitz 提取(一次) |
注意事项
必须是字符串字面量,不能是列名或变量;不能为空字符串options''- 多个选项用逗号分隔,不能有重复 key,不能有空 segment(如末尾多余逗号)
- OCR 依赖服务端安装
;若未安装,OCR 会静默跳过,ocrmypdf
策略在扫描件上会退化为直接提取(可能返回空内容)auto - 当兜底路径(
+ 纯文本)被触发时,输出为带ocrmypdf
分隔符的纯文本格式,而非标准 Markdown--- page N --- - 部分复杂版面(多栏、嵌套表格、数学公式)的 Markdown 还原质量取决于
的版本pymupdf4llm
仅用于测试,不发起真实 PDF 处理,返回固定字符串mode=dummy# Dummy PDF Markdown\n
联系我们
