Get hands-on experience with 20+ free Google Cloud products and $300 in free credit for new customers.

Missing Image URLs in Cloud Vision API Web Detection

I'm using the Google Cloud Vision API's Web Detection feature, but I'm encountering an issue where the image URLs ("fullMatchingImages", "partialMatchingImages", "visuallySimilarImages") are not being returned in the response. I'm only getting the label-related fields ("webEntities", "bestGuessLabels").

I've tried the following:

  • Calling the API from my own Python implementation.

  • Using the "Try it out" feature in the API documentation.

In both cases, the image URLs are missing. The labels are being returned correctly, so I believe the API call itself is fine.

Has anyone else encountered this issue? Any suggestions on how to resolve it?

Even with "Try it out", I'm getting the following response (image URLs are missing):

{
  "responses": [
    {
      "webDetection": {
        "webEntities": [
          {
            "entityId": "/m/09l9f",
            "score": 0.6879023,
            "description": "Carnival"
          },
          // ... other web entities
        ],
        "bestGuessLabels": [
          {
            "label": "carnival"
          }
        ]
      }
    }
  ]
}

Code Snippet (Python):

import os

from dotenv import load_dotenv
from google.cloud import vision
from google.oauth2 import service_account

load_dotenv()

credentials_dict = {
    "type": os.getenv("GCP_TYPE"),
    "project_id": os.getenv("GCP_PROJECT_ID"),
    "private_key_id": os.getenv("GCP_PRIVATE_KEY_ID"),
    "private_key": os.getenv("GCP_PRIVATE_KEY").replace("\\n", "\n"),
    "client_email": os.getenv("GCP_CLIENT_EMAIL"),
    "client_id": os.getenv("GCP_CLIENT_ID"),
    "auth_uri": os.getenv("GCP_AUTH_URI"),
    "token_uri": os.getenv("GCP_TOKEN_URI"),
    "auth_provider_x509_cert_url": os.getenv("GCP_AUTH_PROVIDER_X509_CERT_URL"),
    "client_x509_cert_url": os.getenv("GCP_CLIENT_X509_CERT_URL"),
    "universe_domain": os.getenv("GCP_UNIVERSE_DOMAIN"),
}
credentials = service_account.Credentials.from_service_account_info(credentials_dict)
client = vision.ImageAnnotatorClient(credentials=credentials)

image = vision.Image()
image.source.image_uri = "gs://cloud-samples-data/vision/web/carnaval.jpeg"

features = [vision.Feature(type_=vision.Feature.Type.WEB_DETECTION)]

response = client.annotate_image({"image": image, "features": features})

web_detection = response.web_detection

# Image URLs are missing
print(web_detection.full_matching_images)  # Output: []
print(web_detection.partial_matching_images)  # Output: []
print(web_detection.visually_similar_images)  # Output: []

# Labels are present
print(web_detection.web_entities)  # Output: [<Entity...>, ...]
print(web_detection.best_guess_labels)  # Output: [<Entity...>, ...]

Any help would be greatly appreciated!

 
0 1 588
1 REPLY 1