19
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【随時更新】Document Understanding のデータ出力操作のメモ

Last updated at Posted at 2023-06-14

はじめに

  • 本記事は、UiPath Studio の基礎知識をお持ちで、これから Document Understanding を利用したい方向けの内容となっています。
  • 記事の内容は、個人の見解または確認結果であり、UiPath の公式見解ではありません。
  • 製品仕様や参考画像は 23.4 バージョンで構成しています。
  • Automation Cloud のアカウントおよび Pro Trial を申請するなどして DU のアクセス権限を取得している必要があります。

Document Understanding のデータ出力操作のメモ

探し方がよくなかったのか、Document Understanding のエクスポートで得られる出力(DataSet(データセット)型)(※補足) に関する記事がみつからなかったのでメモしておきます。
image.png
DataSet型はデータベースの様なもので、Document Understanding にみる
読み取り結果が1種類の表(テーブル)におさまらないケースでよく使われます。

※補足:以下がDUの抽出結果をエクスポートするアクティビティ
image.png

Document Understanding のテンプレートにある標準の出力

image.png

  1. 「繰り返し(コレクションの各要素)」を配置、{DataSet}.Tables を各要素に、
    TypeArgument に DataTable を指定します。
  2. 「範囲に書き込み(ワークブック)」を配置し、出力ファイルパス・シート名・内容(明細レコード)を指定します。

これによって、次の様な出力結果が得られます。
image.png
image.png

読み取った文書の単位でEXCEL等に情報出力できればよいケース に適応します。
なお、「データ テーブルを出力」や「CSV」アクティビティをもちいることでテキストやCSV出力も可能です。

image.png

image.png

※DU でエクスポートしたデータセットの構成例:
(「Simple Fields(表)」であれば抽出結果のデータセット.Tables(0)で取得できます。

  • Simple Fields(表)
  • Simple Fields - Formatted(表)
  • タクソノミーで設定した表
  • タクソノミーで設定した表 - Formatted

特定項目の値を取得したい、項目を絞って出力したい

読み取ったデータから取得する項目、出力項目を絞りたい場合にも、

抽出結果のデータセット.Tables(0).Rows(0).item("部署名").ToString+","+抽出結果のデータセット.Tables(0).Rows(0).item("お名前").ToString+","+抽出結果のデータセット.Tables(0).Rows(0).item("自由記述欄").ToString

の様に、{DataSet}.Tables(インデックス) でテーブル化できるため、普段のテーブル操作と同じ様に値取得が可能です。

// 値加工のサンプル:
// 半角スペースを除去(単純な文字列置換)
{左辺の整形済みテキスト} = 抽出結果のデータセット.Tables(0).Rows(0).item("自由記述欄").ToString.Replace(" ","")

// 電話番号からハイフンを除去(正規表現をもちいた置換)(例)080-1234-5555 → 08012345555
{左辺の整形済みテキスト} = System.Text.RegularExpressions.Regex.Replace(抽出結果のデータセット.Tables(0).Rows(0).item("電話番号").ToString, "[^0-9]", "")

// 日付のフォーマットを変更(正規表現をもちいた置換)(例)2023/06/14 → 2023年6月14日
System.Text.RegularExpressions.Regex.Replace(抽出結果のデータセット.Tables(0).Rows(0).item("入力日付").ToString,"(?<year>(?:\d\d)?\d\d)/(?<month>\d\d?)/(?<day>\d\d?)","${year}年${month}月${day}日")

読み取ったレコードを1つの表に纏めたい

本メモ記事を書く動機となったケースです。
新たなテーブルを1個つくって、そこにレコード追加をしていきたい場合 の実装メモです。

まず、「データ テーブルを構築」で新しいテーブルのインスタンスを生成しておきます。
image.png
繰り返し処理の中に「データ行を追加」アクティビティを配置し、{DataSet}.Tables(インデックス).Rows(インデックス).ItemArray と記述し列配列を指定します。
image.png
(tmpTable の出力例)
image.png

詳しくないので解説はできませんが、「抽出結果のデータセット.Tables(0).Select.First」の様に記述し DataRow をつくって行追加(.Add)しようとしても、既に他のテーブルに所属しています、とエラーになってしまいます。
image.png

おわりに

いかがでしたでしょうか?
Document Understanding の機能はワークフローの一部であり、読み取った後のデータ操作が肝となるのですが、
DataSet型扱ったことがない方にとっては?がつきやすい部分かとおもい記事にしました。
この記事を読んで少しでもDUの理解が深まった、また関心が強まったという方は
是非以下の記事等もご覧になっていただけますと幸いです。

19
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?