Azure Machine Learning の Form Recognizer を勉強します。
Microsoft Learn はこちらです。
演習課題はこちらです。
Form Recognizer は、紙帳票を PDF や画像化して、そこからテキストなどの情報を検出する、というのが典型的な使い方になると思います。
世の中、まだまだ紙帳票が幅をきかせてますので、Scansnap と組み合わせて帳票の読み込みシステムなんかを提案するのに使えると思います。
他にはスクレイピングで PDF からデータをゲットするのにも使えると思います。
使用に際して、Microsoft アカウントを作成し、Azure Portal にログインしておきます。
準備
Azure Portal で「リソース、サービス、ドキュメントの検索」で「Form Recognizer」を入力し、検索します。
「+作成」ボタンから Form Recognizer のサービスアカウントを作成します。
左ペインの「キーとエンドポイント」をクリックし、キー1とエンドポイントを控えておきます。
Learn の演習を試す
演習を進めていきます。Powershell ターミナルを開き、git コマンドを使って、サンプルコードをダウンロードします。
git clone https://github.com/MicrosoftLearning/AI-900-AIFundamentals ai-900
この AI-900-AIFundamentals には、AI-900 の他の演習のコードも含まれていますが、ここでは「form-recognizer.ps1」を使用します。エディタを開いて、1、2行目を編集します。
$key="YOUR_KEY" # 自分のキーに書き換える
$endpoint="YOUR_ENDPOINT" # 自分のエンドポイント URL に書き換える
# Create the URL where the raw receipt image can be found
$img = "https://raw.githubusercontent.com/MicrosoftLearning/AI-900-AIFundamentals/main/data/vision/receipt.jpg"
# Create the header for the REST POST with the subscription key
# In this example, the URL of the image will be sent instead of
# the raw image, so the Content-Type is JSON
$headers = @{}
$headers.Add( "Ocp-Apim-Subscription-Key", $key )
$headers.Add( "Content-Type","application/json" )
変数 key には、Azure Portal の Form Recognizer のサービスアカウントで控えたキーを、変数 endpoint にはエンドポイントを代入します。
保存したらターミナルから実行してみます。
PS C:\ai-900> .\form-recognizer.ps1
Sending receipt...
...Receipt sent.
Getting results...
...Done
Receipt Type: Itemized
Merchant Address: 123 Main Street
Merchant Phone: 555-123-4567
Transaction Date: 2020-02-17
Receipt Items:
Item # 1
- Name: Apple
- Price: 0.9
Item # 2
- Name: Orange
- Price: 0.8
Subtotal: $1.70
Tax: $0.17
Total: $1.87
検出できたかどうかを確認するため、元の画像を見てみます。
おー、読み取れてますね。
日本語が含まれているものはどうでしょうか。
ネットで適当に見つけたレシートです。お借りします。
サンプルのコードを編集します。
04 # Create the URL where the raw receipt image can be found
05 # 元の $img をコメントアウト
06 #$img = "https://raw.githubusercontent.com/MicrosoftLearning/AI-900-AIFundamentals/main/data/vision/receipt.jpg"
07 # 見つけたレシートのURLを$imgに代入
08 $img = "https://images.ctfassets.net/gc4s9mi2asix/2oqypNvnB2KBBVCxMsp3io/b178c4d155b1f0a629ed6dae05eb0815/69293f3f47e533e9fcc2023595ba89ce.png"
09
10 # Create the header for the REST POST with the subscription key
さっそく実行します。
PS C:\ai-900> .\form-recognizer.ps1
Sending receipt...
...Receipt sent.
Getting results...
...Done
Receipt Type: Itemized
Merchant Address:
Merchant Phone:
Transaction Date:
Receipt Items:
Subtotal:
Tax:
Total:
認識しないですね。。。
実は、Form Recognizer はすでに version 3.0 の開発が進められていて、2022-8-30 に GA となっています。こちらであれば、認識できました。
version 3.0 については、別記事として勉強の記録を残しています。
Azure Machine Learning ことはじめ(Form Recognizer version 3.0 2022-08-31版)
Form Recognizer Studio を使う
実は Powershell などで開発しなくても、Form Recognizer Studio を使うことで簡単に画像からデータの読み込みを行うことができます。
AI-900 のサンプルのようなレシートの読み込みであれば、メニューから「Receipts」をクリックします。
使い方は、左上の「Drag and drop document here」にレシートファイルをドラッグ&ドロップし、横の「Analyze」をクリックするだけです。
結果は、右の Fields、Result、Code で確認することができます。
参考
関連記事
Azure Machine Learning ことはじめ(Custom Vision による画像分類)
Azure Machine Learning ことはじめ(Azure Machine Learning Studio を使ったデータ分類)
Azure Machine Learning ことはじめ(テキスト分析)
Azure Machine Learning ことはじめ(Form Recognizer version 3.0 2022-08-31版)