UiPath Document Understanding 第3回 基礎編 日本語請求書と源泉徴収票からデータ抽出しよう


# 1. 日本語帳票を識別するため何が必要？

[第一回](https://qiita.com/utanesuke/items/8cdcd1276fe248fafea7)と[第二回](https://qiita.com/utanesuke/items/95e49a3f21d81c4393a9)では、英語の帳票を利用してデータの抽出を実施しました。第三回では、日本語の帳票(請求書と源泉徴収票)からもデータを抽出していきましょう。サンプルデータは[**こちら**](https://drive.google.com/drive/folders/1-lW572NxVtqKoj-CLJ1mr7_PWalXjfWJ?usp=sharing)より取得してください。
日本語の帳票を分類・抽出するために、**日本語に特化したOCRエンジンとエンドポイント**が必要になります。例えば、分類器の設定が以下のように異なっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/b78555e5-e04e-3a6c-0664-718126f33932.png)

今回の解説は、[UiPath Document Understanding 第1回 基礎編 複数種類のドキュメントからデータ抽出しよう](https://qiita.com/utanesuke/items/8cdcd1276fe248fafea7) をベースにしています。**こちらでは、第一回との差分の部分だけを解説します。** 第一回をまだ読んでいない方は、そちらを先にチェックしてください。
それでは、第一回のワークフローを[DU_Basic_Sample_第一回.zip](https://drive.google.com/drive/folders/1oaTZ6-FN9mKlX5Ff0jOpl0hmHNDkw3bZ)からダウンロードして、日本語帳票の分類と抽出ができるように改修していきましょう！

# 2. タクソノミー定義の変更

利用する帳票が変ったので、抽出したい値も異なってきます。そのため、タクソノミーでの定義を変更する必要があります。
以下の処理はタクソノミーマネージャーから行います。
- 元の英語版帳票の定義を削除します。
- 日本語帳票と合わせて、フィールド名と種類の定義を追加します。

処理完了したら、タクソノミー マネージャーでの設定は以下の通りになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/6db66c14-dcee-798a-1ab0-efac82013e44.png)

- ドキュメント種類名：源泉徴収票

    | No | フィールド名 | 種類 |
    |:-:|:-:|:-:|
    | 1  | 住所  | Address  |
    | 2 | 氏名  | Name  |
    | 3  | 支払い金額  | Number  |

- ドキュメント種類名：請求書

    | No | フィールド名 | 種類 |
    |:-:|:-:|:-:|
    | 1  | 請求先会社名  | Name  |
    | 2 | 住所  | Address  |
    | 3  | 合計  | Number  |

# 3. 読み込みファイルのフォルダ変更

繰り返し (フォルダー内の各ファイル) アクティビティでのフォルダのパスは、ダウンロードした日本語帳票が保存されているフォルダのパスに設定します。

# 4. デジタル化の変更

日本語帳票をデジタル化するために、**OCRエンジンの変更**及び**エンドポイントの変更**が必要です。

**手順：**

- アクティビティ欄から**ドキュメントをデジタル化**アクティビティを**元のドキュメントをデジタル化**アクティビティの下に配置します。
- 入力と出力パラメータの値を元のアクティビティからコピーします。
- デフォルトのOCRエンジンの**UiPath ドキュメント OCR**から**OCR - 日本語、中国語、韓国語**へ変更します。
    - ドキュメントをデジタル化 アクティビティでの**UiPath ドキュメント OCR**を削除します。
    - アクティビティ欄から**OCR - 日本語、中国語、韓国語**アクティビティを入れてください。
- 次は**OCR - 日本語、中国語、韓国語**アクティビティのエンドポイントに`"https://du-jp.uipath.com/cjk-ocr"`<sup>補足</sup>を設定します。
- 元の**ドキュメントをデジタル化**アクティビティを削除します。

:::note info
補足
エンドポイントはこちらの[パブリック エンドポイント](https://docs.uipath.com/ja/document-understanding/automation-cloud/latest/user-guide/public-endpoints)から取得しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/b5042847-412d-d2d9-3503-865e874da245.png)
:::

以上の設定ができたら、一旦**Write Line**アクティビティを入れて、出力結果のstrDocumentTextを出力して、日本語帳票のデジタル化ができているかどうか確認してみてください<sup>補足</sup>。

:::note info
補足：
分類器や抽出器などの設定がまだ英語版帳票になっているので、ワークフローを実行するとエラーになります。そのため、エラーになったアクティビティ(ドキュメント分類スコープ、データ抽出スコープ)をコメントアウトしてから実行してください。

:::

# 5. 分類器の変更

利用するドキュメントが変ったため、分類する際のキーワードも変わってきます。**インテリジェント キーワード分類器**でのトレーニングも再度実施する必要があります。

**手順：**
- 前回作成した**DocumentProcessing\classifierLearning.json**での中身を全て削除します。
- **学習を管理**をクリックします。
- 表示された以下の画面で、源泉徴収票の**トレーニングを開始...** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/77bb3051-5a9c-f744-2434-06aaab443ee9.png)
- 表示された**インテリジェントキーワード分類器**画面では、以下のように設定します。
    - トレーニング用に設定されたファイルに、源泉徴収票の帳票を選択してください。
    - OCRエンジンを**OCR for Chinese,Japanese and Korean**に変更してください。
    - エンドポイントを`https://du-jp.uipath.com/cjk-ocr`に変更してください。
- 設定が完了したら、以下の画面になり、**トレーニングを開始**をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/9fed0d05-ba74-e194-50cf-724696dfbe92.png)

- 請求書も同じように、請求書帳票を選択してトレーニングをしてください。トレーニングが完了したら、それぞれ帳票のキーワードが抽出され、画面が以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/b39bd63a-b85c-6890-4e8a-f5bc05b7eba2.png)
- 上記のインテリジェントキーワード分類器の保存をクリックします。
- 再度**DocumentProcessing\classifierLearning.json**を確認してみます。以下のように、日本語帳票の分類情報が記載されています。
    ```json:classifierLearning.json
    [{"DocumentKeywordVectors":[{"TotalDocumentLength":7052,"PageCount":1,"FirstPageVector":
    {"VectorId":"NoGroup.NoCategory.源泉徴収票_1.FirstPage","DocumentCount":1,"TermsWithScores":
    [{"Score":1.0,"Term":"年","LastUpdated":"2023-04-06T19:35:42.4376317+09:00"},
    {"Score":1.0,"Term":"者","LastUpdated":"2023-04-06T19:35:42.4376428+09:00"},
    {"Score":0.99,"Term":"号","LastUpdated":"2023-04-06T19:35:42.4376137+09:00"},
    {"Score":0.99,"Term":"名","省略":"省略"},
    {"...":"..."}
    ```

- 次は**分類器を設定**をクリックして、再度源泉徴収票と請求書に[インテリジェント キーワード分類器]をチェックしてください。

# 6. 抽出器(フォーム抽出器)の変更

分類器と同じように、抽出器の設定や再トレーニングが必要になります。

**手順：**
- 元の**フォーム抽出器**を削除して、新しい**フォーム抽出器**アクティビティを追加してください。
- **フォーム抽出器**アクティビティでのエンドポイントに`"https://du-jp.uipath.com/svc/formextractor"`を設定します。([パブリック エンドポイント](https://docs.uipath.com/ja/document-understanding/automation-cloud/latest/user-guide/public-endpoints)から**Form Extractor (フォーム抽出器)** の日本のURLを利用)
- 次は**テンプレートを管理**をクリックして、テンプレート マネージャーの画面が表示されます。
- **テンプレートを作成**をクリックして、表示された**テンプレートを作成**画面にて以下のように設定します。
    - ドキュメントの種類：源泉徴収票（源泉徴収票は定型のドキュメントですので、フォーム抽出器を利用します）
    - テンプレート名：源泉徴収票テンプレート
    - テンプレートドキュメント：ダウンロードした源泉徴収票ファイルを選択します
    - OCRエンジン：OCR for Chinese,Japanese, and Koren
    - エンドポイント：`https://du-jp.uipath.com/cjk-ocr `
- 最後に**設定**をクリックして、ドキュメントのデジタル化が開始されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/dde0eb29-86fc-4a44-55c9-0981f738dd8e.png)
- 開始されたら、以下のようなテンプレート マネージャーが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/1fc6a9ac-6b9e-060f-e847-e0b7f330ae84.png)
- 上記の設定方法は[第一回のフォーム抽出器の追加と設定](https://qiita.com/utanesuke/items/8cdcd1276fe248fafea7#-%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E6%8A%BD%E5%87%BA%E5%99%A8%E3%81%AE%E8%BF%BD%E5%8A%A0%E3%81%A8%E8%A8%AD%E5%AE%9A)と同じですので、そちらを参照してください。
- 設定が完了したら、以下のような画面になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/64bbc097-0154-7f1f-da06-81e9438b3332.png)

- 再度テンプレートマネージャー画面に戻ったら、**源泉徴収票テンプレート**をチェックして、**閉じる**をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/b3163fce-767a-7851-da13-a54c966b3779.png)


# 7. 抽出器(マシンラーニング抽出器)の変更

次に、日本語帳票に合わせてマシンラーニング抽出器の設定を変更します。

**手順：**
- 元の**マシンラーニング抽出器**を削除して、新しい**マシンラーニング抽出器**アクティビティを追加してください。
- 表示された**マシンラーニング抽出器**画面でのエンドポイントに、`https://du.uipath.com/ie/invoices_japan`を設定します。([パブリック エンドポイント](https://docs.uipath.com/ja/document-understanding/automation-cloud/latest/user-guide/public-endpoints)より取得)<sup>補足</sup>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/0fa9c5ea-2a24-12f1-5f6c-f6729eb09559.png)
- 上記画面での**機能を取得**をクリックします。
- 次は、**データ抽出スコープ**アクティビティの**抽出器を設定**をクリックします。
- 次の**抽出器を設定**画面にて、以下のように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/1ff268c8-b473-2e28-b7cb-e0d6b139513a.png)
- マシンラーニング抽出器のフィールドの意味は以下のドキュメントをご確認してください。
    - [Invoices (請求書) - ML パッケージ](https://docs.uipath.com/ja/document-understanding/automation-cloud/latest/user-guide/invoices-ml-package)
    - [InvoicesJapan (請求書 - 日本) - ML パッケージ](https://docs.uipath.com/ja/document-understanding/automation-cloud/latest/user-guide/invoicesjapan-ml-package)

:::note info
補足
現時点(2023/4/7)、InvoicesJapan (請求書 - 日本)はプレビュー版([パブリック エンドポイント](https://docs.uipath.com/ja/document-understanding/automation-cloud/latest/user-guide/public-endpoints))ですので、精度についてご自身チェックしてから利用してください。）
:::

# 8. 抽出結果の確認

ここまでで、必要な変更(タクソノミー、デジタル化のOCRエンジン、分類器の設定、抽出器関連設定)が全て完了しました。
次はワークフローを実行して、出力された結果を確認します。

- 源泉徴収票(抽出結果のExcelファイルと元の源泉徴収票画像)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/a52a0e24-2aaf-a309-676f-546124d30add.png)
- 請求書(抽出結果のExcelファイルと元の請求書PDF)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/90c17149-14b2-3239-9400-fe47fa0965ff.png)

今回日本語帳票の場合は、OCRエンジンやエンドポイントの変更を説明したかったので、源泉徴収票と請求書は一枚づつしか用意していませんでした、複数枚でも同じく動作できます。

ご参考までに、上記のワークフローはこちらの[DU_Basic_Sample_日本語帳票_第三回.zip](https://drive.google.com/drive/folders/1oaTZ6-FN9mKlX5Ff0jOpl0hmHNDkw3bZ)です。

# 9. 補足
第１回から第３回まで、UiPath Studioを使用してゼロからワークフローを作成し、ドキュメントの分類や抽出、そして結果の検証ができました。しかし、このワークフローには以下の問題点があります。
- 無人オートメーションの対応がしていない
- エラー処理が考慮していない
- 多様な種類のドキュメントが対応していない

これらの問題を解決するために、UiPath Studioには**Document Understanding Processのテンプレート**が用意されています。このテンプレートを活用するためには、全体の構成を理解する必要があります。次の記事では、その構成について解説します。