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

本頁說明如何使用 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 時所需的角色

    如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (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

上海街道圖片。
圖片來源: Steve Long 於 Unsplash。

建立要求 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

後續步驟

  • 請參閱這份清單,瞭解所有特徵類型及其用途。
  • 透過 Vision API 用戶端程式庫,以您選擇的語言開始使用 Vision API。
  • 請參閱使用指南,進一步瞭解特定功能、查看註解範例,以及取得個別檔案或圖片的註解。
  • 瞭解如何批次註解圖片和檔案 (PDF/TIFF/GIF)。
  • 瀏覽用戶端程式庫程式碼範例的完整清單。