给大模型喂 PDF,很多人的第一步都是:转图片、跑 OCR、再把识别结果塞进知识库。
问题是,约 54% 的 PDF 本来就带着可读取的文字层。明明可以直接拿文字,却非要先拍成“照片”再识别一遍,速度慢、成本高,还可能凭空多出错字。
Firecrawl 团队最近开源的 pdf-inspector,就是专门来适应文字类型PDF和图片类型PDF的。

扫描件分流提取,别让 OCR 处理文字
pdf-inspector 是一个纯 Rust 编写的本地 PDF 检查与提取库。它不需要先渲染整份文档,而是直接分析 PDF 内部的文字操作符、字体编码和图片覆盖情况。
一份文档进来后,它会判断属于 TextBased、Scanned、ImageBased 还是 Mixed,同时给出置信度,以及具体哪些页面需要 OCR。
PDF 到达 → 约 10–50 毫秒完成分类 → 文字页直接本地提取 → 扫描页才送去 OCR。
文字版 PDF 的本地提取,官方给出的典型耗时是约 150 毫秒,整体可在 200 毫秒内完成;而一次外部 OCR 往往要等 2–10 秒。对批量文档管线来说,这个分流省下的不只是时间,还有 GPU 和接口费用。
注意:pdf-inspector 本身不执行 OCR。遇到扫描版、图片型或编码损坏的页面,它负责识别并告诉你的程序“这些页需要走 OCR”。
不只是提文字,表格、多栏和标题也能尽量还原
直接从 PDF 复制过文字的人都知道,真正折磨人的不是“有没有字”,而是阅读顺序全乱了:左栏还没读完就跳到右栏,表格挤成一长串,标题和正文混在一起。
1多栏阅读顺序
自动识别报纸、论文一类的多栏布局,按列重建连续的阅读顺序,还支持从右到左的文字。
2两种表格检测
既能从 PDF 的矩形绘制指令识别有边框表格,也能根据文字对齐关系猜出无边框表格,并输出 Markdown 表格。
3Markdown 结构还原
根据字号比例还原 H1–H4 标题,同时识别粗体、斜体、列表、代码块、链接、上下标和分页标记。
官方还在 200 份 PDF 的 opendataloader-bench 语料上做了可复现测试。关闭 OCR、只比较本地解析器时,pdf-inspector 的综合得分是 0.875,表格得分 0.814,200 份文档整轮耗时中位数 0.470 秒。
四套接口,浏览器里也能纯本地运行
项目提供 Rust、Node.js、Python 和浏览器 WebAssembly 接口。最省事的是命令行,装好 Rust 工具链后,两行就能把 PDF 转成 Markdown:
cargo install pdf-inspectorpdf2md document.pdfNode.js 项目可以直接安装 npm 包:
npm install @firecrawl/pdf-inspector如果是网页应用,则安装 WebAssembly 版本:
npm install @firecrawl/pdf-inspector-wasmWASM 版本能在浏览器和 Web Worker 中直接解析用户选择的 PDF,文件不用上传到后端,也不需要调用外部服务。做本地知识库、隐私文档助手、网页端 PDF 转 Markdown,这一点很实用。
Python 接口目前更适合从源码构建:克隆仓库后安装 maturin,执行 maturin develop --release,随后即可调用 pdf_inspector.process_pdf()。
放在 RAG 和文档流水线最前面,正合适
pdf-inspector 最合适的位置,不是替代所有 PDF 解析方案,而是站在整个流程的入口。
文字型页面就地转成干净 Markdown,扫描页再交给 OCR;混合 PDF 则按页拆开走不同路线。后面无论接分块、向量库、RAG,还是直接喂给大模型,都能少做大量无意义的图像识别。
GitHub:github.com/firecrawl/pdf-inspector开源协议:MIT
做文档处理、知识库或 AI Agent 的朋友,可以把它当成 PDF 管线里的“分诊台”。先花几十毫秒看清文档是什么,再决定要不要上 OCR。
写点有灵魂的代码
每天更新AI资讯 · 分享AI工具和方法
夜雨聆风