Form Recognizerで作成したモデルをコピーする

はじめに

Form Recognizerのカスタムモデルでモデルを作成した後、他のリソースにモデルをコピーしたいということがありました。例えば開発環境と本番環境で分けたい場合などです。

こういった場合にどのようにコピーするのか気になったので調べてみました。

環境

Visual Studio Code 1.72.2 (拡張機能で「REST Client」を使用)
REST Clientはエディタ上でHTTPリクエストを送信して結果を受信することができます。詳しくは以下をご覧ください。

marketplace.visualstudio.com

事前準備

コピー元、コピー先の両方のForm Recognizerのリソースから以下の情報を取得しておきます。

  • キー(画像の①)
  • エンドポイント(画像の②)

手順

こちらのドキュメントに方法が記載されているので、これをもとに進めていきます。

learn.microsoft.com

まず始めにコピー先にコピーの承認要求を送ります。
リクエストの方法は以下の通りです。

POST {コピー先のエンドポイント}formrecognizer/documentModels:authorizeCopy?api-version=2022-08-31
Ocp-Apim-Subscription-Key: {コピー先のキー}

{
  "modelId": "{コピー後のモデルIDを指定}"
}

結果が200 OKになっていれば成功です。 本文には以下のようなJSONがあります。

{
    "targetResourceId": "...",
    "targetResourceRegion": "...",
    "targetModelId": "...",
    "targetModelLocation": "...",
    "accessToken": "...",
    "expirationDateTime": "..."
}

ここは次で使用するのでコピーしておきます。

次にコピー元に対してコピー操作を行います。
本文のJSONは先ほど受け取ったJSONをそのまま貼り付けます。

POST {コピー元のエンドポイント}formrecognizer/documentModels/{コピーするモデルのID}:copyTo?api-version=2022-08-31
Ocp-Apim-Subscription-Key: {コピー元のキー}

{
    "targetResourceId": "...",
    "targetResourceRegion": "...",
    "targetModelId": "...",
    "targetModelLocation": "...",
    "accessToken": "...",
    "expirationDateTime": "..."
}

応答が202\Acceptedになっていれば成功です。

最後にコピー先にモデルがコピーされているか確認しましょう。
以下を実行するとForm Recognizerのリソースに存在するモデルの一覧を取得することができます。

GET {コピー先のエンドポイント}formrecognizer/documentModels?api-version=2022-08-31
Ocp-Apim-Subscription-Key: {コピー先のキー}

参考ページ

https://westus.dev.cognitive.microsoft.com/docs/services/form-recognizer-api-2022-08-31/operations/GetModels

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

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

アプリケーション開発をしています。.NETやAI関連が好きです。

担当記事一覧