PDF 解析工具这几年明显多了起来。表面上看,把 PDF 转成文字只是读取文件;但实际处理时会遇到各种复杂情况:有的 PDF 可以直接复制文字,有的来自扫描仪,还有的则是文本页与图片页混合的“多面手”。如果所有 PDF 不加以区分、直接进入 OCR 流程,处理时间和调用成本都会被明显拉高——问题是,很多原生文本型 PDF 本身就带着可提取的文字内容。
pdf-inspector 所关注的,正是 PDF 进入后续处理流程之前的识别与解析环节。

它是 Firecrawl 开源的一款 Rust PDF 处理库,能够先判断 PDF 类型,再提取文本,并将内容转换成 Markdown。项目支持 Rust、Python、Node.js、浏览器 WebAssembly 以及命令行工具。
截至目前,GitHub 项目页面显示该仓库已经获得 15.1K Star。

pdf-inspector 支持识别四类 PDF:文本型、扫描型、图片型和混合型。检测结果还会返回置信度,以及需要进一步交给 OCR 处理的页面信息。对于文本型 PDF,项目可以在本地完成文本提取和 Markdown 转换;对于需要 OCR 的页面,开发者可以根据检测结果把这些页面交给其他 OCR 工具处理。
pdf-inspector 本身并不负责 OCR 识别。它要做的,是判断当前 PDF 的类型与页面状态,为后续流程提供分流依据。这种思路很适合报告、研究论文、发票、法律文件等 PDF 批处理场景。
核心亮点
智能分类
pdf-inspector 会采样 PDF 内容流,在约 10 至 50 毫秒内完成类型检测。检测支持文本型、扫描型、图片型和混合型四类 PDF,并返回 0.0 到 1.0 的置信度评分,以及逐页 OCR 路由信息。

文本提取与版式识别
项目支持带位置信息的文本提取,可以保留字体信息和 X、Y 坐标,并自动处理多栏文本的阅读顺序。对于报纸式多栏布局,pdf-inspector 能够识别栏位关系、整理文本顺序,同时还支持从右到左的文本内容。

Markdown 转换
pdf-inspector 可以把 PDF 内容转换成 Markdown。它支持 H1 至 H4 标题、项目符号列表、数字列表、字母列表、代码块、表格、粗体、斜体、URL 链接和页面分隔。标题依据字体大小比例判断,代码块通过等宽字体识别,表格则结合矩形区域和启发式方法处理。

表格与字体处理
表格检测支持双模式:既可以根据 PDF 绘制操作中的矩形区域识别,也可以基于文本对齐关系做启发式检测。字体方面,项目支持 Type0 和 Identity-H 字体的 ToUnicode CMap 解码,以及 UTF-16BE、UTF-8 和 Latin-1 编码。对于财务表格、脚注和跨页表格,也有相应的处理支持。
编码检测与单次解析
pdf-inspector 会自动标记异常或损坏的字体编码,方便调用方切换回 OCR 流程。另外,PDF 文档只会解析一次——检测阶段与文本提取阶段共享解析结果,从而减少重复 I/O 操作。
多环境运行
项目提供 Python、Node.js、Rust 和浏览器 WebAssembly 版本,也支持命令行运行。浏览器侧的 WebAssembly 版本可以在浏览器和 Web Worker 中本地运行 Rust 解析器,内置 CMap,不需要把 PDF 文件传输到服务器。整个项目使用纯 Rust 编写,不依赖机器学习模型和外部服务,仅使用 lopdf 完成 PDF 解析。
基准测试
项目 README 给出了基于 opendataloader-bench 的测试结果。语料包含 200 份 PDF,只对比本地解析工具,测试过程中未启用 OCR。

从结果来看,pdf-inspector 在整体得分、阅读顺序和表格处理三个指标上表现都比较突出——它更适合看重处理速度、阅读顺序和表格结构的原生文本型 PDF。测试结果更新于 2026 年 7 月 31 日,环境为 Apple M4 Pro。
适用场景
批量 PDF 处理
如果应用需要持续接收报告、合同、论文或发票,可以先用 pdf-inspector 对文件分类,再分别送进本地文本提取、OCR 或人工复核流程。
RAG 知识库构建
pdf-inspector 可以将原生文本型 PDF 转成结构化 Markdown,适合作为 RAG 知识库构建流程中的前置解析工具。当然,后续还需要根据实际项目完成文本切分、向量化、检索和问答等步骤。
文档搜索与内容整理
对于企业报告、技术文档和研究资料,保留标题、列表、表格和阅读顺序,有助于后续搭建文档搜索系统。
本地化文档处理
项目使用纯 Rust 实现,不依赖机器学习模型和外部服务。浏览器 WebAssembly 版本能够在本地处理 PDF 文件,适合对数据传输安全有要求的应用。

Rust、Python 和 Node.js 项目
开发者可以根据现有技术栈选择接入方式:Python 项目使用 pdf_inspector,Node.js 项目安装 @firecrawl/pdf-inspector,Rust 项目通过 Cargo 添加依赖,浏览器项目则使用 WebAssembly 版本。
GitHub:https://github.com/firecrawl/pdf-inspector
如果你也在做 PDF 解析或文档管道相关的工作,不妨试试这套分流思路。也欢迎到云栈社区分享你的落地经验。