Microsoft Azure の AI サービスである Cognitive Services は Web API として利用できるだけでなく、Docker コンテナーとして稼働させることが可能です。エッジデバイス にインストールして利用するといった用途が考えられ、ダイレクトに (Web を介さずに) 分析できるので速い、クラウドへ分析データを送信しないというメリットがあります。
今回はローカル PC で稼働する Docker 環境で利用できる Cognitive Services コンテナーのうち、 Conputer Vision Read OCR (画像OCRサービス) を稼働させ、使ってみる方法を紹介します。
クラウドに分析データを送信することはありませんが、サービスの利用量を計上するためのインターネット接続が必要になる場合があります。(完全にオフライン環境で利用できるサービスは Private Preview で提供中)
環境
以下の手順は、こちら↓の PC 環境で動作確認をしています;
Windows 11 Enterprise 21H2
x64 | Intel Core i7 | RAM 16 GB
準備
Azure サブスクリプション申し込み & Cognitive Services Compter Vision サービス作成
Microsoft Azure & Cognitive Services 利用準備 を参考に、Azure サブスクリプションの申し込み、および Computer Vision サービスを作成しておきます。(無料版でOKです。)
Key, Endpoint の取得
Azure Portal にサインインして作成した Computer Vision のサービスを開きます。
左列メニューから キーとエンドポイント をクリックして開きます。キー1 の右側にある青いアイコンをクリック or キーの表示をクリックして、表示されるキー (文字&数字の20文字程度) をコピーしてローカルに保存しておきます。
同様に エンドポイント に表示される値 (https://YOUR_SERVICENAME.cognitiveservices.azure.com/ の形式) をコピーしてローカルに保存しておきます。
Docker 環境のインストール
Docker Desktop のインストールで Docker 環境を構築することが可能です。
Docker: Getting Started のページから Docker Desktop を選択、ダウンロードしてインストールします。
2021年8月より Docker のサブスクリプションプランが変更されており、有償となる場合がありますのでご注意ください。(個人、OSSの開発、教育機関などの場合は無料で利用できるとのこと)
Docker FAQs: Updated Docker Subscription and Licensing Questions
手順
以下の手順は、Windows PowerShell および Docker Desktop で操作、確認を行います。
Windows PowerShell は管理者権限で起動しておきます。
Computer Vision Read OCR コンテナーの Pull
PowerShell から Docker コマンド (docker pull) を使って、Computer Vision Read OCR コンテナー をローカルにダウンロードします。
パラメーターで 2022 年 3 月現在の最新モデル、v3.2 preview 2022-01-30 を指定しています。
docker pull mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-01-30-preview
ダウンロードが終わったら、docker image コマンドで、Read OCR イメージがローカルに作成されていることを確認します。
docker image ls
Computer Vision Read OCR コンテナーの起動
PowerShell から docker run コマンドで 以下のパラメーターを設定して Read OCR コンテナーを起動します。
パラメーター | 内容 | 値 | |
---|---|---|---|
-p | ローカルポート | 5000 | ※お好みのポートでOK |
--name | コンテナー名 | ReadOCR | ※お好みの名前でOK |
--memory | コンテナーのメモリー | 16g | Read OCR コンテナーの最小値 |
--cpus | コンテナーのCPU数 | 4 | Read OCR コンテナーの最小値 |
Eula | 利用許諾 | accept | ※必須 |
Billing | Read OCR 課金URL | ローカルに保存しておいた エンドポイント | ※必須 |
ApiKey | Read OCR Key | ローカルに保存しておいた キー1 | ※必須 |
docker run -itd -p 5000:5000 --name ReadOCR --memory 16g --cpus 4 mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-01-30-preview Eula=accept Billing=https://YOUR_SERVICENAME.cognitiveservices.azure.com/ ApiKey=YOUR_API_KEY
Docker Desktop を起動すると、Container/Apps 画面に ReadOCR コンテナーが表示されます。
また、Images 画面で Read OCR のイメージが表示され、利用されているのが確認できます。
Computer Vision Read OCR コンテナー を使ってみる
ブラウザーを開き、http://localhost:5000 にアクセスすると、Cognitive Services コンテナーが起動している画面が表示されます。Service API Desciption をクリックして Swagger Document ページを開きます。
[POST]/vision/v3.2/read/analyze をクリックして表示します。
Web API を利用する際のパラメーターなどの情報が表示されます。
こちらのページで使ってみるには、[Try it out] をクリックします。
Request Body のフォーマットで application/octet-stream を選択します。
[ファイルを選択] で分析したいローカルファイルを選択、Execute をクリックして送信します。
Server Response が 202 であれば正常に送信できています。
Response Header に表示される operation-location の値 (URL) で結果が取得できます。
http://localhost:5000/vision/v3.2/read/analyzeResults/ に続く ID (operation Id) をコピーします。
Swagger Document から [GET]/vision/v3.2/read/analyzeResults/{operationId} をクリックして表示し、[Try it out] をクリックします。
Parameters にある operationId にコピーしておいた Operation Id をペーストして [Execute] をクリックして送信すると、Server Response の Response Body に分析結果が JSON 形式で表示されます。
Computer Vision Read OCR コンテナーによる画像分析例
例えば、こちらの画像を分析すると、
このような分析結果となります。検出される文字 (text) や信頼度 (confidence)、テキストの位置 (boundingBox)、画像内でのサイズ (width | height)、傾き (angle) などの情報が取得できます。
{
"status": "succeeded",
"createdDateTime": "2022-03-17T05:54:47Z",
"lastUpdatedDateTime": "2022-03-17T05:54:59Z",
"analyzeResult": {
"version": "3.2.0",
"modelVersion": "2022-01-30-preview",
"readResults": [
{
"page": 1,
"angle": 17.8705,
"width": 822,
"height": 379,
"unit": "pixel",
"lines": [
{
"boundingBox": [ 163, 55, 368, 142, 357, 167, 155, 79],
"text": "東海道·山陽新幹線",
"appearance": {
"style": {
"name": "other",
"confidence": 0.972
}
},
"words": [
{
"boundingBox": [ 171, 59, 185, 65, 177, 90, 163, 84 ],
"text": "東",
"confidence": 0.993
},
{
"boundingBox": [ 193, 69, 208, 75, 199, 100, 185, 94 ],
"text": "海",
"confidence": 0.995
},
{
"boundingBox": [ 219, 80, 234, 86, 225, 111, 210, 105 ],
"text": "道",
"confidence": 0.996
},
:
(以下省略)
Computer Vision Read OCR コンテナーの停止 | 再起動 | 削除
docker stop コマンドで、Read OCR コンテナーの稼働を停止します。
docker stop ReadOCR
次回利用する際は docker start コマンドで Read OCR コンテナーを起動すればOKです。
docker start ReadOCR
削除したい場合は、docker rm コマンドで Read OCR コンテナーを削除します。
docker rm ReadOCR