前阵子我做 RAG 知识库,踩过最离谱的一个坑,是把所有 PDF 都当成扫描件,一股脑送去 OCR。
慢、贵,出来的文本还经常串行。后来我才搞明白,问题不在 OCR 引擎,而在我根本没先弄清楚:手里的 PDF,到底是不是扫描件。
先说结论
pdf-inspector,Firecrawl 开源的一个 Rust 库,只做一件小事,但极关键:在 OCR 之前,先给每一页 PDF 分类,判断它到底是纯文本、扫描件、图片型,还是混合型。
它能在 10 到 50 毫秒内给出判断,纯文本页直接走原生提取,跳过昂贵的 OCR。Firecrawl 给出的数据是,大约 54% 的 PDF 其实根本不需要 OCR。
把这个库塞进 RAG 流水线最前面当" OCR 前置",能替你省掉一大半无谓的识别开销。下面我把它的用法和接法讲清楚。
OCR 为什么是个坑
绝大多数 PDF 处理流水线,都做了一个错误的假设:把每一页都当成可能是扫描件,于是全部丢进 OCR。
这会带来三个麻烦。
第一是慢。OCR 要渲染图片、跑视觉模型,一页几百毫秒起步,长文档按小时算。
第二是贵。很多 OCR 服务按页收费,几百页文档跑下来,账单比文档本身还值钱。
第三,也是最容易被忽略的:纯文本 PDF 强行走 OCR,识别质量反而经常不如直接从 PDF 内部结构里抽取的文字,阅读顺序乱、表格错位,喂给大模型就是一锅粥。
我自己的体会是,RAG 知识库出问题,十次有六次不是模型不行,是喂进去的文档本身就是乱的。源头没洗干净,后面怎么调 prompt 都救不回来。

pdf-inspector 怎么分类
它的核心思路很聪明:不渲染、不调模型,只分析 PDF 的内部结构,比如字体编码、文本操作符、图片覆盖率,几毫秒就能判断这一页到底是什么类型。
它把 PDF 分成四类。
TextBased,纯文本型,文字本来就躺在文件里,直接抽。
Scanned,扫描件,整页都是图,必须上 OCR。
ImageBased,图片型,和扫描件类似,内容以图像为主。
Mixed,混合型,一份文档里既有文字页也有扫描页,需要逐页路由。
每一页它还会返回一个置信度分数,以及"这一页该走哪条路"的建议。纯文本页直接原生提取,只有扫描或图片密集的页才进 GPU 和 OCR。
最关键的数字在这里:本地处理一份纯文本 PDF,它能在 200 毫秒以内完成,而且完全不依赖任何外部服务。它最新版本 v0.1.7 是 2026 年 7 月 31 号发的,目前 GitHub 星标已经破 1.3 万,每月下载量在 1.3 万次上下。
接进 RAG 流水线的正确姿势
用法不复杂,因为纯 Rust、无 ML 模型、唯一的外部依赖只是一个叫 lopdf 的 PDF 解析库,所以 Python 和 Node 也都有官方绑定。
Rust 项目里,先加依赖:
cargo add pdf-inspector
只想做分类、不提取文字,用 detect_pdf:
use pdf_inspector::detect_pdf;
let info = detect_pdf("document.pdf")?;
println!("{:?}", info.pdf_type); // TextBased, Scanned, ImageBased, Mixed要连文字一起抽,用 process_pdf,它会直接给你 Markdown。
不想写代码,装个命令行工具也行:
cargo install pdf-inspector detect-pdf document.pdf --analyze --json
我的建议是,在把 PDF 灌进知识库之前,先用它跑一遍分类。纯文本的,直接抽文字进切片;只有被标成 Scanned 或 ImageBased 的页,才送去 OCR。一份 200 页的报告,如果有 150 页是纯文本,那 150 页就完全不用碰 GPU。

它真正解决的是什么
Firecrawl 自己就用这个库撑起了 Fire-PDF 这个托管解析引擎。官方说相比上一版流水线,快了 3.5 到 5.7 倍,平均一页不到 400 毫秒。
但我觉得对普通做 RAG 的人来说,它最大的价值不是快,是"该省的地方省"。
现在的 RAG 教程,十个有八个教你换更好的切分策略、换更强的嵌入模型。很少有人提醒你:先把文档里那些本来就是文字的部分,用最便宜的方式取出来。这一层做对了,后面的检索质量天然就高一块。
谁该用,谁先别急
如果你在搭知识库、做文档问答、跑 Agent 要读 PDF,这个库值得马上试。尤其是文档量大、扫描件和文字版混着来的场景,省下的 OCR 开销肉眼可见。
如果你只是偶尔转一份 PDF,那直接用 Firecrawl 的 /parse 接口或者现成工具就够了,它背后本来就在用 pdf-inspector,你等于白嫖了这层路由,不用自己接。
我个人判断,这类"前置分类"会慢慢变成 RAG 流水线的标准第一脚。就像做菜先洗菜,没人会把带泥的菜直接下锅。OCR 本身是贵且慢的操作,能不碰就不碰,才是正经的工程思路。
以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,
如果想第一时间收到推送,也可以给我个星标~
谢谢你看我的文章,我们,下次再见。
/ 作者:恒叔AI实战
夜雨聆风