pdf-inspector Skill:Rust 写的 PDF 解析神器,0.47 秒完成文本抽取
PDF 文档处理是 RAG 流水线的常见瓶颈——传统方案要么用 OCR 拖慢速度(MarkItDown 17 秒/份),要么表格结构全丢失,要么把扫描件当图片硬转。Firecrawl 开源的 pdf-inspector 用纯 Rust 实现,绕过 OCR 走内容流解析,在 opendataloader-bench 基准评测中拿下综合 0.875 分、阅读顺序 0.915 分、表格 0.814 分,中位耗时仅 0.47 秒,是当前最快的地方端 PDF 解析方案。
pdf-inspector 解决的核心问题是”智能路由”:先用轻量分类(约 10–50ms)判断 PDF 是纯文本型、扫描型、图文混合还是混合型,对纯文本型直接跳过 OCR,对扫描型才建议走 OCR 管线——避免对 54% 不需要 OCR 的文档白花延迟和成本。
核心能力矩阵
- 智能分类:10–50ms 内判断 TextBased / Scanned / ImageBased / Mixed,附置信度分数和逐页 OCR 路由建议
- 文本提取:带坐标感知,支持字体信息、X/Y 位置、多栏自动检测(含报纸式分栏)、RTL 文本顺序
- Markdown 转换:按字体大小比推 H1–H4 级标题,自动识别粗体/斜体/代码块/列表/表格/url
- 表格检测:双模式(PDF 绘图指令矩形检测 + 启发式对齐检测),能处理财务表、含脚注表格、跨页延续表
- 无外部依赖:纯 Rust,不含 ML 模型,纯本地运行,支持 Python/Node.js/WebAssembly 绑定
评测数据(opendataloader-bench,200 份 PDF,2026-07-31 Apple M4 Pro):
| 引擎 | 综合 | 阅读顺序 | 表格 | 标题 | 速度 |
|---|---|---|---|---|---|
| pdf-inspector | 0.875 | 0.915 | 0.814 | 0.788 | 0.470s |
| LiteParse | 0.873 | 0.913 | 0.693 | 0.811 | 0.750s |
| PyMuPDF4LLM | 0.735 | 0.886 | 0.401 | 0.424 | 17.117s |
| MarkItDown | 0.589 | 0.844 | 0.273 | 0.000 | 16.165s |
GitHub:https://github.com/firecrawl/pdf-inspector
作者是 Firecrawl(firecrawl/dev)团队,专注网页数据采集与结构化,主仓库 firecrawl/firecrawl 是知名开源爬虫方案。
pdf-inspector 由 Rust 实现,核心逻辑基于 lopdf 做 PDF 内容流解析,不依赖任何外部机器学习服务。文档稀疏字段(如 CID 字体)内置 ToUnicode CMap 解码,支持 UTF-16BE / UTF-8 / Latin-1 自动降级。
安装(Python)
pip install maturin
maturin develop --release
核心调用
import pdf_inspector
result = pdf_inspector.process_pdf("document.pdf")
print(result.pdf_type) # "text_based" | "scanned" | "image_based" | "mixed"
print(result.markdown) # Markdown string 或 None(扫描件返回 None)
print(result.confidence) # 0.0–1.0 置信度
使用场景与人群
- RAG / 知识库工程师:对报告、论文、财务 PDF 做向量化,需要干净的 Markdown 而非 OCR 乱码
- 数据标注团队:批量预处理发票、合同、调研问卷,保留表格结构
- AI 应用开发者:在 Agent pipeline 里做 PDF 路由判断(是否需要走 OCR)
- 法律 / 金融从业者:处理跨页大型表格(财报、判决书),要求版式不走形
输入输出案例
案例 1:财报 PDF
– 输入:一份 50 页含 12 张表格的年报 PDF(text_based 类型)
– 输出:约 10 秒完成,吐出的 Markdown 包含 H1–H4 标题层级、表格结构(Markdown 表格格式)、代码块(若有)、页内跳转链接
案例 2:扫描件 PDF
– 输入:一份影印版 30 页合同(image_based)
– 输出:pdf_type = "image_based",confidence = 0.91,markdown = None,建议路由到 OCR 管线——避免白跑解析浪费时间
评论区
登录后可评论。