pdf-inspector:一款基于 Rust 开发的高速 PDF 分类与文本提取库
可自动区分文本型 PDF 与扫描件 PDF,提取带坐标位置的文本,并输出规整 Markdown,全程无需 OCR。提供 Python、Node.js 与浏览器 WebAssembly(wasm/README.md)多语言绑定。
由 Firecrawl 开发,可在本地 200 毫秒内完成文本类 PDF 解析。市面上约 54% 的 PDF 无需 OCR,使用本库可省去成本高昂的 OCR 服务调用。
功能特性
- 智能文档分类
通过抽样解析内容流,仅需 10–50 毫秒即可判定 PDF 类型:纯文本型、纯扫描图型、纯图片型、图文混合型。输出置信度分值(0.0–1.0),并按页面给出是否需要 OCR 的路由建议。
- 文本提取
提取文本同时保留位置信息、字体属性、XY 坐标,自动识别多栏排版阅读顺序。
- Markdown 转换
自动识别 H1–H4 标题(依据字号比例)、无序列表/数字有序列表/字母有序列表、代码块(等宽字体识别)、表格(图形矩形检测+启发式算法)、粗体/斜体样式、超链接、分页符。
- 表格识别
双识别模式:基于 PDF 绘图指令的矩形检测、基于文本对齐规则的启发式识别。支持财务报表、页脚注释、跨页续表。
- CID 字体兼容
支持 Type0/Identity-H 字体的 ToUnicode CMap 解码,兼容 UTF-16BE、UTF-8、Latin-1 编码。
- 多栏排版解析
自动识别报纸式多栏布局,生成顺次阅读顺序,支持 RTL 从右至左文字。
- 编码异常检测
自动标记损坏的字体编码,上层程序可据此降级使用 OCR 方案。
- 文档单次加载
文档仅解析一次,分类检测与文本提取复用解析结果,避免重复 IO 开销。
- 浏览器 WebAssembly 支持
可在浏览器与 Web Worker 中本地运行同一套 Rust 解析内核,内置字符映射表(CMap),无需请求后端服务。
- 轻量无依赖
纯 Rust 实现,不含机器学习模型、无需外部服务;仅依赖 lopdf 作为 PDF 解析基础库。
https://github.com/firecrawl/pdf-inspector
https://firecrawl.github.io/pdf-inspector/