はじめに
- 本記事は、Document Understanding のクラシックプロジェクトの抽出結果オブジェクト(ExtractionResult型)から値を取り出す方法を扱います。
- モダンプロジェクトの抽出結果オブジェクトからの値取り出しはこちら
- 記事の内容は、個人の見解または確認結果であり、UiPath の公式見解ではありません。
- 製品仕様や参考画像は 24.10 バージョンのもので構成しています。
抽出結果オブジェクト
ExtractionResult型のガイドページ↓↓
値の取り出し方(実装例)
任意の標準フィールドの値を取得
抽出結果オブジェクト.GetSimpleFieldValues("★フィールドのID")
UiPath.DocumentProcessing.Contracts.Results.SimpleFieldValue のリストが返却されるので、次の手順で受ける側の変数を用意します。
変数の型で「Array of [T]」を選択
「Browse for Types」よりデータ型を探しにいきます。
UiPath.DocumentProcessing.Contracts.Results.SimpleFieldValue を選択しましょう。
上で作成した変数(SimpleFieldValue)に「抽出結果オブジェクト.GetSimpleFieldValues("★フィールドのID")」を代入し、
SimpleFieldValueのリスト(0).RawValue で値を取り出します。
(複数値の場合は繰り返し処理(コレクションの各要素)などを使います。)
任意の表データを取得
抽出結果オブジェクト.GetTable("★表のID")
返却されるのは単純なデータテーブルではないため、Cellsプロパティをつかって値を出力してみます。
繰り返し(コレクションの各要素)の要素に
抽出結果オブジェクト.GetTable("★表のID").Values(0).Cells
を指定します。
各要素(currentResultsTableCell)はセルの行・列のインデックスと値などを保持しています。
「セルに書き込み」アクティビティを例に説明すると
書き込み内容: currentResultsTableCell.Values(0).Value
書き込む場所: EXCELファイルの参照名.Sheet("Sheet1").Cell(UiPath.Excel.Helpers.ExcelUtilities.ConvertColumnIndexToColumnLetter(currentResultsTableCell.ColumnIndex+1)+(currentResultsTableCell.RowIndex+1).ToString)
の様に設定することで表データを出力できます。
列インデックスの変換(数字←→文字)には「ExcelUtilities」を使います。
変換の例 | 構文 |
---|---|
列番号(2) → 列名称(B) | UiPath.Excel.Helpers.ExcelUtilities.ConvertColumnIndexToColumnLetter(2) |
列名称(C) → 列番号(3) | UiPath.Excel.Helpers.ExcelUtilities.ConvertColumnLetterToColumnIndex("C") |
任意フィールドの値操作(半角スペース除去の例)
標準フィールド
繰り返し(コレクションの各要素)を配置し、入力に 「自動抽出結果.ResultsDocument.Fields」 を指定、データ型に 「UiPath.DocumentProcessing.Contracts.Results.ResultsDataPoint」 を指定します。
代入を配置し、左辺に 「currentItem.Values(0).Value」 、右辺に 「currentItem.Values(0).Value.ToString.Replace(" ","")」 を指定します。
なお、キャプチャの例では 「currentItem.FieldName = "自由記述欄"」 と記述することで半角スペースを除去する項目を絞っています。
値が抽出されなかったケースでは「currentItem.Values(0)」でエラーとなってしまうため、代入の前に次の条件文を入れておくのをお勧めします。
currentItem.Values.Length > 0 AndAlso currentItem.Values(0).Value.Contains(" ")
表フィールド
繰り返し(コレクションの各要素)の要素に
抽出結果オブジェクト.ResultsDocument.Tables
を指定し、さらに同アクティビティで
currentItem.Values(0).Cells
の要素を設定します。
データ抽出されたセルのみ対象とするために次の条件文を入れておきます。
CurrentValue.IsMissing = False
代入アクティビティを配置し、次の様に設定します。
左辺: CurrentValue.Values(0).Value
右辺: CurrentValue.Values(0).Value.ToString.Replace(" ","")
さいごに
いかがでしたでしょうか。
モダンプロジェクトの抽出オブジェクトと比べるとクラシックの抽出オブジェクトは複雑なため、久しぶりに触ると沼ります。。。
意外とWEB上に参考ページがなさそうだったので整理して記事化しました。
DUを利用する皆様のお役に少しでも立てば幸いです。
最後までお読みいただきありがとうございます(・ω・)ノ
関連記事
抽出結果オブジェクトから直接ではなく、一度専用のアクティビティでエクスポートする実装例はこちら↓↓