pdf-inspector:3 行代码在本地跑通 PDF 分类与文本提取
【免费下载链接】pdf-inspectorFast Rust library for PDF inspection, classification, and text extraction. Intelligently detects scanned vs text-based PDFs to enable smart routing decisions.项目地址: https://gitcode.com/GitHub_Trending/pdf/pdf-inspector
拿到一份 PDF,你很难一眼分清它是不是文本型——上不上 OCR 全凭感觉,猜错就白烧算力,还可能把响应拖到几十秒。pdf-inspector 是 Rust 写的本地 PDF 分类与文本提取库,10-50ms 判类型、200ms 内抽完文本型,全程不碰任何外部服务。
pip 一行装好,3 行出结果
Python 版的预编译 wheel 覆盖 Linux、macOS、Windows,装完直接import就能跑,无需 Rust 工具链:
pip install pdf-inspectorimport pdf_inspector r = pdf_inspector.process_pdf("doc.pdf") print(r.pdf_type, r.markdown)Node.js(@firecrawl/pdf-inspector)、浏览器 WASM、Rust crate 和 CLI 工具pdf2md也都有对应入口,按你的运行时挑一条即可。
跑通上面三行后,看看它到底能替你干什么。
它能替你做什么:分类、抽 Markdown、拿坐标
判类型(10-50ms):process_pdf顺带返回pdf_type(text_based/scanned/image_based/mixed)、0-1 的confidence,以及pages_needing_ocr这个逐页该走 OCR 的页码列表。意味着你不用等用户盯着上传的加载动画——趁这几十毫秒就能把"本地抽"还是"送 OCR"的分流策略定下来,连哪几页要补 OCR 都提前知道。
文本型本地抽成 Markdown(200ms 内):标题分级、列表、等宽字体识别出的代码块、表格、URL 转链接,直接产出干净 Markdown。在 200 份文档的 opendataloader-bench 语料上,它整体得分 0.875、表格(TEDS)0.814,完整跑完 200 份只要 0.470s,是五个被测引擎里最快的。而据项目口径,约 54% 的 PDF 本不需要 OCR——这部分你根本不用为它们付 OCR 的钱。
带坐标的文本项:extract_text_with_positions给出每段文字的 X/Y 坐标、字号、是否加粗/斜体。意味着做高亮、点击定位、或按位置切片喂给 RAG 时,坐标和样式是现成的,不用自己反推版面。
基础调用之外,还有一个高频场景值得知道。
进阶一瞥:按页码抽 + 拿坐标
要拿到每段文字的位置信息喂给下游(高亮、定位、RAG 切片)时,用带坐标的抽取,pages参数顺带限定只看哪几页:
items = pdf_inspector.extract_text_with_positions("doc.pdf", pages=[0, 2]) for it in items[:5]: print(f"{it.text} @ ({it.x:.0f},{it.y:.0f}) size={it.font_size}")pages是 0 起始的页码列表,返回的每个item都带text / x / y / font_size / is_bold,可直接对接高亮或切片逻辑。
想继续深入,这几个入口直接可用。
下一步
- 查完整 API → docs/python.md
- Node 绑定 → napi/README.md
- 浏览器跑 → wasm/README.md
- 看基准数据 → docs/benchmarking.md
挑一份你手头的 PDF,跑一遍detect_pdf,看看它判得准不准。
【免费下载链接】pdf-inspectorFast Rust library for PDF inspection, classification, and text extraction. Intelligently detects scanned vs text-based PDFs to enable smart routing decisions.项目地址: https://gitcode.com/GitHub_Trending/pdf/pdf-inspector
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考