はじめに
UiPath Document Understanding Process日本向けテンプレートの作り方(#2 フォーム抽出 CJK-OCR対策)において、氏名の苗字と名前の間にスペースがなくなってしまう課題が残りました。本記事ではChatGPTを組み込んで改善する方法を紹介します。その他に改善したいフィールドが発生した場合の参考にもなると思います。
ChatGPT組み込み前と組み込み後の比較
変換するタイミング
UiPath Document Understanding Process日本向けテンプレートの作り方(#2 フォーム抽出 CJK-OCR対策)で解説した変換の箇所(55_ExtractionBusinessRuleValidation)に組み込みます。ここに組み込むことで、フォーム抽出の場合は、共通に処理され、また、この変換をした後で、人による検証をすると言ったことが可能になります。
実装方法の解説
利用するChatGPT
UiPathでは既にChatGPTコネクタが色々と提供されてますが、ここでは最も簡単に利用できるAsk GPTアクティビティを組み込みます。尚、Ask GPTアクティビティは現時点ではプレビュー版ですので、今後アップデートが必要になると思われます。
氏名の苗字と名前の間に全角スペースを入れる処理
「#2 フォーム抽出 CJK-OCR対策」で解説している通り、読み取ったフィールドが画像だった場合は、OCRが機能しているので、スペースを除去する処理を行ってます。その直後に下記の処理を入れます。なんと、これだけで出来てしまいます。
< 処理の解説 >
①氏名のフィールドの種類は「Name」で設定されているはずなので、フィールドの種類が「Name」だった場合に、処理を実行します。
会社名などを「Name」に設定していた場合は種類を「Text」へ修正してください。元のテンプレートでも、「Name」に設定しているのは氏名のみです。アルファベットの氏名であった場合、「Name」はデータ構造上、下記の様にGiven NameとLast Nameで派生フィールドが作られるフィールドでもあります。
DerivedFields=ResultsDerivedField[2]
{
ResultsDerivedField
{
FieldId="Given Name",
Value="Taro"
},
ResultsDerivedField
{
FieldId="Last Name",
Value="Fuji"
}
②Ask GPTアクティビティへ渡す変数Textは、読み取ったフィールドの文字列です。冒頭のサンプルでは"富士太郎"が格納されています。Quession Listには{"苗字と名前の間に全角スペースを入れてください。"}と一つだけ質問を入れており、結果は回答リスト(0)("answer")に格納されます。
(この例では"富士 太郎"が格納されています。)
③回答リスト(0)("answer")の値を氏名のフィールド文字列に代入して、そのまま書き換えます。
おわりに
UiPath Document Understandingは、個々の機能をアクティビティで提供しており、ローコードプラットフォームのメリットを最大に活かしてドキュメントのデジタル化をユーザーに適した仕様に細かくカスタマイズできます。このメリットを活かして、ドキュメント処理途中(人による検証を行う前)で、ChatGPTを組み込んで、精度向上や修正の手間を軽減させると言った改良が期待出来ます。デジタル化が終わってから変換しようとするのではなく、人の検証を行う前に変換することをお勧めします。
今回は、氏名の補正だけに使用しましたが、ドキュメント処理を自由にカスタマイズできるDocument UnderstandingとChatGPTの組み込みのハイブリッドは、非常に相性が良い様に感じました。使い方が地味で、一つ一つが小さいですが、ドキュメント処理においても、生成AIに補助して欲しいケースは、数多くあると思います。