UiPath Document Understanding+AI CenterでML抽出をカスタマイズする方法

# はじめに

UiPath Document Understandingは、半定型帳票（＊）の読取り精度が出なければ、再トレーニングで精度向上していくことができます。読み取れないフィールドも追加して、再トレーニングすれば読取りが可能になったりします。ユーザーがAIを構築できるAI Centerを持っているUiPathならではの***本格的なドキュメントソリューション***と言えるでしょう。

＊ここで言う半定型は準定型と言う場合もあります。レイアウトやデザインは異なるが、同様の情報を含んだドキュメントのことです。一部のOCRベンダーでは、これを非定型と呼んだりしている場合もあります。

# 本記事の目的
本記事では、すぐに使える事前トレーニング済みのパッケージで提供されている「InvoicesJapan (請求書 - 日本) - ML パッケージ」をAI Centerを利用して再トレーニングすることにより、デフォルトでは読み取れないフィールドを追加する、合わせて利用する帳票の読み取り精度を向上する方法を解説します。

***＜本記事で追加している読取りフィールド（振込先）＞***

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/5373b116-ebe5-2414-df1a-b1fe1e417ab4.png)

# 前提
1. 2023年8月時点のAutomation Cloudの内容で記載しています。クラウドサービスなので、今後、操作や機能が変わる可能性があります。
1. 本記事で利用するワークフローはUiPath Document Understanding Process日本向けテンプレート利用しています。テンプレートの作り方は、下記の記事をご覧ください。

https://qiita.com/Jun96427231/items/0ab0c0c7d47b834714aa

# 1.MLモデルのトレーニング

MLモデルのトレーニングは、AI Centerで操作して実施することが一般的ですが、Document Understandingは、Automation Cloudの「Document Understanding」でMLモデルに関わる全ての工程の実施と一元管理ができる様になっています。管理も操作もシンプルになったので、本記事では、これを利用します。

## 1.1 帳票を取り込んでラベリングする

(1)Automation Cloudで「Document Understanding」に遷移します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/e05cb094-6d46-71ea-a0ea-7169fa21d6ba.png)

(2)「＋新しいプロジェクト」をクリックしてプロジェクト名を入力、詳細オプションを展開し、「OCRメソッド」、「OCRのURL」（ https://du-jp.uipath.com/cjk-ocr ）を下記の様に設定し、「作成」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/b779765d-81ad-2ec4-a790-d6f942f2b850.png)

(3)「新しいドキュメントの種類」をクリックして、「半構造化AIを使用」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/2b5ece98-5a0d-848d-056c-cc8261dd5cb6.png)

(4)新しいドキュメントの種類を作成する画面で下記の様に設定して行きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/3d3c7761-eb77-8179-2afc-e87757c25b15.png)

::: note info
「カスタムの標準フィールド」、「カスタムの列フィールド」、「言語の数」、「レイアウトの数」を設定すると下部に表示されている推奨されるデータセットのサイズ（ペース数）が変更されます。実態に合わせて変更して参考値として見ておきましょう。尚、今回追加する「カスタムの標準フィールド」は、ここで数を指定すると、デフォルトでフィールドが追加されますが、次のステップで追加するので、ここでは0のままでも問題ありません。
:::

(5)「InvoicesJapan (請求書 - 日本) - ML パッケージ」で既存で存在するフィールドが展開されます。標準フォールドを追加する場合は、下記の様に「＋」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/a4006ad1-ad9a-c35b-80de-dc5f0f85a8d0.png)

(6)新しいフィール名（振込先）を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/fd4632dc-6ecf-0250-6e77-aacbaa97d2f7.png)

(7)コンテンツの種類を選択します。ショートカットキーやIDも編集できますが、ここでは自動的に決められたものを使用することにします。後からでも編集できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/6bc40655-7249-6d64-816d-80fcea0bc8a1.png)

(8)下記の様に標準フィールドが追加されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/0bf7558d-4353-ca7b-3d3e-bfb11ce141c3.png)

(9)トレーニングで利用するファイルを取り込むため「インポート」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/5527cbf2-40c9-2d7b-e5d1-18e6e404fe49.png)

(10)実際に利用する請求書をいくつかインポートします。「インポート」するファイルを選択して「アップロード」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/dadabaa2-6016-1d2a-9b80-3e554ebdaa6c.png)

試しで行う際は、下記のブログで提供頂いているサンプル請求書を利用するのも良いと思います。こちらの請求書には、振込先などの情報もあります。

https://qiita.com/utanesuke/items/ae5364720fbad4c088ac


::: note warn
最低10枚は必要です。精度を高めるためには対象の帳票単位で20枚以上必要で、フィールドを追加する場合は、それ以上の枚数をお勧めします。
:::

(11)続けて「インポート」をクリックします。インポートステータスが表示されます。もし、同じ帳票が重複していた場合は、下図の様に、その帳票のインポートはスキップされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/b410fd29-196a-a94b-8ec4-2578aa54f936.png)

(12)ラベリングする１ページ目の帳票が表示されます。「予測」をクリックすると、ある程度、自動的にラベリングされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/44a7bef2-250e-3963-87aa-71d67527e820.png)

***＜予測でラベリングされた結果＞***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/df98024a-5f88-2ef8-1088-74623cae658c.png)

(13)ラベリングの操作は領域指定して、各フィールドに割り当てられているキーを押すと値を取り込みます。間違っていたり、不足していた場合は、この操作で修正して行きましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/1ef3f374-dbf4-d822-921b-3ce06f3fcb68.png)


***＜修正が反映された結果＞***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/b895ff9f-a47d-2101-5d5b-415fac173df6.png)

(14)表の列の場合も同様です。表の列フィールドは画面上部にあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/580886d6-7562-5b1e-42f0-2ffd44d4b7bd.png)

(15)今回追加したフィールドも、同様にラベリングして行きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/4cd9ce0f-6cb6-b28a-cca0-710669458028.png)

(16)インポイートした全ての帳票に対してラベリングが終わったら、「エクスポート」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/3423e644-0fdf-8728-b39d-8a43942328f1.png)

(17)下記の様に設定して、「AI Centerへエクスポート」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/f6ae3c85-23d8-48c0-d5bd-6cb78320c643.png)

(18)ラベリングされていないフィールドがあった場合は下記の様なエラーが表示されてエクスポートできません。

***＜エラー表示＞***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/5f289679-e1ca-bf14-9c10-f0a3e4584da6.png)

(19)不要なフィールドは下記の操作で非表示に設定して再度エクスポートを実施します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/04a647fd-252b-ad77-338d-5f62f5bf0434.png)

(20)画面の「エクスポート」ボタンの点滅が終わると、AI Centerへのエクスポートが完了です。

::: note info
AI Centerへのエクスポートをしましたが、本ブログでは、このエクスポートしたデータセットは利用しません。対象の帳票で不要なフィールドを非表示にするために、実施しました。
:::

# ワンクリック抽出機能で新しい抽出器を作成

ワンクリック抽出機能を利用すると、AI Centerで行うトレーニング操作を簡略化できます。ワンクリック抽出機能は自動でAI Centerと連携しながら、抽出器を作成できる便利な機能です。

(1)「抽出器」を選択します。「新しい抽出器」をクリックし、「自動トレーニング」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/d79082b3-6dda-184b-fbff-b374b61cfeb6.png)

(2)「名前」を入力し、「ラベル付けされたデータすべて」を選択します。GPUを使用しない場合は、トグルをオフして、「トレーニング」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/c09d7ef8-2b60-f500-810d-3b53487b7c87.png)

(3)ステータスか「利用可能」になれば、完了です。操作は、これだけです。AI Centerの各ステップでの操作と繰り返される待ちも、まとめて行われるので、とっても便利です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/381125a0-7493-2386-83f1-3dfe15684be7.png)

(4)一覧に表示されている抽出器の名前をクリックすると、詳細を確認することが出来ます。下記の赤枠部分をクリックするとAI Centerで行われた情報も確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/a9b106af-44e9-df65-4557-691aee292084.png)


# 2.UiPath Document Understanding Processの修正

新しいエンドポイントが出来たので、これをUiPath Document Understanding Processに反映して使って見ます。ここで利用しているのは、下記の記事で紹介したUiPath Document Understanding Process日本向けテンプレートです。

https://qiita.com/Jun96427231/items/0ab0c0c7d47b834714aa

## 2.1 Configファイルのエンドポイントの修正

(1)新しい抽出器のエンドポイントに変更します。エンドポイントは、トレーニングで利用可能になったら下記の場所から入手可能です。

***＜エンドポイントの入手場所＞***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/28ad9700-61e3-ca4e-a17f-45331efd8438.png)

***＜Configファイルの修正場所＞***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/f89861d8-48fe-90ca-5aa9-bd5e3542f2af.png)

## 2.2 タクソノミーマネージャでフィールド名の追加

(1)タクソノミーマネージャを開き、ラベリングで追加した振込先のフィールド名の追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/bab15042-8293-3775-4511-9ba688993765.png)

## 2.3 「30_Classify」（分類）の追加設定
(1)トレーニングした帳票を分類させるために、「学習の管理」をクリックしトレーニングを行います。実施しなければ、正しく分類器が機能しません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/7883402f-82b3-84ea-d0e4-6f81680dcbe2.png)

## 2.4 「50_Extract」で日本語請求書 ML 抽出器を変更

(1)「抽出器を設定」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/817c53b7-a7a7-0334-0484-1cdc5e3bddd3.png)

(2)トレーニングした新しい抽出器の有効なフィールド取得します。新しいエンドポイントを入力し、「機能を取得」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/f7abf76b-f4d8-7bde-4cc5-02a7161dae5d.png)

(3)非表示にしたフィールドは割り当てできなくなりますので、チックボックスをオフします。追加したフィール（remittance-info）は割り当てできる様になっているの割り当てを行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/5b97ec05-017c-1d9d-4729-0676dda94f49.png)

## 2.5 ワークフローを実行して、抽出結果を確認します。

(1)正しく抽出されていれば、下記の様に出力されます。また、実際の帳票でトレーニングしたことで、抽出精度も向上していると思われます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/fa765b4d-6787-060b-0f1c-80da857ea475.png)

# おわりに

UiPath Document Understandingは、自社の帳票に合わせて賢くして行くと言ったテクノロジーを提供しており、ベンダー提供のAIに依存しない、改善を待つことはない、思うように読取りできなくても諦めると言ったケースを減らすことができます。ただし、使いこなす様になるには、少々、知識のハードルは高めですので、専門家に任せると言ったこともあると思います。誰もがと言うことであれば、UiPathでは、簡単なものなら生成AIを利用して、もっとハードルを下げて、ツール感覚でドキュメントを理解するソリューションも出てきています。次は、こちらの紹介もしたいと思います。