2026年8月4日
pdf-inspector:先判断 PDF 是否真需要 OCR,再交给 AI
做知识库、RAG 或文档智能时,PDF 往往被统一送进 OCR。问题是,大量报告、论文和合同本来就带文本层:全量 OCR 不仅更慢、更贵,还可能引入识别错误。Firecrawl 开源的 pdf-inspector 提供了一条更克制的路径——先在本地判断 PDF 类型,只把确实需要
做知识库、RAG 或文档智能时,PDF 往往被统一送进 OCR。问题是,大量报告、论文和合同本来就带文本层:全量 OCR 不仅更慢、更贵,还可能引入识别错误。Firecrawl 开源的 pdf-inspector 提供了一条更克制的路径——先在本地判断 PDF 类型,只把确实需要识别的页面交给 OCR。
📌 它解决什么问题
pdf-inspector 是一个 Rust 编写的 PDF 分类与文本提取库。它会检查页面内容流中的文本和图像操作符,将文档识别为文本型、扫描型、图像型或混合型,并返回置信度及需要 OCR 的具体页码。
对于已有文本层的页面,它还能直接提取文字并转换为 Markdown,处理标题、列表、代码块、链接、多栏阅读顺序和表格。整个核心不依赖模型或外部服务,数据可以留在本地;同时提供 Python、Node.js、Rust、浏览器 WebAssembly 和命令行接口。
🔍 为什么值得关注
它的价值不在于“又一个 PDF 转 Markdown”,而是给 AI 文档管线增加了低成本路由层:文本型 PDF 走本地快速提取,扫描页再进入 OCR,混合文档则按页处理。这样能减少无效 OCR,也更容易控制延迟、费用和隐私边界。
官方在 200 份 PDF 的开源基准上公布了可复现实验,覆盖阅读顺序、表格、标题和速度。不过这些结果来自 Apple M4 Pro,且关闭了 OCR,只适合用来判断本地文本解析能力,不能直接等同于所有中文 PDF 或生产环境表现。
🧪 谁适合试,怎么开始
适合在做 RAG 入库、报告归档、论文解析、票据或合同处理的开发者。Python 用户可以先拿一批真实文档验证:
pip install pdf-inspector
import pdf_inspector
result = pdf_inspector.process_pdf("document.pdf")
print(result.pdf_type)
print(result.pages_needing_ocr)
print(result.markdown)
若只想做路由,可调用 detect_pdf,避免完整提取。建议分别准备原生文本、纯扫描、双栏论文、复杂表格和中英混排样本,统计分类正确率、Markdown 结构完整度与单页耗时,再决定是否接入现有 OCR 服务。
⚠️ 使用提醒
“不需要 OCR”只代表 PDF 存在可提取文本,不代表结构一定正确。缺失 ToUnicode 映射、特殊字体、公式、手写内容和复杂嵌套表格仍可能解析失败;项目会标记部分编码问题,但业务侧仍要保留质量检测与 OCR 回退。官方目前没有 GitHub Release,Python、npm 与 crates.io 包版本也不一致,生产使用应固定依赖版本,并用自己的文档集做回归测试。项目采用 MIT 许可证。
🔗 参考资源
- GitHub:https://github.com/firecrawl/pdf-inspector
- 官方文档:https://firecrawl.github.io/pdf-inspector/
- Python 使用说明:https://github.com/firecrawl/pdf-inspector/blob/main/docs/python.md
- Node.js 示例:https://github.com/firecrawl/pdf-inspector/tree/main/napi
- 可复现基准:https://github.com/firecrawl/opendataloader-bench/tree/abi/pdf-parser-benchmark-results
- 许可证:https://github.com/firecrawl/pdf-inspector/blob/main/LICENSE