Document Understanding の抽出パターン
Document Understanding の抽出パターンは主に以下3つがあり、帳票の状況に応じて選択します。複数組み合わせることも可能です。
今回は生成AI抽出器について紹介します。
生成AI抽出器の特徴
生成AI抽出器には、以下のような特徴があります。
- 実装が容易で柔軟性が高い(学習不要・自然言語で設定可)
- ML抽出器のようなモデル作成は不要
- ML抽出器のようなモデルの学習コスト・サービングコスト不要
- 抽出対象の有無に関わらず一律1ページあたり1AI Unitを消費
- 表形式のデータ抽出には未対応
生成AI抽出器実践(開発)
生成AI抽出器を使用してドキュメントの内容を抽出する方法を記載します。
①プロジェクト作成・パッケージインストール
プロジェクトを新規作成し、パッケージ「UiPath.IntelligentOCR.Activities v6.24.0」をインストールする。

②テスト用帳票の準備
プロジェクトフォルダにDataフォルダを新規作成し、その配下にInputフォルダを作成し、テスト用帳票を配置する。

③タクソノミー登録
Studio > デザイン タブの「タクソノミーマネージャー」を起動する。

任意のグループ・カテゴリを作成し、その中にドキュメント種類を登録する。

読み込むフィールドを定義する。※生成AI利用時にフィールドの種類を区別しても抽出の有効な情報には使われないため、種類はすべて「Text」にする。

④タクソノミー読み込み
『タクソノミーを読み込み』アクティビティを配置する。
■出力設定
・タクソノミー: taxonomy

⑤ドキュメントをデジタル化
『ドキュメントをデジタル化』アクティビティを配置する。OCRはUiPath Extended Languages OCRを指定する。
■入力設定
・ドキュメントパス: 読み込む帳票のフルパス
■出力設定
・ドキュメントテキスト: documentText
・ドキュメントオブジェクトモデル: DOM

⑥データ抽出スコープ
『データ抽出スコープ』アクティビティを配置する。
■入力設定
・ドキュメントパス: 読み込む帳票のフルパス
・タクソノミー: taxonomy
・ドキュメントテキスト: documentText
・ドキュメントオブジェクトモデル: DOM
・ドキュメントの種類のID: タクソノミーマネージャーより確認
■出力設定
・抽出結果: extractionResult

『データ抽出スコープ』に『生成AI抽出器』を配置する。
「フィールドの詳細を管理」をクリックし、プロンプトを設定する。

フィールドの詳細部分にプロンプトを設定する。
プロンプトは自由に設定可能。ひとまず「フィールド名+です」と設定。

⑦検証ステーション
『検証ステーションを提示』アクティビティを配置する。
■入力設定
・ドキュメントパス: 読み込む帳票のフルパス
・ドキュメントテキスト: documentText
・ドキュメントオブジェクトモデル: DOM
・タクソノミー: taxonomy
・自動抽出結果: extractionResult
■出力設定
・検証済みの抽出結果:validatedExtractionResults

⑧抽出結果をエクスポート
『抽出結果をエクスポート』アクティビティを配置する。
■入力設定
・抽出結果: validatedExtractionResult
■出力設定
・データセット: exportExtractionResults

⑨抽出結果を出力
『範囲に書き込み』アクティビティを配置する。
■データテーブル:exportExtractionResults.Tables(0)

生成AI抽出器実践(チューニング)
初回実行結果
検証ステーションに表示された結果には、以下の問題があった
⇒請求日に日付以外のデータが入っている
⇒請求先会社が請求元会社と同じになっている
プロンプト修正
検証結果を踏まえ、正しいデータを抽出するためにプロンプトを以下のように修正した
⇒請求日:請求日をyyyy/mm/ddの形式で抽出してください。
⇒請求先会社:この請求書の宛先となっている会社(請求先・受信者)の正式な会社名を抽出してください。「御中」の近くに記載されていることが多いです。

プロンプト修正後再実行した結果
期待通りに抽出できた。
表形式のデータ抽出
生成AI抽出器は列フィールドをサポートしていないため、データテーブル形式で値を抽出するのは難しい。
表からデータを抽出する場合、以下2つの方法がある。
- 各列のデータを個別に取得するようプロンプトで指示し、返されたデータを使用し自分でワークフローで行を組み立てる
例:この請求書に記載されている単価を垂直方向のリスト形式 [<単価1>, <単価2>, ...] で返してください。 - 各行をJSONオブジェクトとして個別に返すようプロンプトで指示する
- 例:この請求書に記載されている明細項目を JSON オブジェクトの JSON 配列として返してください。各オブジェクトは次の形式で返してください: {"説明”: , “数量”:, “単価”:, “金額”:}
生成AI抽出の効果的な実践
生成AI抽出器を効果的に使用するために留意しておくべき事項
①具体的な指示をする
生成 AI のプロンプトでする質問を、4 人から 5 人の人間に聞くところを想像してみてください。それぞれ少しずつ違う回答をするのが想像できる場合、その質問は曖昧すぎるため、より具体的な質問に書き換える必要があります。
②出力形式を指定する。
より具体的な質問を作成するには、標準化された形式で回答を返すように抽出器に指示します。これにより、曖昧さが減って応答精度が向上し、ダウンストリーム処理が簡略化されます。
たとえば、日付を取得するよう生成 AI のプロンプトで指示する場合は、「return date in yyyy-mm-dd format (日付を yyyy-mm-dd 形式で返してください。)」のように、日付の形式を指定します。年のみが必要な場合は、「return the year, as a four digit number (年を 4 桁の数字で返してください。)」と指定します。
この方法は数値の場合でも使用できます。たとえば、「return numbers which appear in parentheses as negative (括弧内に表示される数字を負の数として返してください。)」または「return number in ##,###.## format (数値を ##,###.## 形式で返してください。)」と指定して小数点区切り文字と桁区切り文字を標準化し、ダウンストリーム処理しやすくします。
③期待されるオプションを指定する
形式を設定する特別なケースとして挙げられるのが、想定される既知の回答候補のうちの 1 つが回答として返される場合です。
たとえば、申請フォームでは申請者の配偶者の有無を確認することがあります。回答候補として、既婚、未婚、別居、離別、死別、その他が考えられます。
ダウンストリーム処理が簡略化されるだけでなく、応答精度も向上します。
④ステップバイステップの手順
精度を最大限に高めるため、複雑な質問は簡単な手順に分解します。「この契約の終了日はいつですか?」と質問する代わりに「はじめに、契約の終了の条項を探してください。その後、終了日を特定し、終了日の日付を yyyy-mm-dd 形式で返してください。」と指示します。
⑤計算問題や論理問題を避ける
加算、乗算、減算、比較、およびその他の計算操作を指示しないでください。間違いを起こさない単純なロボット ワークフローに比べて処理速度が非常に遅く、コストがかかるだけでなく、基本的な間違いをするからです。
上記と同じ理由で、複雑な if-then-else のロジックの実行を指示しないでください。この種類の操作は、ロボット ワークフローの方がはるかに正確で効率的です。
⑥表/テーブル
現在、生成 AI 抽出器は列フィールドをサポートしていません。通常の質問で小さめのテーブルを抽出してその出力を解析できる場合もありますが、それは回避策にすぎず制限が伴うことに注意してください。汎用的な、任意の大きなテーブルを抽出するよう設計されておらず、そうした用途は推奨もされていません。
生成 AI 抽出器にとって、表からデータを抽出するのはかなり難しいタスクです。生成 AI テクノロジはテキストの線形文字列を使用し、画像内の視覚的な 2 次元情報は理解しないからです。ですが、2 つ以上の異なる方法を選択すれば、表からデータを抽出できます。
⑦信頼度レベル
生成 AI モデルでは、予測の信頼度レベルは提供されません。ここでの目標である「エラーの検出」において、信頼度レベルはその目標を達成する方法の 1 つに過ぎず、最良の方法ではありません。より優れた、信頼性の高いエラーの検出方法は、同じ質問を複数の異なる聞き方ですることです。聞く質問が違えば違うほど、より信頼性が高まります。すべての回答が共通の結果に収束する場合、エラーが存在する可能性は非常に低くなります。回答が一致しない場合、エラーが存在する可能性は高くなります。
たとえば、前述の提案をさまざまな形で組み合わせて、同じ質問を 2 回、3 回、または 5 回 (エラーの見落としを回避することが手順の中でどれほど重要であるかによる) 繰り返します。すべての回答に一貫性がある場合、人間によるレビューは必要ないかもしれません。回答内容が異なる場合は、Action Center で担当者による手動のレビューが必要な可能性があります。


