Skip to content

pdf-inspector

PDF 结构解析,为速度而生

毫秒级判断 PDF 是文本型、扫描型还是混合型,把文本型 PDF 直接转成干净、带位置信息的 Markdown——约 54% 的 PDF 根本不需要 OCR。开源 Rust 库,纯本地运行,支持 Node.js / Python / Rust / 浏览器 / CLI。

pdf-inspector

在线解析 Demo

由 @firecrawl/pdf-inspector-wasm 驱动,拖入一份 PDF,先看类型判定,再拿 Markdown,全程在你的浏览器里完成。

把 PDF 拖到这里,或点击选择文件

解析在浏览器本地完成,文件不会上传到任何服务器

PDFMarkdown类型检测多栏还原表格中日韩支持

pdf-inspector

pdf-inspector 是什么

来自 Firecrawl 的开源 PDF 解析引擎,也是混合 OCR 管线的「第一道关卡」

pdf-inspector 是一个用 Rust 编写的开源库,解决的是 LLM 时代最常见的文档难题:拿到一份 PDF,先搞清楚它能不能直接提取文字,能提就本地快速提取,不能提再送去昂贵的 OCR。

它能在约 10–50ms 内给出类型判定(TextBased / Scanned / ImageBased / Mixed)和置信度分数,并精确列出哪些页需要 OCR。对占比约 54% 的原生文本 PDF,它直接在本地 200ms 内完成提取和 Markdown 转换——不加载 OCR 模型、不调用外部服务、一个字节都不上传。

单次解析,全程复用:文档只加载一次,检测、布局分析、表格识别和 Markdown 渲染共享同一次解析结果,没有重复开销。

针对真实世界的脏 PDF 做了大量工程:CID/Type0 字体通过 ToUnicode CMap 解码,中日韩内嵌 CMap;报纸式多栏自动还原阅读顺序;表格同时支持矩形框线和对齐启发式两种检测;编码损坏的页面会被标记出来,交给上层路由到 OCR。

查看完整介绍 →

pdf-inspector

核心能力

一条流水线上真正拿得出手的六件事

detector.rs

📄 文档分类

约 10–50ms 内判定 TextBased / Scanned / ImageBased / Mixed 四种类型,返回 0–1 置信度分数和逐页信号,为下游路由提供依据。

layout.rs

🧭 阅读顺序还原

从带位置的文本重建多栏、报纸式版面,跨栏的逻辑流保持正确,RTL(从右向左)文本同样支持。

tables/

📊 表格结构

矩形绘制操作、线网格与文本对齐启发式三路合并,还原单元格、财务报表和跨页续表。

tounicode.rs

🔤 字体解码

CID 与 Type0 字体经 ToUnicode CMap 正确解码,常见内嵌字体和字符编码有回退方案;解码损坏会被自动标记以便回退 OCR。

markdown/

📝 语义 Markdown

标题(按字号比例分级)、列表、代码块、粗斜体、链接、表格、分页标记一次成型,输出对 token 友好、喂给大模型正合适。

napi/ · wasm/

📦 五端打包

npm、PyPI、crates.io 三渠道安装,浏览器 WASM 单线程构建无需跨域隔离,npm 包附带 TypeScript 定义与 CLI。

pdf-inspector

处理流水线

一次解析,五个阶段,直达结构化输出

1

检测 detector

抽样渲染页面像素,10–50ms 判定文档类型与置信度,列出需要 OCR 的页码。只关心类型?停在 detectPdf 这一层即可。

2

提取 extractor

按内容流拉出每个文本片段的位置、字体、字号,CID/Type0 字体走 ToUnicode CMap 解码成真正的 Unicode。

3

排版 layout

把碎片重组成行、段落和阅读顺序:多栏、报纸式版面自动归位,RTL 文本方向正确处理。

4

表格 tables

框线检测与文本对齐启发式双模式识别单元格,财务表格与跨页续表都能接上。

5

输出 markdown

标题、列表、表格、链接、强调、分页标记序列化成干净的 GitHub Flavored Markdown,可直接进 RAG 或微调管线。

💡 只需要类型判定做路由?用 detectPdf/detect_pdf,跳过全部提取开销。

pdf-inspector

为什么选择 pdf-inspector

跟 liteparse、opendataloader、markitdown 们放一起比,快且准

🏆 综合评分领先

官方 opendataloader-bench 基准(200 份真实 PDF):综合得分 0.875 排名第一,表格 TEDS 0.814、阅读顺序 0.915 同样居首。

🚀 快出一个数量级

200 个文档全量跑完只要 0.470 秒——liteparse 是 0.750s,opendataloader 2.569s,pymupdf4llm 和 markitdown 都要 16s 以上。

🔒 省钱的架构设计

先分类后提取:文本型 PDF 本地直转,只有真正需要的页面才送 OCR。不装模型、不起服务,WASM 版连设备都不出。

查看完整基准数据 →

pdf-inspector

快速上手

从第一条命令到五端 API 全掌握

pdf-inspector

常见问题解答

关于类型判定、隐私、性能与授权的常见疑问。

pdf-inspector 是什么?

pdf-inspector 是 Firecrawl 开发的开源 Rust 库,用于 PDF 分类、文本提取和 Markdown 转换。它能毫秒级判断 PDF 是文本型还是扫描型,把文本型 PDF 本地转换成干净、带位置信息的 Markdown,也是 Firecrawl 混合 OCR 管线的底层解析引擎。

四种 PDF 类型是什么意思?

TextBased(原生文本型)可以直接提取;Scanned(扫描型)和 ImageBased(图片型)需要 OCR;Mixed(混合型)部分是文本部分是图片。判定结果附置信度分数和逐页明细,会精确告诉你第几页需要 OCR。

我的文件会被上传吗?

不会。pdf-inspector 是纯本地解析:Rust/Python/Node 版在你的设备上运行;浏览器版通过 WebAssembly 在页面内完成解析,文件不会离开你的设备。本站首页的 Demo 就是这样的本地实现。

支持扫描版 PDF 吗?

网页 Demo 不含 OCR,遇到扫描件会明确提示。原生版本内置选择性 OCR(可选启用):只把被质量检查拒绝的页面送去 OCR,其余页面照常走本地快速提取,每页还会标注内容来源(native / ocr / fused)。

解析速度有多快?

类型判定约 10–50ms,文本型 PDF 全流程在 200ms 内完成。官方 opendataloader-bench 基准里,200 份文档总耗时 0.470 秒,比次快的 liteparse 还快三成以上,比 markitdown 快 30 多倍。详见性能基准页

跟 markitdown 相比怎么样?

同一基准下:综合得分 0.875 vs 0.589,标题识别 0.788 vs 0.000(markitdown 几乎不识别标题层级),速度更是数量级的差距。详见对比页

开源吗?可以商用吗?

完全开源,MIT License。可以自由使用、修改、商用。仓库在 github.com/firecrawl/pdf-inspector

可以在哪些语言里用?

Rust(pdf-inspector)、Node.js(@firecrawl/pdf-inspector)、Python(pdf-inspector)、浏览器(@firecrawl/pdf-inspector-wasm),以及随包发布的 CLI:pdf2mddetect-pdf。详见安装下载页

在线体验与安装

把 PDF 拖进来,
类型和 Markdown 同时带走。

你可以在浏览器里先解析一份试试,也可以装进你的项目或服务。
毫秒级分类、多栏还原、表格识别、纯本地处理,

从今天起,别再为不需要 OCR 的 PDF 花 OCR 的钱。