第六回までは、UiPathが用意したデフォルトのAIモデル(InvoicesJapan (請求書 - 日本) - ML パッケージ)を利用して、日本語の帳票からデータを抽出しました。
しかし、このAIモデルを利用して、自社独自フォーマットのドキュメントからデータを抽出することが難しい場合、自社独自フォーマットのドキュメントを利用して、AIモデルを再トレーニングすることで、自社のドキュメントからデータを抽出できるようになります。
今回の記事では、AI Centerを利用して、このAIモデル(InvoicesJapan (請求書 - 日本) - ML パッケージ)を再トレーニングする方法、及び再トレーニング済のAIモデルの利用を解説します。
AI Centerに関する説明は本記事で省略しますので、詳細な情報は以下の記事を参照してください。
1. AI Centerでのプロジェクト作成及び関連設定
プロジェクトとは、特定の ML ソリューションの構築に使用できる、データセット、ML パッケージ、パイプライン、ML ログ、ML スキルなどの独立したリソースでグループです。プロジェクトを一番最初に作成する必要があります。
プロジェクトの作成
手順:
- プロジェクトページで、プロジェクトを作成ボタンをクリックします。新しいプロジェクトを作成ページが表示されます。
- プロジェクト名を入力します。プロジェクト名は今後更新できません。
- 必要に応じて、プロジェクトの説明を入力します。
-
作成をクリックします。新しいプロジェクトが作成され、ダッシュボードページが表示されます。
データセット及びデータのラベル付けの作成
手順:
- 作成したプロジェクトを選択して、次の画面で左側のデータセットをクリックします。
- データセットページで、新規作成ボタンをクリックします。
- データセット名を入力して、作成ボタンをクリックします。
- 左側のデータのラベル付けをクリックして、右側のUiPath Document Understandingをクリックします。
- 次は、データのラベル付けセッション/新規作成の画面に、名前を入力して、作成したデータセットを選択して、作成ボタンをクリックします。
2. Document Managerでドキュメントのラベル付け
次は、作成したデータのラベル付けセッション(例:DU_Japan_Invoice_30)をクリックして、Document Managerでドキュメントにラベルを付けます。
OCRを設定します
Document Manager上で、OCR及び事前ラベル付けを設定します。
手順:
- 青文字のOCRを設定しますをクリックします。
-
OCRタブに以下の通りで設定します。
-
OCR メソッドに
UiPath Chinese-Japanese-Korean OCR
を選択します。 - OCR API キーにCloud Automationライセンスから取得した API キーを入力します。
-
OCR のURLに
https://du-jp.uipath.com/cjk-ocr
を入力します。
-
OCR メソッドに
-
事前ラベル付けタブをクリックして、以下の通りで設定します。
-
事前ラベル付け URLに
https://du.uipath.com/ie/invoices_japan
を入力します。 - 事前ラベル付けキーはOCR API キーと同じにします。
-
事前ラベル付け URLに
- 保存ボタンをクリックします。
事前定義されたスキーマのインポート
ドキュメントからどんなフィールドを抽出するか、予め定義する必要があります。列フィールド、標準フィールド及び分類フィールドを自分で作成することも可能ですが、作業を開始しやすいよう、UiPath ではすぐに使える ML パッケージ用のスキーマを提供しています。これらの .zip ファイルは、データセットをインポートするのと同様に Document Manager にインポートできます。
事前定義されたスキーマからInvoicesJapan (請求書 - 日本) のをクリックしてダウンロードします。
手順:
- 青文字のドキュメントをインポートしますをクリックします。
- バッチ名を入力して、ダウンロードしたschema_invoices_japan.zipをドラッグアンドドロップして、アップロードボタンをクリックします。
- スキーマのインポートが検出されましたのメッセージが表示されたら、インポートボタンをクリックします。
- インポート ステータスが100%になったら、閉じるボタンをクリックします。
正しくインポートされたら、以下のように事前に定義されたフィールドが表示されます。
フィールドを作成します
以下のテーブルには、請求書から抽出したいフィールドが示されています。
No | フィールド名 | 種類 | 列-フィールド名 | 列-種類 |
---|---|---|---|---|
1 | invoice-no(請求書番号) | ID 番号 | ||
2 | name(請求元会社名) | 文字列 | ||
3 | billing-name(請求先会社名) | 文字列 | ||
4 | 品目明細 | Table | ||
4.1 | description(品名) | 文字列 | ||
4.2 | quantity(数量) | 数値 | ||
4.3 | unit-price(単価) | 数値 | ||
4.4 | line-amount(金額) | 数値 | ||
5 | 総額 | 数値 |
次は、Document Managerで不要な標準フィールド及び列フィールドを削除します。
手順:
- 不要なフィールドの右側の鉛筆マークをクリックして、削除をクリックします。
ドキュメントのラベリング
こちらの du_japan_invoice30_dataで30枚の日本語請求書を用意したので、ダウンロードして利用してください。
ラベリングをするため、まずトレーニング用ドキュメントをインポートします。
以下の図で示したように、インポートをクリックして、ダウンロードした日本語請求書をアップロードしてインポートします。
インポートが完了したら、閉じるをクリックして、ラベリングの作業画面が表示されます。
請求書画面で、フィールド(例:請求書Noの23445984-0112
)を選択して、該当フィールドのホットキー(例:invoice-noのホットキーのo
)をクリックします。繰り返しで、全てのフィールドを指定します。
繰り返しで、全てのページでのフィールドを指定します。
列フィールド(例:品番・品名)が複数ページを跨る場合は、shift
キーを押しながらフィールドを選択します。
ファイルをエクスポート
次は、ラベリングしたデータをデーターセットにエクスポートします。
手順:
上のエクスポートの点滅が完了したら、AI Center のデータセットに行って、<作成したデータセット名>/export の下に 新しいフォルダーがあるかを確認します。
スキーマ(フィールド)をダウンロード
今後この定義したスキーマを利用するため、セッションのスキーマ(フィールド)をダウンロードします。
手順:
- 数:0 が表示しているフォルダーにフィルターします。
- エクスポートをクリックします。
- 名前を入力し、ダウンロードを押します。
- ダウンロードしたフォルダーをデスクトップに置きます。
3. 請求書モデルの再トレーニング
ML パッケージの作成
まずは請求書のML パッケージを作成します。
手順:
- AI CenterプロジェクトのML パッケージを選択して、右のすぐに使えるパッケージをクリックします。
- UiPath Document Understandingを選択します。
- InvoicesJapanを選択し送信します。
- パッケージ名を入力し送信したら、パッケージが作成されます。
※説明欄の入力は任意です。
※OCR エンジンの設定はStudioで行いますため、省略します。
パイプラインの実行
次は、パイプラインを使って、ラベリングしたデータでモデルをトレーニングします。
手順:
- AI Centerプロジェクトのパイプラインを選択して、右の新規作成をクリックします。
- パイプラインの種類にトレーニングの実行を選択します。
- パッケージを選択に先程作成したパッケージ(例:DU_InvoicesJapan)を選択します。
- パッケージのメジャーバージョンとパッケージマイナーバージョンに最新バージョンを選択します。
- 入力データセットを選択に <作成したデータセット名>/export/<ラベリングしたフォルダ名> を選択します。
- GPUを有効化をチェックして、作成ボタンをクリックします。
- パイプラインの一覧に作成したパッケージが表示されます。ステータスを成功になるまで待ちましょう。
ML スキルの作成
次は、トレーニング済のML パッケージを利用して、ML スキルを作成します。
手順:
- AI CenterプロジェクトのML スキルを選択して、右の新規作成をクリックします。
- 名前を入力して、パッケージを選択に先程作成したパッケージを選択します。
- パッケージのメジャーバージョンとパッケージマイナーバージョンに最新バージョンを選択します。
- 作成ボタンをクリックします。
ML スキルのEndpointの作成
UiPath Studioでモデルを使うため、ML スキルのEndpointを設定します。
手順:
- ML スキルの一覧に先程作成したMLスキルをクリックします。
※ステータスを利用可能になるまで10 ~ 15分 かかります。 - 右上の→ 現在のデプロイを変更をクリックします。
- ML スキルを公開トグルをONにして、確認ボタンをクリックします。
- ML スキルのステータスが利用可能になったら、もう一度 ML スキルをクリックし、urlが作成されたかを確認します。
4. 再トレーニング済AIモデルを利用します
上記の3. 請求書モデルの再トレーニングで、30枚補足のドキュメントをラベリングして、ラベリングしたデータセットを利用してAIモデルを再トレーニングしました。
これから、第5回 基礎編 テンプレートを使って日本語請求書からデータ抽出しようで作成してワークフローをベースにして、再トレーニングしたAIモデルを利用して、ドキュメントを処理します。
再トレーニングしたAIモデルとUiPathの用意したデフォルトの請求書モデルの違いがエンドポイントですので、Config.xlsxを開いて、SettingsシートでのInvoicesEndpointを変更する必要があります。
- 変更前:https://du.uipath.com/ie/invoices_japan
- 変更後:上記ML スキルのEndpointの作成で取得したURL
それ以外の修正は不要です。実行して、デフォルトの請求書モデルの結果と比較してみてください。
MLスキルのストリーミングログ画面で、該当MLスキルが呼ばれた際のログが確認できます。
5. 検証済データを利用してAIモデルの継続改善
ローカルに保存していた検証済データをAI Centerにアップロードし再教育するため、検証済データを圧縮します。
手動でラベル付けした元のデータセットに検証済のデータを追加する必要があることです。これにより、時間の経過とともにサイズが増大する単一のトレーニング データセットを常に得られます。0 (ゼロ) マイナー バージョン (UiPath がリリースした、すぐに使えるバージョン) の ML パッケージでトレーニングを実施することが必要です。
手順:
次は、新しいデータ ラベル付けセッションを作ります。
手順:
- AI Center > データ ラベル付けにアクセスし、UiPath Document Understandingを選択します。
- 新しいデータ ラベル付けセッションを作成します。関連設定は以下の図の通りです。
最後に、ダウンロードしたスキーマと圧縮した検証済データをインポートします。
手順:
- 作成したデータのラベル付けセッションをクリックして、Document Managerにて開きます。
-
スキーマフィールドをダウンロードでダウンロードしたスキーマをインポートします。
- 圧縮した検証済データをインポートします。
- スキーマ及び検証済データのインポートが完了したら、以下のように修正なところがあれば修正します。
- 最初に手動でラベル付けした元のデータセットもインポートをします。
次は、ファイルをエクスポート及び請求書モデルの再トレーニングでの操作手順を参照して、以下の処理をします。
- データーセットにエクスポートします。
- AI Center のパイプラインで、トレーニングします。(0 (ゼロ) マイナー バージョン (UiPath がリリースした、すぐに使えるバージョン) の ML パッケージでトレーニングを実施することが必要です。)
- AI Center のMLスキルで最新パッケージを再デプロイします。
- 再デプロイしたMLスキルのエンドポイントURLを利用して、ワークフロープロジェクトでのConfig.xlsxのSettingsシートでのInvoicesEndpointを更新します。
これで段階的に検証済データを使って、再トレーニングをすれば、MLスキルを利用した抽出データの精度がどんど高くなります。
重要: 検証ステーションのデータの正しい使用方法は、前のモデルのバージョンを繰り返し再トレーニングすることだと誤解されていることがよくあります。
- 誤解:X.2 を取得するために、現在のバッチを使用してパッケージ X.1 をトレーニングしているのです。そして次のバッチを使用して X.2 のトレーニングを行い、X.3 を取得します (以降同様)。これは、製品の使用方法として間違っています。
- 正解:検証ステーションの各バッチは、最初に手動でラベル付けしたデータと同じ Document Manager セッションにインポートして、さらに大きなデータセットを作成する必要があります。そして、そのデータセットを使用して、常に ML パッケージ バージョン X.0 をトレーニングする必要があります。
更に詳細な内容は以下のページをご参照ください。
6. 最後に
第七回まで読んでいただいてありがとうございました。これまでは、利用手順を中心にして解説してきました。
今後は更に細かい仕様(例:手書き、抽出器の詳細など)を解説していきたいと思います。
参考情報