firecrawl/pdf-inspector
Fast Rust library for PDF inspection, classification, and text extraction. Intelligently detects scanned vs text-based PDFs to enable smart routing decisions.
pdf-inspector – 快速、智能的 PDF 分类与提取
功能特色
- 快速判断 PDF 是基于文字、扫描件、基于图像还是混合型(10-50 ms),并提供置信度分数。
- 对于基于文字的 PDF,它能提取包含版面信息(字体、X/Y 坐标、旋转角度)的文字,并将文档转换为干净的 Markdown。
- 检测标题、列表、代码块、表格(基于矩形与启发式)、粗体/斜体、URL、分页符等。
- 可选的选择性 OCR:仅将缺乏可提取文字的页面发送至本地的 PP-OCRv6 模型,避免全文档 OCR 的延迟。
- 提供原生 Rust crate、CLI (
pdf2md/detect-pdf)、Python 与 Node.js 包,以及适用于浏览器的 WebAssembly 版本。
为何重要
- 网络上约有一半的 PDF 已经是基于文字的;对所有文件执行 OCR 会浪费 CPU 和金钱。pdf-inspector 让您仅将真正需要扫描的页面路由至 OCR,降低成本与延迟。
- 该库将 PDF 解析一次,并在检测与提取之间共享该表示,从而加速整个流程。
- 在 200 份 PDF 的语料库基准测试中,其整体质量、阅读顺序、表格处理与速度(整组测试仅需 0.47 秒,而替代方案需数秒)均优于同类工具。
如何使用
- Rust:
cargo add pdf-inspector;调用process_pdf("file.pdf")以获取pdf_type与选用的 Markdown。 - Python:
pip install pdf-inspector;pdf_inspector.process_pdf("file.pdf")。 - Node:
npm install @firecrawl/pdf-inspector;processPdf(buffer)。 - 浏览器: 导入 WASM 包并调用
processPdf(uint8Array)。 - CLI:
pdf2md file.pdf获取 Markdown,detect-pdf file.pdf仅进行分类。
关键技术细节
- 分类时会采样部分页面,检查文字 (
Tj/TJ) 与图像 (Do) 运算符。 - 提取时会遍历 PDF 内容流,建立带有字体度量与位置的
TextItem,然后将其分组为行、列与表格。 - 表格检测结合了绘图指令中的矩形检测与文字的启发式对齐。
- Markdown 转换使用字体大小比例来判断标题层级,并使用字体名称模式来判断粗体/斜体。
适用场景
- 您需要快速、本地化处理大量 PDF(报告、研究论文、发票、法律文档)。
- 您希望在不支付云端 OCR 服务费用的情况下,获得包含表格与正确阅读顺序的结构化 Markdown。
- 您在可以使用 Rust、Python、Node 或浏览器的环境中运行,且在需要时可以安装可选的 PDFium/ONNX Runtime 库进行 OCR。
许可: MIT。
相关
- 项目
- 项目
- 项目
- 项目
- 项目