Form Recognizerの読み取り枚数をREST API経由で取得する

Form Recognizerの料金は読み取り枚数に対して課金される仕組みです。そのため、どのくらい使用しているかは確認したくなると思います。

一番簡単な確認方法としてはAzureポータルのForm Recognizerのリソースのページから確認することができます。

ただ、この方法だと権限が必要だったり、わざわざページにアクセスしなければいけなかったり、面倒なことも多いです。

そこで、今回はAPI経由で読み取り枚数を取得する方法を解説しようと思います。

前提

  • Visual Studio CodeのREST Clientを利用する
  • Azure ADにアプリの登録ができており、クライアントシークレットを作成済みであること

手順

1. Form RecognizerリソースのIAM設定

作成済みのAzure ADアプリに対して「監視閲覧者」の権限を付与します。
具体的な手順は以下を参考にしてください。

learn.microsoft.com

2. Azure ADのアクセストークンを取得

Azureリソースへアクセスすためのトークを取得します。

POST https://login.microsoftonline.com/[テナントID]/oauth2/v2.0/token
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=[クライアントID]
&scope=https://management.core.windows.net/.default
&client_secret=[クライアントシークレット]
&grant_type=client_credentials

これを実行すると以下のような結果が取得できます。

{
   "token_type": "Bearer",
   "expires_in": 3599,
   "access_token":"eyJ..."
}

access_tokenは次の手順で利用します。

3. Form Recognizerのメトリクスから読み取り枚数を取得

API経由でのメトリクスへのアクセスは以下のドキュメントに記載があります。

learn.microsoft.com

ただ、Form Recognizerの読み取り枚数を取得するにはここだけだと分かりにくいと思います。(自分は苦労しました)

以下は2023年3月の読み取り枚数を1日ごとに取得する例です。

GET https://management.azure.com/subscriptions/[サブスクリプションID]/resourceGroups/[リソースグループ名]/providers/Microsoft.CognitiveServices/accounts/[リソース名]/providers/Microsoft.Insights/metrics?timespan=2023-03-01T00:00:00Z/2023-03-31T23:59:00Z&metricnames=ProcessedPages&interval=P1D&api-version=2018-01-01
ヘッダー:
Authorization: Bearer [Azure ADのアクセストークン(手順1で取得したaccess_token)]
Host: management.azure.com

URLに設定しているパラメータの意味は以下の通りです。

  • timespan:どの期間のデータを取得したいかを設定します
  • metricnames:何のデータを取得したいかを指定します(ここ重要!
  • interval:どの間隔でデータを取りたいかを設定します(上記例のP1Dでは1日ごと) ←指定しないと1分毎のデータを取得します

特に重要なのはmetricnamesです。ここでProcessedPagesと設定しないとProcessedPagesの値が取得できません。

結果は以下のように取得できます。

{
  "cost": 44638,
  "timespan": "2023-03-01T00:00:00Z/2023-03-31T23:59:00Z",
  "interval": "P1D",
  "value": [
    {
      "id": "/subscriptions/.....",
      "type": "Microsoft.Insights/metrics",
      "name": {
        "value": "ProcessedPages",
        "localizedValue": "Processed Pages"
      },
      "displayDescription": "Number of pages processed",
      "unit": "Count",
      "timeseries": [
        {
          "metadatavalues": [],
          "data": [
            {
              "timeStamp": "2023-03-01T00:00:00Z",
              "total": 0
            },
            {
              "timeStamp": "2023-03-02T00:00:00Z",
              "total": 0
            },
            (省略)
            {
              "timeStamp": "2023-03-09T00:00:00Z",
              "total": 3
            },
            {
              "timeStamp": "2023-03-10T00:00:00Z",
              "total": 20
            },
           (省略)
          ]
        }
      ],
      "errorCode": "Success"
    }
  ],
  "namespace": "Microsoft.CognitiveServices/accounts",
  "resourceregion": "westus2"
}

totalの値をすべて足し合わせれば月の利用枚数を取得できます。

おわりに

以上、Form Recognizerの利用枚数の取得方法について書きました。

最初に仕組みさえ作ってしまえは簡単にチェックできるようになるのでぜひ使ってみてください。

執筆担当者プロフィール
古川 貴浩

古川 貴浩(日本ビジネスシステムズ株式会社)

HoloLens 2アプリケーションの開発をしています。

担当記事一覧