Skip to content

LangExtract 非公式ガイドGoogle AI 構造化データ抽出完全攻略

Gemini、OpenAI、Ollama ローカルモデルを活用して、あらゆるテキストからデータを抽出するための開発者向けハンドブック。

非公式ガイド

これば開発者によって維持されているコミュニティガイド(Unofficial Guide)であり、Google 公式ではありません。

なぜこのガイドが必要なのか?

公式ドキュメントは優れていますが、ローカルモデルの導入コスト最適化実践的なユースケースについては情報が不足しがちです。

このガイドは、実際の開発現場での経験に基づき、Ollama の設定長文ドキュメントの処理など、実務で役立つノウハウを提供します。


クイックスタート (Quick Start)

30秒で最初の抽出タスクを実行しましょう。

1. インストール (Install)

pip でインストールします。Python 3.9 以上が必要です。

bash
pip install langextract

2. API キーの設定

デフォルトでは Google Gemini が使用されます。Google AI Studio からキーを取得してください。

bash
export LANGEXTRACT_API_KEY="your-api-key-here"

3. 最初の抽出デモ (Demo)

簡単なテキストからキャラクター情報を抽出します。Few-shot Example の提供が必要です。

python
import langextract as lx

# 抽出プロンプトを定義
prompt = "キャラクターとその感情を抽出してください。"

# モデルをガイドするための Few-shot Example
examples = [
    lx.data.ExampleData(
        text="ロミオ: おお、向こうの窓から漏れるあの光は何だ?",
        extractions=[
            lx.data.Extraction(
                extraction_class="キャラクター",
                extraction_text="ロミオ",
                attributes={"感情状態": "驚嘆"}
            ),
        ]
    )
]

# 入力テキスト
text = "ジュリエットは星空を見上げ、ロミオを想っていた。"

# 抽出を実行 (デフォルトの Gemini Flash モデルを使用)
result = lx.extract(
    text_or_documents=text,
    prompt_description=prompt,
    examples=examples,
    model_id="gemini-2.5-flash",
)

print(result.extractions)
print(result.extractions)

4. 結果の可視化 (Interactive Visualization) 📊

LangExtract のキラー機能です。検証を容易にするためのインタラクティブな HTML レポートを生成します。

python
# 1. JSONL として保存
lx.io.save_annotated_documents([result], output_name="extraction_results.jsonl", output_dir=".")

# 2. インタラクティブな HTML を生成
html_content = lx.visualize("extraction_results.jsonl")
with open("visualization.html", "w") as f:
    f.write(html_content.data if hasattr(html_content, 'data') else html_content)

可視化サンプルの表示


LLM 設定ガイド

異なるモデルをどのように接続しますか?

ローカルモデル (Ollama) 🏠

プライバシー保護、コストゼロ。開発テストに最適です。

  1. Ollama のインストール: ollama.com からダウンロード。
  2. モデルの取得: ollama pull gemma2:2b
  3. サーバー起動: ollama serve
  4. コード設定:
python
import langextract as lx

result = lx.extract(
    text_or_documents=text,
    prompt_description=prompt,
    examples=examples,
    model_id="gemma2:2b",  # Ollama provider を自動選択
    model_url="http://localhost:11434",
    fence_output=False,
    use_schema_constraints=False
)

OpenAI GPT-4 🧠

複雑な推論タスクに適しています。依存関係のインストールが必要: pip install langextract[openai]

bash
export OPENAI_API_KEY="sk-..."
python
import os
import langextract as lx

result = lx.extract(
    text_or_documents=text,
    prompt_description=prompt,
    examples=examples,
    model_id="gpt-4o",  # OpenAI provider を自動選択
    api_key=os.environ.get('OPENAI_API_KEY'),
    fence_output=True,
    use_schema_constraints=False
)

注意

OpenAI モデルは fence_output=Trueuse_schema_constraints=False が必要です。LangExtract は OpenAI 用の Schema 制約をまだ実装していないためです。

OpenAI 互換 API 🔌

LangExtract は、DeepSeek (V3/R1)Qwen (Alibaba)Doubao (ByteDance) など、すべての OpenAI 互換 API をサポートしています。

python
import langextract as lx

result = lx.extract(
    text_or_documents=text,
    prompt_description=prompt,
    examples=examples,
    model_id="deepseek-chat",
    api_key="your-api-key",
    language_model_params={
        "base_url": "https://api.deepseek.com/v1"  # プロバイダーの URL に置き換え
    },
    fence_output=True,
    use_schema_constraints=False
)
    use_schema_constraints=False
)

Google Vertex AI Batch (エンタープライズバッチ処理) 🏢

大規模なタスクでは、コストを節約するためにバッチモードを有効にすることをお勧めします。

python
result = lx.extract(
    ...,
    language_model_params={"vertexai": True, "batch": {"enabled": True}}
)

高度なインストール:Docker 🐳

ローカル環境を汚さずに直接実行:

bash
docker run --rm -e LANGEXTRACT_API_KEY="your-api-key" langextract python your_script.py

長文ドキュメントの処理 (Scaling to Longer Documents) 📚

コンテキストウィンドウを超える書籍やPDFをどう処理するか? LangExtract は チャンク化 (Chunking)並列処理 のメカニズムを内蔵しています。

テキストを手動で分割する必要はありません。URL または長文を直接渡すだけです:

python
# 例:『ロミオとジュリエット』全編を処理
result = lx.extract(
    text_or_documents="https://www.gutenberg.org/files/1513/1513-0.txt",
    prompt_description=prompt,
    examples=examples,
    # コアパラメータ
    extraction_passes=3,    # 再現率 (Recall) を向上させるための複数回抽出
    max_workers=20,         # 速度向上のための並列ワーカー数
    max_char_buffer=1000    # コンテキストバッファサイズ
)

実践ユースケース

🏥 医療レポート抽出

カルテから薬品名投与量頻度を構造化データとして抽出します。 完全な例を見る

📚 長文ドキュメント処理

トークン制限を超える長いテキスト(PDFや書籍など)を処理します。 完全な例を見る

🇯🇵 日本語・多言語処理

日本語や中国語などの非英語テキストの処理。 完全な例を見る


よくある質問 (FAQ)

Q: LangExtract と Docling の違いは何ですか? A: Docling は PDF やドキュメントを Markdown 形式に解析することに特化しています(レイアウト解析など)。一方、LangExtract はテキストから 構造化データ(JSON)を抽出すること に特化しています。これらを組み合わせるのが最強です:Docling で解析し、LangExtract でデータを抽出します。

Q: Azure OpenAI やその他の互換モデルは使えますか? A: はい、使えます。 LangExtract は OpenAI 互換 API を持つすべてのモデル(DeepSeek, Groq など)をサポートしています。base_url をプロバイダーのエンドポイントに変更するだけです。

Q: 長いドキュメント(書籍や長いPDF)は処理できますか? A: はい。LangExtract にはチャンク処理(Chunking)メカニズムが組み込まれています。長文抽出の例 をご覧ください。長いテキストを自動的に分割し、並列または順次処理して結果を統合できます。

Q: ローカル環境(オフライン)で動かせますか? A: はい、可能です。 Ollama と統合することで、Llama 3 や Gemma などのモデルをローカルで実行できます。これは 完全無料 であり、データが外部に送信されないため、プライバシー重視のデータ(医療記録や契約書)に最適です。

Q: LangExtract の利用は有料ですか? A: ライブラリ自体は 100% オープンソースで無料です。 コストがかかるのは LLM プロバイダー(Gemini, OpenAI)の API 利用料のみです。Ollama でローカルモデルを使用する場合は、完全に無料です。

非公式ガイド。Google とは関係ありません。