はじめに
- 本記事は、StudioWeb で Document Understanding(モダンプロジェクト) を扱いたい方向けの内容です。
- 記事の内容は、個人の見解または確認結果であり、UiPath の公式見解ではありません。
- 製品仕様や参考画像は 24.10 バージョンのもので構成しています。
StudioWeb × Document Understanding のテンプレート(自動生成WF)
テンプレートは次の2通りの手順で自動生成できます。
■すぐ使えるモデルから生成(フォームAI)
Document Understanding のトップ画面の右上の「オートメーションを作成する」をクリック > 以降の手順は省略
■独自モデルのパブリッシュ画面から生成
対象プロジェクト(モダン)>パブリッシュ画面の右下の「StudioWebを開く」をクリック > 以降の手順は省略
💡ポイント
- 両テンプレートの違いは単一ファイルをロードするか、ディレクトリ以下のファイルを繰り返し処理でロード・抽出するかのみです。
- 処理内容を端的に書くと 「➀ストレージバケットから読み取り対象ファイルをダウンロード」>「➁ドキュメントデータを抽出」>「➂検証タスクを登録」>「➃ドキュメントデータの中身をログに書き出す」 です。
StudioWeb のプロジェクトでは IntelligentOCRパッケージのアクティビティが利用できない(2024/12/06時点)ため、定型帳票(固定レイアウト)の自動化は従来通りStudioでおこなう必要があります。
StudioWeb × Document Understanding 実装上のポイント
入力ファイルの取得
Gドライブに配置したファイルを利用する例を以下で説明します。
(ストレージバケットのサンプルはテンプレートにあるため省略)
■手順
- 「ファイル/フォルダーのリストを取得」(出力:GDriveRemoteItem[])
- 繰り返し(コレクションの各要素)でGDriveRemoteItemを取得
- 必要に応じて処理対象ファイルの判定ロジックを追加
- 「ファイルをダウンロード」(入力:GDriveRemoteItem 出力:GDriveLocalItem ← こちらはドキュメントデータ抽出の入力にそのまま使えます)
ストレージバケットは、OCの画面上からだと1ファイルずつしかアップロードできないため、束登録したい場合は別に登録用ロボットを作成する必要があります。
ドキュメントデータの抽出
フォームAIの場合、「Predefined(事前学習済みモデル=すぐ使えるモデル)」がプロジェクトに設定され、抽出器は自由に変更できますが、抽出されるフィールドはカスタマイズできません。 ※データ出力部で任意の項目のみ記述すればよいので、新しいフィールドを追加したいケース以外では特に困ることはありません。
独自モデルの場合、Document Understanding のドキュメント種類マネジャーにて扱うフィールドを定義・カスタマイズできます。
抽出器を選び直したタイミングで抽出されるフィールドは変わります。
※フィールドの定義を変更した際は、抽出器をパブリッシュする前に再度アノテーションをおこなうなどしてトレーニング処理を走らせましょう!
✔ IntelligentOCRパッケージのデジタル化アクティビティでは 「ドキュメントテキスト」 と 「DOM」 を出力できました。
「ドキュメントデータを抽出」の出力である Document Data オブジェクト も、メタデータセクションに同内容を含みます!
■ドキュメントテキストの取得例
extractedResults.DocumentMetadata.Text
■DOMの操作例
extractedResults.DocumentMetadata.DocumentObjectModel.Pages(0).Sections(0).WordGroups(0).Words(0).Text
抽出結果の検証
Action Center での確認が不要であれば、検証タスクの登録部はコメントアウトするだけでOK
抽出結果からのデータ出力
抽出結果オブジェクト(Document Data)からの値の取り出し方は、以前書いた記事をご参照ください↓↓
今回は、OneDrive&SharePointのEXCELファイルに明細データを書き出す実装例を記載します。
■手順
- 繰り返し(コレクションの各要素)でextractedResults.Data.Itemsを取得
- 「行を書き込み」アクティビティを配置
- 書き込みたい範囲を指定(Sheet1のA1セルであれば「"Sheet1!A1"」)
- 書き込み方法に「追加」、書き込む内容に「配列行」を選択
- 書き込む配列行の値を設定(以下、例)
(配列の値の例)
{currentItems.明細行番号.ToString,currentItems.明細品番.ToString,currentItems.明細行の小計.ToString}
さいごに
いかがでしたでしょうか。
OCにパブリッシュしたロボットは、Cloud - サーバレスロボットをフォルダのマシンタブに割り当てれば、他のURと同様にスケジュール実行も可能です。
テンプレート(自動生成WF)をちょっといじるだけでDUロボット出来上がり☀
ご興味のある方は是非是非触ってみてください。
最後までお読みいただきありがとうございます(・ω・)ノ