使用指令列偵測圖片中的標籤

這個頁面說明如何使用 REST 介面curl 指令,將三個特徵偵測和註解要求傳送至 Vision API。

Vision API 可將 Google 影像辨識技術輕鬆整合至開發人員應用程式,您可以將圖片資料和所需功能類型傳送至 Vision API,API 隨後會根據您感興趣的圖片屬性,傳回相應的回覆。如要進一步瞭解提供的功能類型,請參閱「所有 Vision API 功能清單」。

事前準備

  1. 安裝 Google Cloud CLI。

  2. 設定 gcloud CLI,使用您的聯合身分。

    詳情請參閱「使用聯合身分登入 gcloud CLI」。

  3. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  4. 建立或選取 Google Cloud 專案

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
    • 建立專案:如要建立專案,您需要專案建立者角色 (roles/resourcemanager.projectCreator),其中包含 resourcemanager.projects.create 權限。瞭解如何授予角色
    • 建立 Google Cloud 專案:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替換為您要建立的 Google Cloud 專案名稱。

    • 選取您建立的 Google Cloud 專案:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替換為 Google Cloud 專案名稱。

  5. 確認專案已啟用計費功能 Google Cloud

  6. 啟用 Vision API:

    啟用 API 時所需的角色

    您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色

    gcloud services enable vision.googleapis.com
  7. 將角色授予使用者帳戶。針對下列每個 IAM 角色,執行一次下列指令: roles/storage.objectViewer

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    更改下列內容:

發出圖片註解要求

完成「事前準備」步驟後,即可使用 Vision API 為圖片檔加上註解。

在本範例中,您會使用 curl 傳送要求至 Vision API,並使用下列圖片:

Cloud Storage URI:

gs://cloud-samples-data/vision/using_curl/shanghai.jpeg

HTTPS 網址:

https://console.cloud.google.com/storage/browser/cloud-samples-data/vision/using_curl/shanghai.jpeg

上海街景圖片。
圖片來源Unsplash 的 Steve Long

建立要求 JSON

下列 request.json 檔案示範如何要求三項 images:annotate 功能,並限制回應中的結果。

建立具有下列文字的 JSON 要求檔案,並將檔案儲存為工作目錄中的 request.json 純文字檔案:

request.json

{
  "requests": [
    {
      "image": {
        "source": {
          "imageUri": "gs://cloud-samples-data/vision/using_curl/shanghai.jpeg"
        }
      },
      "features": [
        {
          "type": "LABEL_DETECTION",
          "maxResults": 3
        },
        {
          "type": "OBJECT_LOCALIZATION",
          "maxResults": 1
        },
        {
          "type": "TEXT_DETECTION",
          "maxResults": 1,
          "model": "builtin/latest"
        }
      ]
    }
  ]
}

傳送要求

您可以使用 curl 和 request.json 中的主體內容,將要求傳送至 Vision API。在指令列中輸入下列內容:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "x-goog-user-project: PROJECT_ID" \
    -H "Content-Type: application/json; charset=utf-8" \
    https://vision.googleapis.com/v1/images:annotate -d @request.json

解讀回應

您應該會看到類似下方的 JSON 回應。

要求 JSON 主體為各個註解類型指定 maxResults。 因此,您會在回應 JSON 中看到以下內容:

標籤偵測結果

  1. description: "人物", score: 0.950
  2. description: "街道", score: 0.891
  3. description: "交通工具", score: 0.890
上海街景圖片,內含標籤偵測結果。
圖片來源Unsplash 的 Steve Long (已新增註解)。

文字偵測結果

  • text: 牛牛面馆\n
  • vertices: (x: 159, y: 212), (x: 947, y: 212), (x: 947, y: 354), (x: 159, y: 354 )
上海街景圖片,內含文字偵測結果。
圖片來源Unsplash 的 Steve Long (已新增註解)。

物件偵測結果

  • name: "人", score: 0.944
  • normalized vertices: (x: 0.260, y: 0.468), (x: 0.407, y: 0.468), (x: 0.407, y: 0.895), (x: 0.260, y: 0.895)
上海街景圖片,內含物件偵測結果。
圖片來源Unsplash 的 Steve Long (已新增註解)。

恭喜!您已將第一個要求傳送至 Vision API。

清除所用資源

為了避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請刪除含有這些資源的 Google Cloud 專案。

選用:從 gcloud CLI 撤銷憑證。

gcloud auth revoke

後續步驟