オンプレ系インフラエンジニアがAzureを勉強する

いつか誰かの何かの役に立つと嬉しいな

Form Recognizerの領収書処理機能を体験してみた

はじめに

本記事は下記アドベントカレンダーの12/20分の記事になります。
Microsoft Azure Cognitive Services Advent Calendar 2020 - Qiita

今回の目的

MS Learnのモジュールを使って、Form Recognizerを使うとどんなデータが得られるのか知る!
docs.microsoft.com

Form Recognizerとは?

Azure Cognitive Servicesのひとつで、
ドキュメントからテキスト、キーと値のペア、テーブル、構造などを特定して抽出してくれるWeb APIです。
領収書や名刺などの写真からデータを抽出できます。
Form Recognizer とは - Azure Cognitive Services | Microsoft Docs


[アップデート情報]
2020年11月に日本語対応になりました。
(今回の記事ではそこまで試せてません…すみません。
What's new in Form Recognizer? - Azure Cognitive Services | Microsoft Docs

「Form Recognizer を使用した領収書の分析」演習

必要なもの

Microsoft Azure サブスクリプション

Azure Machine Learning ワークスペースの作成

Azure上でMachine Learningリソースを作ります。
f:id:mitsunooon:20201217221440j:plain
f:id:mitsunooon:20201217221454j:plain

Azure Machine Learning Studioでの操作

Machine Learningのリソースができると、Azure Machine Learning Studioへ移動できます。
f:id:mitsunooon:20201217221815j:plain


Azure Machine Learning Studioとは
データ サイエンティスト開発者向けの Web ポータルです。
Azure Machine Learningの中の一つのサービスです。
プロジェクト作成とアセット管理のための少量コードおよびコードなしのオプションが用意されています。
Azure Machine Learning スタジオとは | Microsoft Docs

初回接続時にはワークスペースの設定があります。
f:id:mitsunooon:20201217221522j:plain


無事にAzure Machine Learning Studioが開けると、ホーム画面が出ます。
これだけでもできることが多そうに見えますね。
f:id:mitsunooon:20201217221827j:plain

コンピューティングインスタンスの作成

演習内容を実行するための仮想マシンを作ります。

Azure Machine Learning コンピューティング インスタンスとは
データ サイエンティスト向けのマネージド クラウドベース ワークステーションです。
機械学習のための仮想マシンのような感じでしょうかね。
Azure Machine Learning コンピューティング インスタンスとは - Azure Machine Learning | Microsoft Docs


このコンピューティングインスタンスを作るときに少し狼狽えました。
なぜなら作れるVMがひとつもなかったのです!
f:id:mitsunooon:20201217222550j:plain


別途ライセンスが必要なのかしらと不安になりましたが、よく見てみるとこんな表記が。
f:id:mitsunooon:20201217222632j:plain


まさかこんなところでCOVID-19の影響を感じることになるとは思いませんでした。
クォータ制限引き上げのリクエストを送ると使えるようになるとのことなので、送りました。
モジュールに書いてある指定のStandard_DS11_v2はDv2シリーズなので指定をします。
メモリを最適化した Dv2 と DSv2 シリーズ VM - Azure Virtual Machines | Microsoft Docs

f:id:mitsunooon:20201217222710j:plain


リクエストを送って、1~2分後くらいにリクエスト承認のメールが飛んできます。
そのメールを受け取った直後はまだ制限引き上げされませんでしたが、その日のうちくらいには使えるようになりました。
これで無事にコンピューティングインスタンスが作成できました。
f:id:mitsunooon:20201217222957j:plain
f:id:mitsunooon:20201217223006j:plain

演習用ファイルを用意する

スタジオ上の[Notebooks]に新しいファイルを作成します。
f:id:mitsunooon:20201217223037j:plain


GitHubから演習ファイルをクローンします。
大量のファイルが作成されます。
これを使うためにはAzure上のForm Recogniserリソースにあるキーとエンドポイントが必要になります。
f:id:mitsunooon:20201217223115j:plain
f:id:mitsunooon:20201217223126j:plain

Form Recogniserのリソース作成

AzureポータルでForm Recogniserリソースを作ります。
f:id:mitsunooon:20201217223356j:plain


キーとエンドポイントを使用しますので、メモしておきます。
f:id:mitsunooon:20201217223409j:plain

演習ファイルの実行

Azure Machine Learning Studioに戻り、[01f - Receipts with Form Recognizer.ipynb]を開きます。
4種類の実行できるセルが含まれたドキュメントのようなものが開きます。
2つめのセルに先ほどメモしたキーとエンドポイントを入力します。
f:id:mitsunooon:20201217223803j:plain


[すべてのセルの計算と実行を開始する]を実行します。
1つ目のセルに読み取り対象のレシート画像が表示されます。
f:id:mitsunooon:20201217224659j:plain


4つ目のセルに読み取ったレシートの情報が出力されます。
f:id:mitsunooon:20201217224738j:plain


別のレシート画像を[ai-fundamentals]>[data]>[form-receipt]のフォルダにアップロードして
ソースコードを編集すれば、別のレシート画像で試せます。
f:id:mitsunooon:20201217224941j:plain
f:id:mitsunooon:20201217224952j:plain

コスト

MS Learn の最後にもコンピューティング インスタンスは使ってないときは停止するように書いてあります。
止めなかったらどれだけ恐ろしいことになっちゃうの…?とびくびくしていましたが、
今回設定したコンピューティングインスタンスは$0.23/時間でしたので、
動作確認に何回か動かした程度であれば、問題ありませんでした。
(それでもちりつもなので、使っていないときは停止させます。
f:id:mitsunooon:20201217225029j:plain

おわりに

今回は出来上がっているものをちょっと触っただけですが、画像からそれなりにちゃんとデータを取り出してくれることがわかっただけでも面白かったです。
このモジュールでは日本語レシートはあまりちゃんと読み取ってもらえなかったので、日本語対応を試すには別の方法をやってみようと思います。