Power AppsのAI Builderの試用版を試してみました

# はじめまして
Qiitaへ初投稿させて頂きます。
みなさま、よろしくお願い致します。

2020年4月よりPower Appsについて調査を行っております。
その中で、今回はAI Builderの試用版（30日間）を試してみましたので、こちらに投稿させて頂きます。
AI Builderは、まだ、日本語未対応なのが惜しいところですが、名刺リーダーでは名前を読み取れたりしていますので、今後にこうご期待です。
また、2週間前には、実装できなかった「フォームプロセッサ」の機能が、試用版でもいつの間にか使えるようになったりと、日々進歩しているようです。

## 試してみたこと
① フォーム処理
② テキスト認識
③ 名刺リーダー
④ 物体検出

## ①フォーム処理（モデル作成手順）
1. PowerAppsの画面よりAI Builder → 「フォーム処理」を選択
2. AIモデルの名前を入力して作成
3. ドキュメントの追加（同じ種類のファイルを5枚以上用意）
4. 分析をかける
5. ドキュメントの項目を範囲指定して項目名を入力
6. 1枚目で全ての項目を設定したら、「フィールドの確認」ボタンを押下
7. 2枚目以降は、項目を範囲指定し、1枚目で設定したどの項目になるかを選択・設定

## ①フォーム処理（モデルの作成：1枚目）
項目を設定すると、その場で読取結果が右側に表示されます。
※範囲設定は自動認識の為、認識できない箇所も多数あります。
※以下のデータは、OCRのテストの為に個人情報自動生成ツールで作成した架空データとなりますが、念のため、住所や電話番号の一部は黒塗りにしてあります。
　
　　　　　　　　![AIBuilder_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/171f3b60-29b6-d0f1-e45c-fb0fbc15c4d4.png)


　　　　　　　　　　　　　　　　　![AIBuilder_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/13fdb015-0742-f2d0-134f-d2bf322e6bf5.png)
　　　　　　　　![AIBuilder_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/ea62f69f-066e-dcca-b44d-1aa7f8bdfba6.png)


## ①フォーム処理（モデルの作成：2枚目以降）
フィールドは確定しているので、各項目を範囲指定して設定します。
全ページの設定が終わったらトレーニング（少し時間がかかります）を行います。
　　　　　　　　![AIBuilder_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/dc086b9f-3366-fa44-5e7f-a26dee17307e.png)

　　　　　　　　　　　　　　　　　![AIBuilder_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/3f3a3871-e82b-691d-c7b4-e9a1cd639bc3.png)
　　　　　　　　![AIBuilder_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/658cfa91-7470-272c-1c88-5d23931791f5.png)

## ①フォーム処理（アプリの作成）
PowerAppsのフォームより、AI Builderの「フォームプロセッサ」を追加して、読取させたいモデルを選択するだけで実装可能です。
読取結果は、Label又はTextを配置、Textの関数バーへFormProcessor1.Fields.XXXX（モデル作成で設定した項目）を設定して表示させます。
![AIBuilder_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/c7ae03a4-a3cd-2439-08bd-f44cc7af158a.png)

## ①フォーム処理（アプリの実装）
アプリを起動して、分析ボタンをクリック、モデルと同じフォーマットのデータを指定するとLabelに結果が表示されます。
四角形を描画するために、信頼レベルに応じて次の 3 種類の色で表示されます。
　・赤: 信頼度レベルが 0% から 39% 
　・オレンジ: 信頼度レベルが 40% から 59% 
　・青: 信頼度レベルが 60% から 100% 
　　　　　　　　　　　![AIBuilder_22.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/fa50ebfc-be45-2aee-60f5-9b2c8417503e.jpeg)　　　　　　　　　　　　　　　　
　　　　　　　　　　　　　　　　　　　![AIBuilder_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/ee96638a-f989-cf7c-dd2f-09d9434474c5.png)
郵便番号と生年月日の数字は100％読めました。
![AIBuilder_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/28305615-d9bb-116a-06c8-89f259c89cc6.png)


## ②テキスト認識（アプリの作成）
テキストの認識には、モデルの作成が必要ない為、PowerAppsのフォームより、AI Builderの「テキスト認識エンジン」を追加し結果を表示させるTextを配置するだけで実装可能です。
![AIBuilder_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/6e9673b7-5df5-c1fa-39e1-5deea989eb38.png)

## ②テキスト認識（アプリの実装）
アプリを実行してみます。
青い枠がついた箇所が自動でテキスト認識してくれた項目になります。
青い枠を選んでクリックすると右下に読取結果が表示されます。
※現段階で日本語が未対応の為、英数字として結果が表示されます。
![AIBuilder_7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/e4161bd9-1556-569c-9581-9c9b5ed7bc33.png)

アドレスの項目の読取結果は以下になります。
なかなか読めています！
![AIBuilder_8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/b9f579f7-6424-e644-2c3c-ee83a1cec1eb.png)

最後に電話番号になります。
1が/（スラッシュ）と認識されてしまいました（惜しい、、、）
他の番号は一致していました。
![AIBuilder_9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/75ff82c8-f64b-b8d1-9ac7-0eec90e46de3.png)

## ③名刺リーダー（アプリの作成）
PowerAppsのフォームより、AI Builderの「名刺リーダー」を追加し、各出力項目をラベル又はテキストで設定するだけで実装可能です。
今回は、名前・メールアドレス・電話番号・会社名の出力設定をしてみました。
![AIBuilder_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/4f85dca2-84c1-5842-f7f7-5a3e031fd8ea.png)

## ③名刺リーダー（アプリの実装）
日本語の対応がされていない為、シールに貼られている「Homer」を読取してしましました。
Emailは読取100%でした！
電話番号は残念ながら読み取りできなかったようです。
お見せ出来ないのが残念なのですが、他社様の名刺もスキャンしてみました。
名前・会社名共に正しく読取出来るものもありましたので、この結果だけが全てではないです。
　　　　　　　　　　　　　　　![AIBuilder_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/32913169-7437-845f-78b6-ae6af9a409f8.png)

## ④物体検出（モデルの作成手順）
[こちらの記事を参考に作成させて頂きました。](https://tech-blog.cloud-config.jp/2019-08-13-detect-sweets-with-ai-builder/)
1. Common Data Serviceへラベルを登録するためのエンティティを作成（Jagariko,BAKEのキーワードを登録）
2. PowerAppsの画面よりAI Builder → 「物体検出」を選択
3. AIモデルの名前を入力して作成
4. モデルのドメインの選択で「共通オブジェクト」を選択
5. モデルで検出するオブジェクトを選択する（データベースから選択しますで①で作成したエンティティを選択）
6. 検出する項目を選択（Jagariko,BAKEの両方）
7. イメージの追加（事前に撮影して置いた「じゃがりこ」「BAKE」の画像をそれぞれ15枚アップデート）
8. 1枚ずつタグ付けを行う

## ④物体検出（モデルの作成）
1枚ずつタグ付けする必要あります。
全部のタグ付けができたらテスト → 公開 → クイックテスト　と進めます。
　　　　　　　　![AIBuilder_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/279728cd-943b-0258-4fdd-408829519aca.png)
　　　　　　　　　　　　　　　　　![AIBuilder_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/783ba6e6-bfc7-c67c-2b18-ba43fc6c94c2.png)
　　　　　　　　![AIBuilder_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/ee26d84d-8e01-8a9b-6281-2293dc9c15c0.png)

## ④物体検出（クイックテスト）
「クイックテスト」ボタンを押して、LocalPCより画像を選択すると、無事に「Jagariko」と認識されました。
　　　　　　　　![AIBuilder_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/39339b11-2059-3db2-1b68-ae67d94c3126.png)
　　　　　　　　　　　　　　　　　![AIBuilder_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/4efe8019-cc85-a011-252d-587e9e65e797.png)
　　　　　　　　![AIBuilder_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/282bdfb3-0972-5be0-3f4b-deee0ebd3939.png)

## ④物体検出（アプリの作成）
PowerAppsのフォームより、AI Builderの「オブジェクト検出器」を追加して、先程作成したAIモデルを追加します。
![AIBuilder_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/ed2aea89-dfbb-28d7-f0b7-729c57d6511b.png)

## ④物体検出（アプリの実装）
「Jagariko」と「BAKE」を無事に検出しました。
　　　　　　　　　　　　　　　![AIBuilder_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/90d20961-dd45-1fdb-d612-b470b49a7725.png)
　　　　　　　　　　　　　　　![AIBuilder_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662072/d89e61fb-0749-2c49-c49c-f6d5aa72ab6e.png)

## 最後に
資料を読むだけでは理解が難しかった箇所が、アプリ実装により、より理解が深まりました。
■苦労した点 
・少ない資料の中から照らし合わせながら調査するのが大変
・試用版だったため、実現できない機能などがあり、それに気が付くのに何度もTry&Errを繰り返し時間を要してしまった
・CommonDataServiceの仕組みに慣れていないため、ラベルを作成するエンティティを作成するだけでも四苦八苦

今後、AIBuilderにチャレンジする方にとって、この記事が少しでもお役に立つことが出来たら幸いです。

※掲載内容は個人の見解であり、所属する企業を代表するものではありません。