"AttributeError: module'google.cloud.vision 'n'a pas d'attribut" types "" dans l'API Cloud Vision (GCP vision AI)

Aperçu

Lorsque j'exécutais le didacticiel de l'API de détection d'objets de GCP [^ 1], une erreur s'est produite, j'ai donc écrit une solution. La méthode d'authentification API est omise. Le langage utilisé est Python.

À propos de l'erreur

Lorsque j'exécute le code suivant dans le didacticiel, j'obtiens une AttributeError. (Le code ci-dessous est copié du tutoriel)

def localize_objects(path):
    from google.cloud import vision
    client = vision.ImageAnnotatorClient()

    with open(path, 'rb') as image_file:
        content = image_file.read()
    image = vision.types.Image(content=content)

    objects = client.object_localization(
        image=image).localized_object_annotations

    print('Number of objects found: {}'.format(len(objects)))
    for object_ in objects:
        print('\n{} (confidence: {})'.format(object_.name, object_.score))
        print('Normalized bounding polygon vertices: ')
        for vertex in object_.bounding_poly.normalized_vertices:
            print(' - ({}, {})'.format(vertex.x, vertex.y))

Les détails de l'erreur sont les suivants. Cela se produit sur la 7ème ligne. Il semble que les types ont été supprimés de google.cloud.vision, donc une erreur se produit.

AttributeError: module 'google.cloud.vision' has no attribute 'types'

Solution

OK si vous utilisez l'image directement à partir de la vision

image = vision.types.Image(content=content) #Erreur
image = vision.Image(content=content) #Solution

L'image entière est la suivante, seule la 7ème ligne a été modifiée

    """Localize objects in the local image.

    Args:
    path: The path to the local file.
    """
    from google.cloud import vision
    client = vision.ImageAnnotatorClient()

    with open(uri, 'rb') as image_file:
        content = image_file.read()
    image = vision.Image(content=content)

    objects = client.object_localization(
        image=image).localized_object_annotations

    print('Number of objects found: {}'.format(len(objects)))
    for object_ in objects:
        print('\n{} (confidence: {})'.format(object_.name, object_.score))
        print('Normalized bounding polygon vertices: ')
        for vertex in object_.bounding_poly.normalized_vertices:
            print(' - ({}, {})'.format(vertex.x, vertex.y))

De côté

Le tutoriel officiel a quelques bugs, n'est-ce pas? Cela n'a pas d'importance, mais l'image GCP est un peu difficile à utiliser car elle chevauche l'image d'oreiller.

Recommended Posts

"AttributeError: module'google.cloud.vision 'n'a pas d'attribut" types "" dans l'API Cloud Vision (GCP vision AI)
Extraction de texte avec l'API GCP Cloud Vision (Python3.6)
Flux d'extraction de texte au format PDF avec l'API Cloud Vision
Détectez les caractères japonais à partir d'images à l'aide de l'API Cloud Vision de Google avec Python