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ビルドとして利用可能です。

なぜ重要か

  • Web上の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 ライブラリをインストールできる場合。

ライセンス: MIT。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト