ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

200ms 内判定 PDF 类型并提取 Markdown

200ms 内判定 PDF 类型并提取 Markdown 200ms 内判定 PDF 类型并提取 Markdown【免费下载链接】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 采样内容流10-50ms 出判定文本型 200ms 内产出 Markdown全程本地不走外部服务适合做文档处理流水线的开发者。 跑通效果一个函数拿到类型加 Markdown最典型的输入是一个路径输出是类型加干净 Markdownimport pdf_inspector result pdf_inspector.process_pdf(document.pdf) print(result.pdf_type) # text_based print(result.confidence) # 0.98 print(result.processing_time_ms) # 150 print(result.markdown[:120]) # # 标题\n\n正文段落……输出共四样类型取text_based、scanned、image_based、mixed之一置信度 0 到 1耗时毫秒数以及 Markdown 字符串扫描型为 None默认路径不硬抽文本。Markdown 里已经带好了标题层级、列表、表格和 URL 链接。硬指标opendataloader-bench 的 200 份文档上综合分 0.875阅读顺序 0.915表格 0.814全部处理完 0.47s。三种语言绑定各一条命令装好pip install pdf-inspector # Python npm install firecrawl/pdf-inspector # Node.js npm install firecrawl/pdf-inspector-wasm # 浏览器 WebAssembly预构建包覆盖 Linux x86_64/aarch64、macOS Intel/Apple Silicon、Windows x64Python 3.8。Rust 用户cargo add pdf-inspector即可从源码构建则是pip install maturin后跑maturin develop --release。Node.js 返回值是驼峰式result.pdfType取TextBased这类值浏览器 wasm 内嵌 CMap无服务器往返。跑通两条核心调用链完整抽取与轻量判定最常用路径process_pdf 一步到位文档只解析一次检测和抽取共享同一份加载结果没有重复 I/O传pages可以只处理指定页r pdf_inspector.process_pdf(report.pdf, pages[0, 1, 2]) print(r.pages_with_tables) # [2]检出表格的页1 索引 print(r.pages_with_columns) # 多栏布局的页 print(r.has_encoding_issues) # 是否存在字体编码问题输出是两个页码列表加一个布尔值可以直接用来判断这份文档布局复不复杂。按需调参仅检测与坐标定位只想做路由决策时用detect_pdf跳过抽取要自己排布版式用extract_text_with_positions拿带坐标的原始文本# 轻量类型判定不抽取10-50ms d pdf_inspector.detect_pdf(doc.pdf) print(d.pdf_type, d.confidence, d.pages_needing_ocr) # 带 X/Y 坐标、字体名、粗斜体标记的文本项 items pdf_inspector.extract_text_with_positions(doc.pdf) print(items[0].text, items[0].x, items[0].y, items[0].font)前者输出形如(scanned, 0.92, [3, 7])后者是 TextItem 列表每段文字一条粗斜体、下划线标记齐全。⚠️ 三个坑页码索引、wasm 初始化、编码标志页码索引有两套process_pdf、extract_text_with_positions的pages参数是 0 索引而detect_pdf/process_pdf返回的pages_needing_ocr和TextItem.page是 1 索引classify_pdf的pages_needing_ocr又是 0 索引。跨 API 对账前先查文档确认哪套。wasm 要先await init()浏览器里import init, { processPdf }之后首次调用前必须await init()漏了会直接抛错。has_encoding_issues为 true 时别信文本该标志表示字体编码损坏抽出的文字可能乱码建议把对应页路由到 OCR 兜底。完整 Python API 与类型定义docs/python.mdNode.js 绑定与选择性 OCR 参数napi/README.md浏览器 WebAssembly 用法wasm/README.md。【免费下载链接】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),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进