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。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト