4
1

More than 1 year has passed since last update.

Cognitive Services Computer Vision Read OCR を Docker コンテナーで使ってみる

Last updated at Posted at 2022-03-17

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/ の形式) をコピーしてローカルに保存しておきます。

image.png

Docker 環境のインストール

Docker Desktop のインストールで Docker 環境を構築することが可能です。
Docker: Getting Started のページから Docker Desktop を選択、ダウンロードしてインストールします。

image.png

2021年8月より Docker のサブスクリプションプランが変更されており、有償となる場合がありますのでご注意ください。(個人、OSSの開発、教育機関などの場合は無料で利用できるとのこと)
Docker FAQs: Updated Docker Subscription and Licensing Questions

手順

以下の手順は、Windows PowerShell および Docker Desktop で操作、確認を行います。
Windows PowerShell は管理者権限で起動しておきます。

image.png

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

image.png

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 コンテナーが表示されます。

image.png

また、Images 画面で Read OCR のイメージが表示され、利用されているのが確認できます。

image.png

Computer Vision Read OCR コンテナー を使ってみる

ブラウザーを開き、http://localhost:5000 にアクセスすると、Cognitive Services コンテナーが起動している画面が表示されます。Service API Desciption をクリックして Swagger Document ページを開きます。

image.png

[POST]/vision/v3.2/read/analyze をクリックして表示します。

image.png

Web API を利用する際のパラメーターなどの情報が表示されます。
こちらのページで使ってみるには、[Try it out] をクリックします。

image.png

Request Body のフォーマットで application/octet-stream を選択します。
[ファイルを選択] で分析したいローカルファイルを選択、Execute をクリックして送信します。

image.png

Server Response202 であれば正常に送信できています。
Response Header に表示される operation-location の値 (URL) で結果が取得できます。
http://localhost:5000/vision/v3.2/read/analyzeResults/ に続く ID (operation Id) をコピーします。

image.png

Swagger Document から [GET]/vision/v3.2/read/analyzeResults/{operationId} をクリックして表示し、[Try it out] をクリックします。

image.png

Parameters にある operationId にコピーしておいた Operation Id をペーストして [Execute] をクリックして送信すると、Server ResponseResponse Body に分析結果が JSON 形式で表示されます。

image.png

Computer Vision Read OCR コンテナーによる画像分析例

例えば、こちらの画像を分析すると、

image.png

このような分析結果となります。検出される文字 (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

Docker Desktop からも停止、開始、削除を行うことが可能です。
image.png

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1