UnstructuredやDoclingを圧倒!Kreuzbergが実現するCPUだけでの超高速文書処理

UnstructuredやDoclingを圧倒!Kreuzbergが実現するCPUだけでの超高速文書処理 プログラミング

大量のPDFやWord文書からテキストを抽出する作業に苦労していませんか?

例えば、RAGアプリケーションの開発ですね。
数千の文書を処理する必要が出てきます。

そのような場合に効果的なのが、Redditで話題になっていたKreuzbergというライブラリです。
今回は、このライブラリの実力を解説します。

そして、なぜ他のツールより優れているのかも説明していきます。

CPUだけで動く高速テキスト抽出

Kreuzbergの最大の特徴は、GPUを必要としないことです。
つまり、一般的なノートPCでも高速に動作します。

多くのAI系ツールはGPUを前提としています。
しかし、すべての環境でGPUが使えるわけではありません。
特にサーバーレス環境やコンテナ環境では、CPUのみで動作することが重要になります。

Kreuzbergは、この制約を見事に解決しています。
毎秒32ファイルという処理速度を実現。
それでいて、メモリ使用量は約360MBに抑えられているのです。

実際のベンチマーク結果が示す圧倒的な性能

Reddit投稿者が公開したベンチマーク結果を見て驚きました。
競合ツールと比較すると、その差は歴然としています。

例えば、Unstructured.ioは業界でよく知られたツールです。
しかし、処理速度は毎秒4.8ファイルにとどまります。

さらに、メモリも1.3GB必要とします。
インストールサイズも146MBと大きめです。

IBMのDoclingはさらに重い。
毎秒0.26ファイルという処理速度です。

そして、メモリは1.7GBも消費します。
高度な機械学習機能は魅力的ですが、実用的とは言えません。

最も注目すべきは成功率です。
Kreuzbergだけが100%の成功率を達成しています。
タイムアウトやエラーが一切発生しないのです。

バージョン3.11で追加された注目機能

最新版では、単なるテキスト抽出を超えた機能が追加されています。

AI文書分類機能
請求書、契約書、フォームなど、文書の種類を自動判別できるようになりました。
これにより、抽出後の処理を効率化できます。

MCPサーバー統合
ClaudeなどのAIアシスタントと直接連携できるようになりました。
抽出したテキストをそのままAIに渡して分析できるわけです。

パスワード付きPDF対応
暗号化された文書も処理できます。
そのため、セキュアな環境での利用も可能になりました。

CLIツール
uvx kreuzberg extractというコマンドで、プログラミング不要でテキスト抽出ができます。

実装の簡単さも魅力

実装は驚くほど簡単です。
以下のコードを見てください。

from kreuzberg import extract_file_sync

# 同期処理でファイルからテキスト抽出
result = extract_file_sync("document.pdf")
print(result.content)
print(f"MIME type: {result.mime_type}")
print(f"Metadata: {result.metadata}")

非同期処理にも対応しています。

import asyncio
from kreuzberg import extract_file

async def extract_async():
    result = await extract_file("document.pdf")
    return result.content

# 実行
asyncio.run(extract_async())

複数ファイルの一括処理も可能です。

from kreuzberg import batch_extract_file_sync

file_paths = ["document1.pdf", "document2.docx", "image.jpg"]
results = batch_extract_file_sync(file_paths)

for path, result in zip(file_paths, results):
    print(f"File: {path}")
    print(f"Content: {result.content[:100]}...")

数行のコードで実装できます。
同期・非同期の両方に対応。

そのため、既存のアプリケーションにも組み込みやすいのです。
実装は驚くほど簡単です。以下のコードを見てください。

from kreuzberg import ExtractorFactory

# エクストラクターの作成
extractor = ExtractorFactory.create()

# ファイルからテキスト抽出
result = extractor.extract("document.pdf")
print(result.text)

# 非同期処理にも対応
async def extract_async():
    result = await extractor.extract_async("document.pdf")
    return result.text

数行のコードで実装できます。同期・非同期の両方に対応。そのため、既存のアプリケーションにも組み込みやすいのです。

どのような場面で活用できるか

Kreuzbergは、特に以下のような場面で威力を発揮します。

RAGアプリケーションの構築
大量の文書を高速に処理する必要があります。
Kreuzbergの処理速度とメモリ効率の良さが、システム全体のパフォーマンスを向上させます。

ドキュメント管理システム
様々な形式のファイルを扱う必要があります。
Word、Excel、PowerPointからテキストを抽出できるため、統一的な処理が可能になります。

サーバーレス環境での利用
71MBという小さなインストールサイズが魅力です。
低メモリ消費により、AWS LambdaやGoogle Cloud Functionsでも問題なく動作します。

他のツールとの使い分け

もちろん、すべてのケースでKreuzbergが最適というわけではありません。

高精度なレイアウト解析が必要な場合は、SuryaOCRのようなGPUベースのツールが適しています。
ただし、インフラコストが大幅に増加することは覚悟する必要があります。

AGPLライセンスが問題にならない場合は、PyMuPDFも優れた選択肢です。
PDF処理に特化しています。
そして、非常に高速で高品質な抽出が可能です。

Rustベースの高速処理を求めるなら、Extractousも検討に値します。
メモリ管理が優れており、安定性は抜群です。
ただし、対応フォーマットは限定的です。

MITライセンスがもたらす自由度

KreuzbergはMITライセンスで提供されています。
商用利用も自由です。
ソースコードの改変も可能です。

バージョン3.5でGPL依存を完全に排除しました。
これにより、ライセンスの心配なく利用できるようになったのです。

企業での採用において、これは大きなアドバンテージになります。

パフォーマンス比較表

ツール名処理速度メモリ使用量インストールサイズ成功率
Kreuzberg32ファイル/秒360MB71MB100%
Unstructured4.8ファイル/秒1.3GB146MB98.8%
Markitdown26ファイル/秒*360MB251MB98.2%
Docling0.26ファイル/秒1.7GB1GB以上98.5%

まとめ

Kreuzbergは、実用性を重視したテキスト抽出ライブラリです。

高速処理、低メモリ消費、100%の成功率。
これらの特徴は、実際の開発現場で大きな価値を発揮します。

GPUなしで動作するため、導入のハードルも低い。
MITライセンスにより、商用プロジェクトでも安心して使えます。

ドキュメント処理の自動化を検討しているなら、一度試してみる価値があります。
特にRAGアプリケーションの開発では、処理速度の違いを実感できるはずです。

GitHubでソースコードも公開されています。
実装例やベンチマークの詳細も確認できます。

興味がある方はチェックしてみてください。

タイトルとURLをコピーしました