はじめに
ChatGPTなどの普及により、生成AIを使うときはプロンプトエンジニアリング(プロンプトの工夫)が最も重要だと認識している方も増えたかと思います。AIから「ほしい結果」を得るためには、優れたプロンプトが必要です。
一方、UiPath Document Understandingには「生成AI抽出」という機能があり、ここでもプロンプトエンジニアリングが重要になります。
今回は、Document Understandingのためのプロンプトエンジニアリングを考えてみたいと思います。
つかうもの
※2024年12月時点
Automation Cloud(Document Understanding) Enterprise版
OCRエンジン:Extended Languages OCR
生成AI抽出とは
Document Understandingには正規表現、ML、フォーム抽出など様々な抽出メソッドが用意されています。生成AIは文字通り生成AIを使った抽出方法となり、プロンプトで具体的な抽出の指示を行います。MLのような事前トレーニングは不要で、専門知識がなくとも扱えるのが特徴です。
プロンプトエンジニアリングを何もしないと…
今回は請求書を例に、その中から「取引日(請求日)」、「取引金額(請求金額)」、「取引先(請求元)」の3つのフィールドを抽出してみます。
まず最初に、何もプロンプトを工夫せずに実行してみます。
抽出対象 | プロンプト |
---|---|
取引日 | 取引日です。 |
取引金額 | 取引金額の合計金額です。 |
取引先 | 取引先の企業名です。 |
抽出結果です。
精度はあくまで参考です。請求書フォーマットやLLMによって変動します。
抽出対象 | 正答率 |
---|---|
取引日 | 57.1% |
取引金額 | 90.5% |
取引先 | 74.6% |
やはり、何も工夫しないと精度は良くありません。特に取引日と取引先の改善が必要です。
プロンプトの工夫の仕方
以下は実際にやってみて精度向上が確認されたTipsですが、すべてのケースで効果があるわけではありません。ご了承ください。
別名の候補も記載する
フォーマットによって、抽出対象のフィールド名が一意に決まらないケースがあります。例えば、商品名、品名、品目などです。この場合、別名の候補も含めて記載することを推奨します。
発行日、請求日と書かれている場合があります。
取引金額ではなく請求金額と記載される場合もあります。
場所を指定する
特定の場所に出現することが多いのであれば、その旨を記載しても良いです。
通常、右上に記載されています。
また、別のフィールドがセット(場所的に近い位置に記載)になる場合は、その旨を記載しても良いかと思います。
取引先企業名は取引先住所の近くに記載されていることが多いです。
複数の候補が存在する場合の条件を指定する
ドキュメント中に類似した値を複数抽出するケースはよくあります。その場合、生成AIがどっちの項目を選ぶか迷ってしまうので条件を指定します。
複数の値が存在する場合は最も上に記載された値を抽出します。
金額が一番大きい値を選びます。
除外(対象外)の条件を指定する
ドキュメント中に類似した値を複数抽出する可能性がある場合、選ぶ方の条件を指定する他に、除外(対象外)となる方の条件を指定することもできます。
「御社」や「様」が付いた会社名は自社なので別の会社名を抽出してください。
○○株式会社は自社なので抽出対象外です。
表形式(json形式)で抽出される金額は対象外です。
「税」や「税抜」の金額は抽出対象外なので、別の金額項目を抽出してください。
プロパティ(必須・型・桁・表示形式など)を指定する
必ず値がある場合は、必須であることを指定することで抽出結果がブランク(Null)になる確率を下げることができます。
抽出する値はnullではありません。
型や桁が固定されている場合も条件を追加しても良いです。
顧客番号は10桁の数字です。
精度向上とは違いますが、抽出した結果をシステムへ登録することを考慮して、単位などを削除したりするなど形式を指定しても良いかと思います。
※抽出後のRPAで変換してもOKです。
西暦に変換し、yyyy/MM/ddの形式で抽出してください。
抽出する金額は単位とカンマを削除してください。
例示する
例を示せる場合は追加しても良いと思います。
顧客番号は「A-99999」のように、大文字英字1桁+ハイフン+数字5桁で構成されています。
おわりに
以上のことを踏まえ、プロンプトを工夫して再度抽出してみた結果です。
抽出対象 | 正答率(改善前) | 正答率(改善後) |
---|---|---|
取引日 | 57.1% | 100% |
取引金額 | 90.5% | 100% |
取引先 | 74.6% | 85.7% |
ちゃんと改善がみられました。やはり、良い結果を得るにはプロンプトが重要だと分かりますね。