活用術 · Google Cloud Blog & Gemini API Documentation
GeminiのJSONスキーマ制約で文書から構造化データを抽出する
写真: Markus Spiske Unsplashより
Geminiの構造化出力モードは、応答を事前定義されたJSONスキーマに強制し、フリーテキスト解析の不整合性を排除する。この手法により、請求書、レポート、契約書、フォームなどの文書処理が、脆弱なテキストスクレイピングから、信頼性の高い本番対応のデータ抽出へと変わり、データベースや自動化ワークフローに直接統合できるようになる。
言語モデルに文書からデータを抽出させるよう依頼すると、通常は後で解析しなければならないテキストが返ってくる。時にはJSON、時には段落、時にはその中間のようなものだ。この予測不可能性が自動化パイプラインを壊してしまう。Geminiの構造化出力モードは、モデルの出力を事前に定義したスキーマに準拠させることでこの問題を解決する。Geminiが返すものを解析する代わりに、正確な構造——フィールド名、データ型、必須フィールド、列挙型——を指定し、モデルは毎回有効で型付けされた出力を返す。
ワークフローはスキーマの定義から始まる。請求書抽出システムの場合、次のように指定するかもしれない:title(文字列)、invoice_number(文字列)、date(文字列)、line_items(item_name、quantity、unit_price、subtotalを持つオブジェクトの配列)、total_amount(数値)、payment_terms(文字列)。このスキーマを文書とともにGeminiに渡すと、モデルはその構造に厳密に準拠したJSONを返す。解析エラーも、型の不一致も、システムが数値を期待しているのにフィールドが予期せず文字列として現れるようなエッジケースもない。
実際のワークフローでの実用的な違いはすぐに現れる。毎月200件の請求書を処理する買掛金チームは、以前はデータをスプレッドシートに抽出し、フォーマットエラーを手動で修正し、会計システムにアップロードしていた。構造化出力を使えば、請求書PDFをGeminiにアップロードし、数秒で検証済みのJSONを取得し、それを直接システムにパイプする——手動介入はゼロだ。法的文書を分類するコンプライアンスチームは、分類結果だけでなく、抽出されたメタデータ(当事者、契約種別、更新日、賠償責任上限額)を、文書管理システムと統合される事前定義構造で受け取る。
Gemini 2.0以降のモデルは最大100万トークンの文書を処理できるため、複数ページにわたるレポート、契約書、財務諸表をチャンク分割やコンテキスト損失なしで単一リクエストで送信できる。また、モデルは視覚的な構造も保持する——テーブルはリストに平坦化されず、テーブルのまま維持される——これは複雑なレイアウトからの正確なデータ抽出にとって重要だ。開発者にとって、これは脆弱な正規表現解析や手作りの出力バリデータの必要性を排除する。制約はモデルレベルで発生するため、Geminiは後でクレンジングが必要なテキストジェネレーターではなく、信頼性の高いデータ抽出エンジンとなる。
情報源とクレジット