它的核心不是“把所有 PDF 都丢给 OCR”,而是先判断,再决定每一页该走哪条处理路径。
开源项目观察|firecrawl/pdf-inspector|数据快照:2026-08-04
7,027当前 Star
+1,769今日新增 Star
Rust底层实现

它到底是干什么的?
pdf-inspector 是一个先判断 PDF 页面类型、再决定是否需要 OCR 的 Rust 解析库。
很多 PDF 本身已经保存了文字。对这些页面再次进行“转图片—OCR”,就像把一段已经可以复制的文字重新拍照识别:不仅浪费时间,还会增加 GPU 和服务成本。
PDF 解析的关键问题,不是“如何把每一页都识别出来”,而是“这一页能不能直接从 PDF 内部拿出文字”。
PDF 不是一种单一数据,而是一个文档容器。里面可能同时包含页面树、字体、文字指令、图像对象和坐标信息。
所以,最合理的顺序是先做一个便宜的判断:
PDF 到达 ↓ 读取内部结构:页面树、内容流、字体编码 ↓ 判断页面是否已有可读文字 ├─ Text-based:直接提取,跳过 OCR └─ Scanned / Image-based:只把这些页面送去 OCR ↓ 合并结果,输出 Markdown / JSON
它具体怎么工作?
第一步:快速分类
它检查 PDF 内部的文本操作符、图像操作符、字体编码和页面结构,判断页面属于原生文字、扫描图片、纯图片还是混合类型,并给出置信度和需要 OCR 的页面列表。
第二步:原生文字直接提取
如果页面已经有文字,就直接读取文字内容和位置,进一步恢复多栏阅读顺序、标题层级、列表、代码块、链接和表格。
第三步:只把必要页面交给 OCR
扫描页或文字编码异常的页面,才进入 OCR 或视觉模型。对于一份“150 页文字 + 60 页扫描”的混合报告,这种页面级分流可以避免把整份文件全部送进 OCR。
第四步:统一输出
无论页面走的是原生提取还是 OCR,最后都可以汇总成更适合检索增强生成(RAG)和大模型处理的 Markdown 或 JSON。
它不是什么?
它不是完整的 OCR 模型;纯扫描页仍然需要外部 OCR 或视觉模型。 它不是万能的 PDF 语义理解系统;复杂业务判断仍需要后续模型或规则。 它最擅长的是原生文字 PDF,尤其是报告、论文、发票和法律文档。
为什么最近受到关注?
我认为它的增长逻辑来自三个方向:AI/RAG 系统正在大量处理 PDF;OCR 的成本和延迟不适合“一刀切”;而 Rust 内核加上 Python、Node.js 和 WebAssembly 接口,又让它比较容易接入现有系统。
这也是一个很典型的基础设施项目:用户表面上想要的是“PDF 转 Markdown”,但真正决定系统能否规模化的,是前面的分类和路由。
适合哪些场景?
把企业报告、论文、发票、合同批量导入知识库。 降低大规模 PDF 处理中的 OCR 调用量。 在浏览器或 Web Worker 中本地解析,减少服务端往返。 为后续的搜索、切片、向量化和大模型问答准备结构化文本。
注意:项目 README 中的性能数据来自项目方在 200 份 PDF 上的本地基准,实际效果仍应使用自己的文档集验证。GitHub 的“今日新增 Star”也只是趋势快照,不等同于严格的 24 小时增长率。
参考:GitHub Trending|pdf-inspector README|Firecrawl 官方 Fire-PDF 发布说明
夜雨聆风