画像分析ってなんか難しそう…と思っている方へ朗報です!

Cloud Vision APIを使えば、画像に写っている文字をテキスト化することができます。

エンジニアはPythonなどでSDKを使ってVision APIを呼び出すことが多いかもしれませんが、今回は、プログラムに不慣れな人でもできるように、APIを実際に試す際に便利なツール「Postman」を使って、Vision APIの検証をしてみました。

正直、PythonなどSDKでやるのに比べるとPostmanで設定するのはひと工夫必要でした。特にアクセストークンの取得が面倒でしたね。

でも、この手順に沿って進めれば、PostmanでもVision APIを呼び出すことは可能です。画像分析に興味がある方は、ぜひ参考にしてください!


Vision API とは?

Vision APIは、Google Cloud Platform が提供する画像分析サービスです。画像に何が写っているのか、どんなオブジェクトがあるのか、文字情報などを抽出することができます。

公式:https://cloud.google.com/vision?hl=ja

OCR検証方法

今回は、Cloud Storageに保存した画像ファイルをVision APIで分析する方法で検証しました。

https://cloud.google.com/vision/docs/ocr?hl=ja

1. APIキーの取得

Vision API を利用するには、API キーが必要です。 Google Cloud Console で API キーを作成し、取得しておきましょう。

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

API への認証には、APIキーだけでなく、加えてアクセストークンが必要です。

このアクセストークンの取得が少々面倒です。(トークンを発行し、そのトークンをコピペしてあげる必要がある上、有効期限がデフォルトで1時間

ターミナルで以下のコマンドを実行し、アクセストークンを取得します。

(Terminal.appにて)
gcloud auth login [YOUR_ACCOUNT]
echo $(gcloud auth print-access-token)

Vision API及びCloud Storageへのアクセス権を持ったユーザーアカウントでログインします。

ユーザーアカウントが必要なので、RPAなどで自動化する際は気をつけないといけないかもしれません。

そもそもgcloudを叩くのが初めてな人は、ローカルでインストールが必要です。

参考:https://cloud.google.com/sdk/docs/install-sdk?hl=ja

3. Cloud Storageに画像を保存

説明は割愛

4. Postman でのリクエスト設定

Postman を起動し、以下の設定を行います。

  • リクエストメソッド: POST
  • リクエストURL: https://vision.googleapis.com/v1/images:annotate?key=YOUR_API_KEY
    • (YOUR_API_KEY は1で取得した API キーに置き換えてください)
  • ヘッダー:
    • Content-Type: application/json
    • x-goog-user-project: YOUR_GC_PROJECT_ID
      • YOUR_GC_PROJECT_IDはご自身のプロジェクトIDに置き換える
    • Authorization: Bearer YOUR_ACCESS_TOKEN
      • YOUR_ACCESS_TOKEN は2で取得したアクセストークンに置き換える
  • Body:

    JSON

    {
      "requests": [
        {
          "image": {
            "source": {
              "imageUri": "gs://YOUR_BUCKET_NAME/YOUR_IMAGE_FILE.jpg" 
            }
          },
          "features": [
            {
              "type": "TEXT_DETECTION"
            }
          ]
        }
      ]
    }
    

    (YOUR_BUCKET_NAME と YOUR_IMAGE_FILE.jpg は、それぞれ 3で画像を保存したCloud Storage のバケット名と画像ファイル名に置き換えてください)

 

実行結果

リクエストを送信すると、以下のようなレスポンスが返ってきます。

JSON

{
  "responses": [
    {
      "textAnnotations": [
        {
          "locale": "en",
          "description": "検出された文字列",
          "boundingPoly": {
            "vertices": [
              {
                "x": 147,
                "y": 205
              },
              {
                "x": 695,
                "y": 205
              },
              {
                "x": 695,
                "y": 295
              },
              {
                "x": 147,
                "y": 295
              }
            ]
          }
        }
      ]
    }
  ]
}

レスポンスには、画像から検出された文字列の言語、検出された文字、位置情報(4点)が含まれています。

まとめ

今回は、Postman を使って Vision API を検証してみました。

PythonなどのSDKを使うのに比べると、API キーやアクセストークンの取得など、ひと手間かかる部分もありました。

とはいえ、Postman を使えば、GUIで手軽にAPIを呼び出せるので、一度設定してしまえば、その後のちょっとした検証には便利だと思います。

ぜひ、皆さんも Vision API を活用して、文字認識に挑戦してみてください!


※ 注意

  • 上記のコードや設定はあくまで一例です。
  • API キーやアクセストークンは、厳重に管理してください。