In der Python-Clientbibliothek v0.25.1 wurden gegenüber früheren Versionen einige strukturelle Änderungen durchgeführt. Diese Änderungen können so zusammengefasst werden:
Konsolidierung der Module in eine kleinere Anzahl von Typen
Ersatz von nicht typisierten Parametern durch stark typisierte Klassen und Aufzählungen
Dieses Thema enthält Einzelheiten zu den Änderungen, die Sie in Ihrem Python-Code für die Cloud Vision API-Clientbibliotheken vornehmen müssen, um die Python-Clientbibliothek v0.25.1 verwenden zu können.
Frühere Versionen der Clientbibliothek ausführen
Sie sind nicht verpflichtet, Ihre Python-Clientbibliothek auf v0.25.1 zu aktualisieren. Wenn Sie weiterhin eine frühere Version der Python-Clientbibliothek verwenden und für Ihren Code keine Migration vornehmen möchten, geben Sie die Version der von Ihrer Anwendung verwendeten Python-Clientbibliothek an. Bearbeiten Sie zum Angeben einer bestimmten Bibliotheksversion die Datei requirements.txt
so:
google-cloud-vision==0.25
Entfernte Module
Die folgenden Module wurden aus dem Paket Python-Clientbibliothek v0.25.1 entfernt.
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
Erforderliche Codeänderungen
Importe
Fügen Sie das neue Modul google.cloud.vision.types
ein, um auf die neuen Typen in der Python-Clientbibliothek v0.25.1 zuzugreifen.
Das Modul types
enthält die neuen Klassen für das Erstellen von Anfragen, z. B. types.Image
.
Außerdem enthält das neue Modul google.cloud.vision.enums
die Aufzählungen, die für die Analyse und das Verständnis von API-Antworten nützlich sind, z. B. enums.Likelihood.UNLIKELY
und enums.FaceAnnotation.Landmark.Type.LEFT_EYE
.
Client erstellen
Die Klasse Client
wurde durch die Klasse ImageAnnotatorClient
ersetzt. Ersetzen Sie Verweise auf die Klasse Client
durch ImageAnnotatorClient
.
Frühere Versionen der Clientbibliotheken:
old_client = vision.Client()
Python-Clientbibliothek v0.25.1:
Objekte zur Darstellung von Bildinhalten erstellen
Verwenden Sie die neue Image
-Klasse, um Bildinhalte in einer lokalen Datei, aus einem Google Cloud Storage-URI oder einem Web-URI zu identifizieren.
Objekte erstellen, die Bildinhalte aus einer lokalen Datei darstellen
Das folgende Beispiel zeigt die neue Art der Darstellung von Bildinhalten aus einer lokalen Datei.
Frühere Versionen der Clientbibliotheken:
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
Python-Clientbibliothek v0.25.1:
Objekte erstellen, die Bildinhalte aus einem URI darstellen
Das folgende Beispiel zeigt die neue Darstellung von Bildinhalten aus einem Google Cloud Storage-URI oder einem Web-URI. uri
ist der URI einer Bilddatei in Google Cloud Storage oder im Web.
Frühere Versionen der Clientbibliotheken:
image = old_client.image(source_uri=uri)
Python-Clientbibliothek v0.25.1:
Anfragen stellen und Antworten verarbeiten
Bei der Python-Clientbibliothek v.0.25.1 gehören die API-Methoden, z. B. face_detection
, zum Objekt ImageAnnotatorClient
und nicht zu den Objekten des Typs Image
.
Für verschiedene Methoden werden wie unten erläutert unterschiedliche Werte zurückgegeben.
Speziell die Eckpunkte von Begrenzungsrahmen werden jetzt in bounding_poly.vertices
anstatt in bounds.vertices
gespeichert. Die Koordinaten jedes Eckpunkts werden in vertex.x
und vertex.y
anstatt in vertex.x_coordinate
und vertex.y_coordinate
gespeichert.
Die Änderung der Begrenzungsrahmen wirkt sich auf face_detection
, logo_detection
, text_detection
, document_text_detection
und crop_hints
aus.
Anfrage für eine Gesichtserkennung stellen und Antwort verarbeiten
Wahrscheinlichkeiten von Gesichtsausdrücken werden jetzt als Aufzählungen in face.surprise_likelihood
anstatt in face.emotions.surprise
gespeichert. Zur Wiederherstellung von Wahrscheinlichkeitslabels importieren Sie google.cloud.vision.enums.Likelihood
.
Frühere Versionen der Clientbibliotheken:
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
faces = image.detect_faces()
for face in faces:
print('anger: {}'.format(face.emotions.anger))
print('joy: {}'.format(face.emotions.joy))
print('surprise: {}'.format(face.emotions.surprise))
vertices = (['({},{})'.format(bound.x_coordinate, bound.y_coordinate)
for bound in face.bounds.vertices])
print('face bounds: {}'.format(','.join(vertices)))
Python-Clientbibliothek v0.25.1:
Anfrage für eine Labelerkennung stellen und Antwort verarbeiten
Frühere Versionen der Clientbibliotheken:
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
labels = image.detect_labels()
for label in labels:
print(label.description)
Python-Clientbibliothek v0.25.1:
Anfrage zur Erkennung von Sehenswürdigkeiten stellen und Antwort verarbeiten
Frühere Versionen der Clientbibliotheken:
Die Längen- und Breitengrade der Standorte von Sehenswürdigkeiten werden jetzt in location.lat_lng.latitude
und location.lat_lng.longitude
anstatt in location.latitude
und location.longitude
gespeichert.
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
landmarks = image.detect_landmarks()
for landmark in landmarks:
print(landmark.description, landmark.score)
for location in landmark.locations:
print('Latitude'.format(location.latitude))
print('Longitude'.format(location.longitude))
Python-Clientbibliothek v0.25.1:
Anfrage zur Logoerkennung stellen und Antwort verarbeiten
Frühere Versionen der Clientbibliotheken:
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
logos = image.detect_logos()
for logo in logos:
print(logo.description, logo.score)
Python-Clientbibliothek v0.25.1:
Anfrage zur SafeSearch-Erkennung stellen und Antwort verarbeiten
SafeSearch-Wahrscheinlichkeiten werden jetzt als Aufzählungen zurückgegeben. Zur Wiederherstellung von Wahrscheinlichkeitslabels importieren Sie google.cloud.vision.enums.Likelihood
.
Frühere Versionen der Clientbibliotheken:
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
safe = image.detect_safe_search()
print('Safe search:')
print('adult: {}'.format(safe.adult))
print('medical: {}'.format(safe.medical))
print('spoofed: {}'.format(safe.spoof))
print('violence: {}'.format(safe.violence))
Python-Clientbibliothek v0.25.1:
Anfrage zur Texterkennung stellen und Antwort verarbeiten
Frühere Versionen der Clientbibliotheken:
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
texts = image.detect_text()
for text in texts:
print('\n"{}"'.format(text.description))
vertices = (['({},{})'.format(bound.x_coordinate, bound.y_coordinate)
for bound in text.bounds.vertices])
print('bounds: {}'.format(','.join(vertices)))
Python-Clientbibliothek v0.25.1:
Anfrage zur Dokumenttexterkennung stellen und Antwort verarbeiten
Frühere Versionen der Clientbibliotheken:
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
document = image.detect_full_text()
for page in document.pages:
for block in page.blocks:
block_words = []
for paragraph in block.paragraphs:
block_words.extend(paragraph.words)
block_symbols = []
for word in block_words:
block_symbols.extend(word.symbols)
block_text = ''
for symbol in block_symbols:
block_text = block_text + symbol.text
print('Block Content: {}'.format(block_text))
print('Block Bounds:\n {}'.format(block.bounding_box))
Python-Clientbibliothek v0.25.1:
Anfrage zur Erkennung von Bildeigenschaften stellen und Antwort verarbeiten
Informationen zu dominanten Farben werden jetzt in props.dominant_colors.colors
anstatt in props.colors
gespeichert.
Frühere Versionen der Clientbibliotheken:
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
props = image.detect_properties()
for color in props.colors:
print('fraction: {}'.format(color.pixel_fraction))
print('\tr: {}'.format(color.color.red))
print('\tg: {}'.format(color.color.green))
print('\tb: {}'.format(color.color.blue))
print('\ta: {}'.format(color.color.alpha))
Python-Clientbibliothek v0.25.1:
Anfrage zur Weberkennung stellen und Antwort verarbeiten
Frühere Versionen der Clientbibliotheken:
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
notes = image.detect_web()
if notes.pages_with_matching_images:
print('\n{} Pages with matching images retrieved')
for page in notes.pages_with_matching_images:
print('Score : {}'.format(page.score))
print('Url : {}'.format(page.url))
if notes.full_matching_images:
print ('\n{} Full Matches found: '.format(
len(notes.full_matching_images)))
for image in notes.full_matching_images:
print('Score: {}'.format(image.score))
print('Url : {}'.format(image.url))
if notes.partial_matching_images:
print ('\n{} Partial Matches found: '.format(
len(notes.partial_matching_images)))
for image in notes.partial_matching_images:
print('Score: {}'.format(image.score))
print('Url : {}'.format(image.url))
if notes.web_entities:
print ('\n{} Web entities found: '.format(len(notes.web_entities)))
for entity in notes.web_entities:
print('Score : {}'.format(entity.score))
print('Description: {}'.format(entity.description))
Python-Clientbibliothek v0.25.1:
Anfrage für Zuschneidehinweise stellen und Antwort verarbeiten
Frühere Versionen der Clientbibliotheken:
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
hints = image.detect_crop_hints(aspect_ratios=[1.77])
for n, hint in enumerate(hints):
print('\nCrop Hint: {}'.format(n))
vertices = (['({},{})'.format(bound.x_coordinate, bound.y_coordinate)
for bound in hint.bounds.vertices])
print('bounds: {}'.format(','.join(vertices)))
Python-Clientbibliothek v0.25.1:
Die Seitenverhältnisse müssen über CropHintsParams
und ImageContext
übergeben werden.