← すべての記事

FirecrawlがPDF変換ライブラリpdf-inspectorをオープンソース化:OCR不要でミリ秒単位のMarkdown変換

紙の資料から光る文字列と表が立体的に浮かび上がるイメージ

Webスクレイピングツールで知られるY CombinatorスタートアップのFirecrawlが、pdf-inspectorをオープンソース化しました。これはミリ秒単位でPDFがテキストベースかスキャン画像かを判定し、テキストベースの文書をOCRなしでクリーンなMarkdownに変換するRustライブラリです。チームの推計によると、実際のワークロードの約54%のPDFはテキストベースなので、これらを遅くて高コストなOCRにかける必要はありません。

PDFをモデルに読み込ませた経験があれば、あの感覚を知っているはずです。契約書でも報告書でも書籍でも、ファイルは問題なく開くのにテキストがコピーできない、あるいはコピーすると文字化けする。従来のパーサーは表で詰まるか、すべてのページをOCRに通して秒単位の時間とコストを浪費します。pdf-inspectorはまさにこの痛点を突いています。ファイルが何なのかを素早く判定し、本当にスキャン画像の場合だけOCRを使うのです。

まず分類、次に抽出

ライブラリは1回のパスでPDFを4つのタイプ(TextBased、Scanned、ImageBased、Mixed)に分類し、0から1の信頼度スコアとページごとのルート(どのページをテキストとして読み、どのページをOCRに送るか)を返します。分類にかかる時間は10~50ミリ秒。テキストページについては座標、フォント、読み順序付きで抽出し、見出し、リスト、表、リンクを含むMarkdownとして出力します。

注目の数値

200件のPDFを含むopendataloader-benchコーパスで、pdf-inspectorは全セットを0.47秒で処理しました。比較すると、pymupdf4llmは17秒、markitdownは16秒かかります。しかも品質スコアは最高で、総合0.875(pymupdf4llmの0.735、markitdownの0.589に対して)。表の処理では特に優位で、0.814(対して0.401と0.273)を記録しています。

その他の機能

新聞のような多段組レイアウト、右から左へのテキスト、CIDフォント、文字エンコード破損の検出に対応。そして選択的OCR:混在PDFでスキャンページが数ページだけある場合、PP-OCRv6 Smallを使ってそのページだけをローカルでOCR処理でき、文書全体を通す必要がありません。

限界もある

正直に言えば、本物のスキャン画像や書類の写真には依然としてOCRが必要で、pdf-inspectorはそこでは魔法を使えません。単に、不要なファイルにOCRを無駄遣いしないだけです。数式や複雑な組版がテキストと混在するレイアウトも苦手とすることがあります。そして、これはすぐに使えるサービスではなくライブラリなので、利用するには多少のコードを書く必要があります。

紙の資料から光る文字列と表が立体的に浮かび上がるイメージ

Python、Node.js、ブラウザ向けWebAssemblyのバインディングが用意されており、同じRustパーサーがサーバーなしでブラウザ上で直接動作します。GitHubリポジトリはすでに17,000スターを超えています。PDFをモデルに読み込ませることが多いなら、一見の価値ありです。