Computer Visionのパフォーマンスについて検証する - Azure & Power Automate

# はじめに
Computer Visionによって、OCR(光学文字認識)の機能を利用することができます。
Power Platform上では`AI Builder`のOCRも使えますが、
今回は**Computer Vision**を使った例をご紹介します。

::: note warn
この記事は2023年10月9日時点の情報をもとに記載しています。
:::

# Computer Visionとは
画像からテキストを抽出するためのAIサービスです。

|機能|内容
|---|---
|画像分析|画像からタグ、オブジェクト、キャプション、人物などの特徴を検出し、分類します。画像の内容や意味を理解するのに役立ちます。
|OCR|画像から印刷されたテキストや手書きのテキストを読み取ります。ドキュメントやレシートなどの画像からテキストを抽出するのに便利です。
|顔検出|画像から顔を検出し、顔の属性や感情を分析します。顔認証や年齢推定などの用途に使えます。
|カスタムモデル|カスタムの画像分析モデルを作成し、特定のドメインやシナリオに適した画像認識を実現します。自分でデータを用意してトレーニングすることができます。

https://learn.microsoft.com/ja-jp/azure/ai-services/computer-vision/

## Computer Visionの使い方
Computer Visionは既にコネクタが用意されています。
接続方法は

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/d778f2ce-2d31-6d7b-be14-b50c0c867304.png)

 - Api Key(非推奨)
 - Azure AD Integrated

https://learn.microsoft.com/ja-jp/connectors/cognitiveservicescomputervision/

## 実験
試しにそこらへんにあったクレジットカード?の案内の裏面で文字起こしをしてみます。
結果はどうなるでしょうか？

![test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/84addb36-61dd-ebf6-b3c6-1cfcc38454eb.png)


```
接 触 ℃ 搭 載 カ ー ド に つ い て の ご 案 内
カ ー ド こ 利 用 時 の セ キ 0 リ テ ィ を 確 保 し 、 お 客 様 に よ り 安 心 し て こ 利 用 い た だ
く た め に 、 接 触 チ ッ プ を 搭 載 し て お り ま す 。
く 接 融 ℃ 搭 カ ー ド の ご 利 用 は 以 下 の 内 容 に ご 注 意 く だ さ い 〉
〇 接 触 カ ー ド 取 扱 加 盟 店 で の こ 利 用 の 際 は ク レ ジ ッ ト カ ー ド 暗 証 番 号 ( 4 桁 )
が 必 要 と な り ま す 。
〇 暗 証 番 号 が ご 不 明 の 場 合 、 ま た は 暗 証 番 号 の 変 更 を こ 希 望 の 場 合 は 、 以 下
を ご 確 認 く だ さ い 。
暗 証 番 号 が ご 不 明 の 場 合
お 客 さ ま の 証 番 号 を 郵 送 に て ご 通 知 い た し ま す 。 会 員 こ 本 人 よ り ビ ュ ー カ ー
ド 会 員 専 用 イ ン タ ー ネ ッ ト サ ー ピ ス 「 VIEW's NET 」 ( 登 録 無 料 ) で お 手 続
き い た だ く か 、 お 電 話 に て ピ ュ ー カ ー ド セ ン タ ー ま で お 申 し 出 く だ さ い 。
な お 、 暗 証 番 号 は お 電 話 で の ご 案 内 が で き ま せ ん の で こ 了 承 く だ さ い 。
脂 証 番 号 の 変 更 を ご 希 望 の 場 合
カ ー ド の 再 発 行 が 必 要 と な り ま す の で 、 会 員 こ 本 人 よ り ビ ュ ー カ ー ド セ ン
タ ー ま で お 申 し 出 く だ さ い 。 ま た 再 発 行 手 数 料 524 円 ( 税 込 ) が 必 要 と
な リ ま す 。
※ お 手 続 き に は 、 お 手 も と に カ ー ド を こ 準 催 く だ さ い 。
```

空白が多く、読みづらい印象を受けます。
別の手段で`Computer Vision v4.0 Read OCR `をHTTP要求経由で実施してみます。

## AzureのリソースのREST APIを実行する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/66ef9c5e-105e-63e9-be49-c67386c6ae92.png)

この中の「Extract text from images」が`Computer Vision v4.0 Read OCR `に該当します。
未だプレビュー段階の機能です。

https://learn.microsoft.com/ja-jp/azure/ai-services/computer-vision/concept-ocr

上記の機能を`HTTP要求`で実行し、Computer Visionコネクタとの精度について、差分を検証します。

### Computer Vision v4.0 Read OCR

https://centraluseuap.dev.cognitive.microsoft.com/docs/services/unified-vision-apis-public-preview-2023-02-01-preview/operations/61d65934cd35050c20f73ab6

下記のようにURLで機能を定義します。
 - Computer Visionのリソースを作成し
 - POST先のURLを入力します。

```plaintext
https://{endpoint}/computervision/imageanalysis:analyze?api-version=2023-02-01-preview[&features][&model-name][&language][&smartcrops-aspect-ratios][&gender-neutral-caption]
```

Portalの画面を見ながら解説すると

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/28ccf07a-8a52-f263-7fd4-c73cdaa24ca3.png)

[👆の赤枠内のURL] + computervision/imageanalysis:analyze? + parameter

```plaintext
https://{endpoint}/computervision/imageanalysis:analyze?api-version=2023-02-01-preview&features=read
```

#### Parameters
 - 全てoptional

|Parameters|Data Type|Description
|---|---|---
|features|string|The visual features requested: tags, objects, caption, denseCaptions, read, smartCrops, people. This parameter needs to be specified if the parameter "model-name" is not specified.
|model-name|string|The name of the custom trained model. This parameter needs to be specified if the parameter "features" is not specified.
|language|string|The desired language for output generation. If this parameter is not specified, the default value is "en". See https://aka.ms/cv-languages for a list of supported languages.
|smartcrops-aspect-ratios|string|A list of aspect ratios to use for smartCrops feature. Aspect ratios are calculated by dividing the target crop width by the height. Supported values are between 0.75 and 1.8 (inclusive). Multiple values should be comma-separated. If this parameter is not specified, the service will return one crop suggestion with an aspect ratio it sees fit between 0.5 and 2.0 (inclusive).
|gender-neutral-caption| boolean|Boolean flag for enabling gender-neutral captioning for caption and denseCaptions features. If this parameter is not specified, the default value is "false".


Power Automateの場合は、`HTTP`アクションに、`クエリ`があるので、そちらに設定値を入力すると、見易さが増します。

# 差分の検証
Power Automateで下記のような並列分岐のフローを作成し、どのくらい差分がでるか検証します。

## HTTPアクション
HTTPアクションの値は下記のとおり

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/fe3664ac-e70f-d823-56b9-d88294532260.png)

|項目|設定値
|---|---
|方法|POST
|URI|上記で設定したURL - https://{endpoint}/computervision/imageanalysis:analyze

- **ヘッダー**

|項目|値
|---|---
|Content-Type|application/octet-stream
|Ocp-Apim-Subscription-Key|Computer Visionのシークレット

- **クエリ**

|項目|値
|---|---
|api-version|2023-02-01-preview
|features|read

本文は**OneDrive for Business「ファイル コンテンツの取得」**

::: note info
application/octet-streamによって **[Binary image data]をOCRの対象として解析できます** 。
非常に便利な機能です。
:::

## 結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/0811d2f4-442b-8ba5-17ef-c5fbfcfe65ae.png)

あきらかにHTTP要求のComputer Visionの精度が高いことが見て取れます。

```plaintext:Result.txt
接触IC搭載カードについてのご案内
カードご利用時のセキュリティを確保し、お客様により安心してご利用いただ
くために、接触ICチップを搭載しております。
〈接触IC搭載カードのご利用は以下の内容にご注意ください〉
○接触ICカード取扱加盟店でのご利用の際はクレジットカード暗証番号(4桁)
が必要となります。
○暗証番号がご不明の場合、または暗証番号の変更をご希望の場合は、以下
をご確認ください。
暗証番号がご不明の場合
お客さまの暗証番号を郵送にてご通知いたします。会員ご本人よりビューカー
ド会員専用インターネットサービス「VIEW’s NET」(登録無料)でお手続
きいただくか、お電話にてピューカードセンターまでお申し出ください。
なお、暗証番号はお電話でのご案内ができませんのでご了承ください。
暗証番号の変更をご希望の場合
カードの再発行が必要となりますので、会員ご本人よりビューカードセン
ターまでお申し出ください。また再発行手数料524円(税込)が必要と
なります。
※お手続きには、お手もとにカードをご準備ください。
```

素晴らしい精度です。
**コネクタと比較してみましたが、いずれコネクタもアップグレードして、この精度のOCRに変わっていくでしょう。**

# 最後に
今回の記事は検証してみた記事になります。
ケースバイケースで使い分けてみてください。