xberg-io/xberg
Polyglot document intelligence with a Rust core: extract text, metadata, images, tables, and structured data from 106 formats across 140 file extensions, plus code intelligence for 371 languages. Fifteen bindings, with CLI, REST API, and MCP server.
Xberg – 多言語対応のドキュメントインテリジェンスエンジン
何であるか – Xberg は、あらゆる種類のファイル(PDF、Officeドキュメント、画像、音声、アーカイブ、ソースコード、ウェブページなど)をクリーンで構造化されたテキストに変換するオープンソースのライブラリおよびCLIです。フォーマット検出、OCR、レイアウト解析、テーブル再構築、コード解析、およびオプションのLLMベースの拡張(要約、NER、埋め込み、スキーマ駆動型JSON抽出)を統合しています。コアはRustで書かれており、15言語のバインディング(Python、Node、Go、Java、C#、Ruby、PHP、Elixir、Dart、Swift、Kotlin、Zig、C FFIなど)を提供し、ライブラリ、コマンドラインツール、REST API、またはAIコーディングアシスタント向けの「MCP」サーバとして実行可能です。
主な機能(READMEに記載)
| 機能 | 得られるもの |
|---|---|
| 広範なフォーマット対応 | 141の拡張子を含む107種類のドキュメントフォーマット(PDF、Office、電子書籍、画像、音声、アーカイブ、メール、コード、科学ファイルなど)。 |
| ウェブインジェスチョン | 単一のURLを取得するか、コンパニオンの crawlberg エンジンでサイトをクロールする。 |
| 音声/動画の音声認識 | Whisper-ONNXモデル(tiny → large-v3)により、MP3、WAV、MP4、WebMなどからテキストに変換。 |
| 再帰的なアーカイブ抽出 | ネストされた .zip、.tar、.gz、.7z を安全な制限(zipボム保護、深さ制限)で処理。 |
| OCRバックエンド | Tesseract、PaddleOCR、Candle、またはVLMベースのOCR;言語自動検出、信頼度スコアの返却、プラグインによる拡張が可能。 |
| レイアウトとテーブル再構築 | MLモデル(PP-DocLayout-V3、RT-DETR)による読み順推定;テーブルモデル(TATR、SLANet)でクリーンなMarkdownテーブルを生成。 |
| コードインテリジェンス | Tree-sitterによる371言語のパース – 関数、クラス、インポート、ドキュメント文字列など。RAGパイプラインに有用。 |
| 埋め込みと検索 | ローカルONNX埋め込み、または liter-llm を通じて165のプロバイダAPIに対応;スパース、ラテインタクション、クロスエンコーダ再ランク化をサポート。 |
| 拡張機能 | 内蔵のNER、キーワード抽出(YAKE/RAKE)、要約、翻訳、機密情報のマスキング、ページ分類、QR検出、言語検出、トークン削減。 |
| スキーマ駆動型JSON抽出 | ローカルLLM(Ollama、LM Studio、vLLM)またはホストされたLLMを呼び出して、手動プロンプトなしで構造化JSONを生成。 |
| 複数の出力フォーマット | プレーンテキスト、Markdown、Djot、HTML、JSONツリー、Docling DocTags;カスタムレンダラーを登録可能。 |
| デプロイの柔軟性 | Rust crate、Python/Node等のパッケージ、Dockerイメージ、Helmチャート、または組み込みREST API(xberg serve)として使用可能。GPUはコアには不要;音声認識やLLMベースのステップのみでオプション。 |
使い方
| エントリーポイント | 一般的なコマンド/コードスニペット |
|---|---|
| CLI | xberg extract file.pdf(14のサブコマンド:extract、batch、detect、formats、serve、mcp、…)。HomebrewまたはScoopでインストール。 |
| Python | pip install xberg → from xberg import extract; output = extract("doc.pdf") |
| Rust | cargo add xberg → let out = xberg::extract(...).await?; |
| Node.js | npm install @xberg-io/xberg → await xberg.extract('doc.pdf') |
| Docker | docker run ghcr.io/xberg-io/xberg serve --port 8000 – 単一のPOSTエンドポイントを公開し、JSONまたはMarkdownを返却。 |
| MCPサーバ | xberg mcp --transport stdio – Claude、Cursor、GeminiなどAIコーディングアシスタントが直接呼び出せるプロトコルを提供。 |
どのような人にとって有益か?
- RAGパイプラインを構築する開発者 – 異種データソースからの高速かつ信頼性の高いテキスト抽出とオプションの埋め込みが必要。
- 大規模なドキュメントアーカイブを持つ企業 – 複数のフォーマット専用ツールのパッチワークを、1つのエンジンで置き換え可能。
- AIアシスタント付きコーディングツール – MCPモードにより、ClaudeやCursorなどのエージェントがXbergを呼び出して、リアルタイムでドキュメントを解析可能。
- 再現性のある前処理が必要な研究者 – 確定的なRustコア、広範なフォーマットリスト、および複数言語でのCIテスト。
クイックスタート例(Rust)
use xberg::{extract, ExtractInput, ExtractionConfig};
#[tokio::main]
async fn main() -> xberg::Result<()> {
let cfg = ExtractionConfig::default();
let out = extract(ExtractInput::from_uri("document.pdf"), &cfg).await?;
println!("{}", out.results[0].content);
Ok(())
}
Python、Node、Goなどでも同様のフローが利用可能で、類似のワンライナー補助関数があります。
詳細情報の入手先
- ドキュメント: https://docs.xberg.io(インストールガイド、CLIリファレンス、APIドキュメント)
- ベンチマーク: https://xberg.io/benchmarks(最も高速なオープンソースPDF→Markdown変換を主張)
- コミュニティ: Discord、Hugging Face組織、およびClaude、Cursor、Geminiなど向けのプラグインマーケットプレイス。
結論:Xbergは、フォーマット処理、OCR、レイアウト解析、コード解析、およびオプションのLLMベースの拡張を1つの高速なRustコアで統合したプロダクショングレードのクロスランゲージドキュメントインテリジェンスツールキットです。AIインフラストラクチャ分野に適しており、特にリトリーバー拡張生成(RAG)や、多様なソースからクリーンで構造化されたテキストを必要とするあらゆるワークフローに最適です。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト