PDF_TO_MD

功能

将 PDF 文档转换为 Markdown 文本,适合将 PDF 内容送入大模型处理、知识库构建或文档摘要等场景。

底层使用

pymupdf4llm
pymupdf4llm
库提取版面结构并还原为 Markdown 格式(标题、段落、列表、表格等);对于扫描件,会先通过
ocrmypdf
ocrmypdf
做全页 OCR 后再转换。


语法

PDF_TO_MD(source) PDF_TO_MD(source, options)

参数类型说明
source
source
STRINGPDF 来源,支持 HTTP/HTTPS URL 或本地路径(见下方"来源格式")
options
options
STRING(可选)选项字符串,格式为
k1=v1,k2=v2,...
k1=v1,k2=v2,...
,必须是非 NULL 字面量

返回值:STRING 类型的 Markdown 文本。


来源格式

格式示例说明
HTTP/HTTPS URL
'https://example.com/doc.pdf'
'https://example.com/doc.pdf'
自动下载,默认超时 30 秒,默认限制 100 MB

options 可用字段

字段默认值取值说明
ocr
ocr
auto
auto
auto
auto
/
never
never
/
always
always
OCR 策略,见下方"OCR 策略说明"
http_timeout_seconds
http_timeout_seconds
30
30
正整数(秒)HTTP 下载超时时间
max_download_bytes
max_download_bytes
104857600
104857600
(100 MB)
正整数(字节)HTTP 下载大小上限,超过则报错
ocr_timeout_seconds
ocr_timeout_seconds
180
180
正整数(秒)OCR 处理超时时间
slow_operation_seconds
slow_operation_seconds
5
5
正整数(秒)单步操作超过此时间记录 WARNING 日志
mode
mode
dummy
dummy
测试模式,不处理真实 PDF,直接返回固定占位内容
# Dummy PDF Markdown
# Dummy PDF Markdown

options 格式示例

'ocr=never,http_timeout_seconds=60'


OCR 策略说明

PDF_TO_MD
PDF_TO_MD
的 OCR 逻辑分两步:

第一步:分类

检测各页词密度(每页 ≥ 20 个词视为有文字),若超过 50% 的页面词数不足,则判定为扫描件。

第二步:转换

策略行为
auto
auto
(默认)
文字型 PDF 直接用
pymupdf4llm
pymupdf4llm
转 Markdown;扫描件先触发内部 OCR 再转换。若转换结果内容稀疏(平均每页字符数 < 300),则额外调用
ocrmypdf
ocrmypdf
做全页 OCR,再用纯文本提取兜底,取字符数更多的结果(兜底路径输出为带
--- page N ---
--- page N ---
分隔符的纯文本,非标准 Markdown)
never
never
跳过 OCR,直接转 Markdown(扫描件可能输出空内容)
always
always
调用
pymupdf4llm
pymupdf4llm
时强制启用内部 OCR;若结果仍稀疏,还会额外触发
ocrmypdf
ocrmypdf
+ 纯文本兜底

使用示例

-- 基础用法:将 PDF 转为 Markdown SELECT PDF_TO_MD('https://example.com/paper.pdf'); -- 禁用 OCR(速度更快,适合有文字层的 PDF) SELECT PDF_TO_MD('https://example.com/paper.pdf', 'ocr=never'); -- 强制 OCR(扫描件) SELECT PDF_TO_MD('https://example.com/scanned.pdf', 'ocr=always'); -- 调大下载限制(大文件) SELECT PDF_TO_MD( 'https://example.com/large.pdf', 'ocr=auto,max_download_bytes=209715200,http_timeout_seconds=120' ); -- Volume 文件(推荐生产用法:通过 get_presigned_url 获取预签名 URL) SELECT PDF_TO_MD(get_presigned_url(volume my_vol, 'paper.pdf')); -- 批量转换表中的 PDF,结合 AI 函数做摘要 SELECT doc_id, AI_COMPLETE('conn:model', CONCAT('请用200字摘要以下内容:\n', PDF_TO_MD(pdf_url))) AS summary FROM pdf_documents; -- 将转换结果写入文档表 INSERT INTO doc_content (doc_id, content) SELECT doc_id, PDF_TO_MD(pdf_url) FROM pdf_documents WHERE pdf_url IS NOT NULL;


与 PDF_TO_JSON 的对比

维度PDF_TO_MDPDF_TO_JSON
适用场景LLM 输入、知识库、摘要程序化解析、坐标提取、版面分析
输出格式Markdown 文本(兜底时为纯文本)结构化 JSON(含坐标、块信息)
内容丰富度标题/段落/列表/表格的 Markdown 还原每页文本 + 精确版面坐标
OCR 策略pymupdf4llm 内部 OCR + ocrmypdf 纯文本兜底(二次)ocrmypdf 预处理后再用 fitz 提取(一次)

注意事项

  • options
    options
    必须是字符串字面量,不能是列名或变量;不能为空字符串
    ''
    ''
  • 多个选项用逗号分隔,不能有重复 key,不能有空 segment(如末尾多余逗号)
  • OCR 依赖服务端安装
    ocrmypdf
    ocrmypdf
    ;若未安装,OCR 会静默跳过,
    auto
    auto
    策略在扫描件上会退化为直接提取(可能返回空内容)
  • 当兜底路径(
    ocrmypdf
    ocrmypdf
    + 纯文本)被触发时,输出为带
    --- page N ---
    --- page N ---
    分隔符的纯文本格式,而非标准 Markdown
  • 部分复杂版面(多栏、嵌套表格、数学公式)的 Markdown 还原质量取决于
    pymupdf4llm
    pymupdf4llm
    的版本
  • mode=dummy
    mode=dummy
    仅用于测试,不发起真实 PDF 处理,返回固定字符串
    # Dummy PDF Markdown\n
    # Dummy PDF Markdown\n
联系我们
预约咨询
微信咨询
电话咨询
邮件咨询