Migrazione alla libreria client Python v0.25.1

La libreria client per Python v0.25.1 include alcune modifiche significative alla progettazione delle librerie client precedenti. Queste modifiche possono essere riassunte come segue:

  • Consolidamento dei moduli in un numero inferiore di tipi

  • Sostituzione dei parametri senza tipo con classi ed enumerazioni fortemente tipizzate

Questo argomento fornisce dettagli sulle modifiche che dovrai apportare al codice Python per le librerie client dell'API Cloud Vision per utilizzare la libreria client Python v0.25.1.

Esecuzione di versioni precedenti della libreria client

Non è necessario eseguire l'upgrade della libreria client Python alla versione 0.25.1. Se vuoi continuare a utilizzare una versione precedente della libreria client Python e non vuoi eseguire la migrazione del codice, devi specificare la versione della libreria client Python utilizzata dalla tua app. Per specificare una versione specifica della libreria, modifica il file requirements.txt come mostrato di seguito:

google-cloud-vision==0.25

Moduli rimossi

I seguenti moduli sono stati rimossi nel pacchetto della libreria client Python v0.25.1.

  • google.cloud.vision.annotations

  • google.cloud.vision.batch

  • google.cloud.vision.client

  • google.cloud.vision.color

  • google.cloud.vision.crop_hint

  • google.cloud.vision.entity

  • google.cloud.vision.face

  • google.cloud.vision.feature

  • google.cloud.vision.geometry

  • google.cloud.vision.image

  • google.cloud.vision.likelihood

  • google.cloud.vision.safe_search

  • google.cloud.vision.text

  • google.cloud.vision.web

Modifiche al codice richieste

Importazioni

Includi il nuovo modulo google.cloud.vision.types per accedere ai nuovi tipi nella libreria client Python v0.25.1.

Il modulo types contiene le nuove classi necessarie per creare richieste, ad esempio types.Image.

from google.cloud import vision

Inoltre, il nuovo modulo google.cloud.vision.enums contiene le enumerazioni utili per l'analisi e la comprensione delle risposte API, come enums.Likelihood.UNLIKELY e enums.FaceAnnotation.Landmark.Type.LEFT_EYE.

Crea un client

La classe Client è stata sostituita con la classe ImageAnnotatorClient. Sostituisci i riferimenti alla classe Client con ImageAnnotatorClient.

Versioni precedenti delle librerie client:

old_client = vision.Client()

Libreria client Python v0.25.1:

client = vision.ImageAnnotatorClient()

Costruzione di oggetti che rappresentano i contenuti delle immagini

Per identificare i contenuti delle immagini da un file locale, da un URI Google Cloud Storage o da un URI web, utilizza la nuova classe Image.

Costruzione di oggetti che rappresentano i contenuti delle immagini da un file locale

L'esempio seguente mostra il nuovo modo di rappresentare i contenuti delle immagini da un file locale.

Versioni precedenti delle librerie client:

with io.open(file_name, 'rb') as image_file:
    content = image_file.read()

image = old_client.image(content=content)

Libreria client Python v0.25.1:

with open(path, "rb") as image_file:
    content = image_file.read()

image = vision.Image(content=content)

Costruzione di oggetti che rappresentano i contenuti delle immagini da un URI

Il seguente esempio mostra il nuovo modo di rappresentare i contenuti delle immagini da un URI Google Cloud Storage o da un URI web. uri è l'URI di un file immagine su Google Cloud Storage o sul web.

Versioni precedenti delle librerie client:

image = old_client.image(source_uri=uri)

Libreria client Python v0.25.1:

image = vision.Image()
image.source.image_uri = uri

Fare richieste ed elaborare risposte

Con la libreria client Python v.0.25.1, i metodi API come face_detection appartengono all'oggetto ImageAnnotatorClient anziché agli oggetti Image.

I valori restituiti sono diversi per diversi metodi, come spiegato di seguito.

In particolare, i vertici del riquadro di delimitazione ora vengono memorizzati in bounding_poly.vertices anziché in bounds.vertices. Le coordinate di ogni vertice vengono memorizzate in vertex.x e vertex.y anziché in vertex.x_coordinate e vertex.y_coordinate.

La modifica del riquadro di delimitazione influisce su face_detection, logo_detection, text_detection, document_text_detection e crop_hints.

Invio di una richiesta di rilevamento del volto ed elaborazione della risposta

Le probabilità delle emozioni vengono ora restituite come enumerazioni archiviate in face.surprise_likelihood anziché in face.emotions.surprise. I nomi delle etichette di probabilità possono essere recuperati importando google.cloud.vision.enums.Likelihood.

Versioni precedenti delle librerie client:

with io.open(file_name, 'rb') as image_file:
    content = image_file.read