Mithilfe der Vision API können Sie Informationen zu Entitäten unterschiedlichster Kategorien in einem Bild erkennen und extrahieren.
Mit Labels lassen sich allgemeine Objekte, Orte, Aktivitäten, Tierarten, Produkte und vieles mehr identifizieren. Wenn Sie gezielte benutzerdefinierte Labels benötigen, können Sie mit Cloud AutoML Vision ein benutzerdefiniertes Modell für maschinelles Lernen zur Klassifizierung von Bildern trainieren.
Labels werden nur auf Englisch zurückgegeben. Mit der Cloud Translation API lassen sich englische Labels in viele andere Sprachen übersetzen.

Dieses Bild kann beispielsweise die folgenden Labels zurückgeben:
Beschreibung | Punktzahl |
---|---|
Straße | 0,872 |
Snapshot | 0,852 |
Stadt | 0,848 |
Nacht | 0,804 |
Gasse | 0,713 |
Labelerkennungsanfragen
Google Cloud -Projekt und Authentifizierung einrichten
Wenn Sie noch kein Google Cloud -Projekt erstellt haben, tun Sie dies jetzt. Erweitern Sie diesen Abschnitt, um die Anleitung einzublenden.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vision API.
-
Install the Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vision API.
-
Install the Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
- BASE64_ENCODED_IMAGE: Die Base64-Darstellung (ASCII-String) der Binärbilddaten. Dieser String sollte in etwa so aussehen:
/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
- RESULTS_INT: (Optional) Ein ganzzahliger Wert der Ergebnisse, die zurückgegeben werden sollen. Wenn Sie das Feld
"maxResults"
und seinen Wert weglassen, gibt die API den Standardwert von 10 Ergebnissen zurück. Dieses Feld gilt nicht für die folgenden Featuretypen:TEXT_DETECTION
,DOCUMENT_TEXT_DETECTION
oderCROP_HINTS
. - PROJECT_ID: Ihre Google Cloud -Projekt-ID
mid
enthält, sofern vorhanden, die maschinengenerierte Kennzeichnung (Machine-Generated Identifier, MID), die dem Google Knowledge Graph-Eintrag der Entität entspricht. Diemid
-Werte kommen in verschiedenen Sprachen nur einmal vor, sodass Sie mit solchen Werten Entitäten aus verschiedenen Sprachen verknüpfen können. Wie Sie MID-Werte untersuchen, erfahren Sie in der Dokumentation zur Google Knowledge Graph API.description
ist die Beschreibung des Labels.score
ist der Konfidenzwert, der von 0 (keine Konfidenz) bis 1 (sehr hohe Konfidenz) reicht.topicality
ist die Relevanz des ICA-Labels (Image Content Annotation) für das Bild. Sie misst, wie wichtig/zentral ein Label für den Gesamtzusammenhang einer Seite ist.- CLOUD_STORAGE_IMAGE_URI: Der Pfad zu einer gültigen Bilddatei in einem Cloud Storage-Bucket. Sie müssen zumindest Leseberechtigungen für die Datei haben.
Beispiel:
gs://cloud-samples-data/vision/label/setagaya.jpeg
- RESULTS_INT: (Optional) Ein ganzzahliger Wert der Ergebnisse, die zurückgegeben werden sollen. Wenn Sie das Feld
"maxResults"
und seinen Wert weglassen, gibt die API den Standardwert von 10 Ergebnissen zurück. Dieses Feld gilt nicht für die folgenden Featuretypen:TEXT_DETECTION
,DOCUMENT_TEXT_DETECTION
oderCROP_HINTS
. - PROJECT_ID: Ihre Google Cloud -Projekt-ID
mid
enthält, sofern vorhanden, die maschinengenerierte Kennzeichnung (Machine-Generated Identifier, MID), die dem Google Knowledge Graph-Eintrag der Entität entspricht. Diemid
-Werte kommen in verschiedenen Sprachen nur einmal vor, sodass Sie mit solchen Werten Entitäten aus verschiedenen Sprachen verknüpfen können. Wie Sie MID-Werte untersuchen, erfahren Sie in der Dokumentation zur Google Knowledge Graph API.description
ist die Beschreibung des Labels.score
ist der Konfidenzwert, der von 0 (keine Konfidenz) bis 1 (sehr hohe Konfidenz) reicht.topicality
ist die Relevanz des ICA-Labels (Image Content Annotation) für das Bild. Sie misst, wie wichtig/zentral ein Label für den Gesamtzusammenhang einer Seite ist.
Labels in einem lokalen Bild erkennen
Sie können die Vision API für die Featureerkennung in einer lokalen Bilddatei verwenden.
Senden Sie bei REST-Anfragen den Inhalt der Bilddatei als base64-codierten String im Text Ihrer Anfrage.
Geben Sie für Anfragen zu gcloud
und Clientbibliotheken den Pfad zu einem lokalen Image in Ihrer Anfrage an.
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
HTTP-Methode und URL:
POST https://vision.googleapis.com/v1/images:annotate
JSON-Text der Anfrage:
{ "requests": [ { "image": { "content": "BASE64_ENCODED_IMAGE" }, "features": [ { "maxResults": RESULTS_INT, "type": "LABEL_DETECTION" } ] } ] }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
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" \
-d @request.json \
"https://vision.googleapis.com/v1/images:annotate"
PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/images:annotate" | Select-Object -Expand Content
Wenn die Anfrage erfolgreich ist, gibt der Server den HTTP-Statuscode 200 OK
und die Antwort im JSON-Format zurück.
Die Antwort für LABEL_DETECTION
enthält die erkannten Labels, ihre Punktzahl sowie eine intransparente Label-ID. Dabei gilt:
{ "responses": [ { "labelAnnotations": [ { "mid": "/m/01c8br", "description": "Street", "score": 0.87294734, "topicality": 0.87294734 }, { "mid": "/m/06pg22", "description": "Snapshot", "score": 0.8523099, "topicality": 0.8523099 }, { "mid": "/m/0dx1j", "description": "Town", "score": 0.8481104, "topicality": 0.8481104 }, { "mid": "/m/01d74z", "description": "Night", "score": 0.80408716, "topicality": 0.80408716 }, { "mid": "/m/01lwf0", "description": "Alley", "score": 0.7133322, "topicality": 0.7133322 } ] } ] }
Go
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Go-Einrichtungsanleitung in der Vision-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Vision-Referenzdokumentation zur Go API.
Richten Sie zur Authentifizierung bei Vision die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
// detectLabels gets labels from the Vision API for an image at the given file path.
func detectLabels(w io.Writer, file string) error {
ctx := context.Background()
client, err := vision.NewImageAnnotatorClient(ctx)
if err != nil {
return err
}
f, err := os.Open(file)
if err != nil {
return err
}
defer f.Close()
image, err := vision.NewImageFromReader(f)
if err != nil {
return err
}
annotations, err := client.DetectLabels(ctx, image, nil, 10)
if err != nil {
return err
}
if len(annotations) == 0 {
fmt.Fprintln(w, "No labels found.")
} else {
fmt.Fprintln(w, "Labels:")
for _, annotation := range annotations {
fmt.Fprintln(w, annotation.Description)
}
}
return nil
}
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie der Anleitung für die Einrichtung von Java in der Vision API-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Java-Referenzdokumentation zur Vision API.
import com.google.cloud.vision.v1.AnnotateImageRequest;
import com.google.cloud.vision.v1.AnnotateImageResponse;
import com.google.cloud.vision.v1.BatchAnnotateImagesResponse;
import com.google.cloud.vision.v1.EntityAnnotation;
import com.google.cloud.vision.v1.Feature;
import com.google.cloud.vision.v1.Image;
import com.google.cloud.vision.v1.ImageAnnotatorClient;
import com.google.protobuf.ByteString;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DetectLabels {
public static void detectLabels() throws IOException {
// TODO(developer): Replace these variables before running the sample.
String filePath = "path/to/your/image/file.jpg";
detectLabels(filePath);
}
// Detects labels in the specified local image.
public static void detectLabels(String filePath) throws IOException {
List<AnnotateImageRequest> requests = new ArrayList<>();
ByteString imgBytes = ByteString.readFrom(new FileInputStream(filePath));
Image img = Image.newBuilder().setContent(imgBytes).build();
Feature feat = Feature.newBuilder().setType(Feature.Type.LABEL_DETECTION).build();
AnnotateImageRequest request =
AnnotateImageRequest.newBuilder().addFeatures(feat).setImage(img).build();
requests.add(request);
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (ImageAnnotatorClient client = ImageAnnotatorClient.create()) {
BatchAnnotateImagesResponse response = client.batchAnnotateImages(requests);
List<AnnotateImageResponse> responses = response.getResponsesList();
for (AnnotateImageResponse res : responses) {
if (res.hasError()) {
System.out.format("Error: %s%n", res.getError().getMessage());
return;
}
// For full list of available annotations, see http://g.co/cloud/vision/docs
for (EntityAnnotation annotation : res.getLabelAnnotationsList()) {
annotation
.getAllFields()
.forEach((k, v) -> System.out.format("%s : %s%n", k, v.toString()));
}
}
}
}
}
Node.js
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Node.js-Einrichtungsanleitung in der Vision-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Vision-Referenzdokumentation zur Node.js API.
Richten Sie zur Authentifizierung bei Vision die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
// Imports the Google Cloud client library
const vision = require('@google-cloud/vision');
// Creates a client
const client = new vision.ImageAnnotatorClient();
/**
* TODO(developer): Uncomment the following line before running the sample.
*/
// const fileName = 'Local image file, e.g. /path/to/image.png';
// Performs label detection on the local file
const [result] = await client.labelDetection(fileName);
const labels = result.labelAnnotations;
console.log('Labels:');
labels.forEach(label => console.log(label.description));
Python
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Python-Einrichtungsanleitung in der Vision-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Vision-Referenzdokumentation zur Python API.
Richten Sie zur Authentifizierung bei Vision die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
def detect_labels(path):
"""Detects labels in the file."""
from google.cloud import vision
client = vision.ImageAnnotatorClient()
with open(path, "rb") as image_file:
content = image_file.read()
image = vision.Image(content=content)
response = client.label_detection(image=image)
labels = response.label_annotations
print("Labels:")
for label in labels:
print(label.description)
if response.error.message:
raise Exception(
"{}\nFor more info on error messages, check: "
"https://cloud.google.com/apis/design/errors".format(response.error.message)
)
Weitere Sprachen
C#: Folgen Sie der Anleitung zur Einrichtung von C# auf der Seite der Clientbibliotheken und rufen Sie dann die Vision-Referenzdokumentation für .NET auf.
PHP: Folgen Sie der Anleitung zur Einrichtung von PHP auf der Seite der Clientbibliotheken und rufen Sie dann die Vision-Referenzdokumentation für PHP auf.
Ruby: Folgen Sie der Anleitung zur Einrichtung von Ruby auf der Seite der Clientbibliotheken und rufen Sie dann die Vision-Referenzdokumentation für Ruby auf.
Labels in einem Remote-Bild erkennen
Sie können die Vision API verwenden, um eine Featureerkennung für eine Remote-Bilddatei durchzuführen, die sich in Cloud Storage oder im Web befindet. Zum Senden einer Remote-Dateianfrage geben Sie die Web-URL oder den Cloud Storage-URI der Datei im Anfragetext an.
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
HTTP-Methode und URL:
POST https://vision.googleapis.com/v1/images:annotate
JSON-Text der Anfrage:
{ "requests": [ { "image": { "source": { "gcsImageUri": "CLOUD_STORAGE_IMAGE_URI" } }, "features": [ { "maxResults": RESULTS_INT, "type": "LABEL_DETECTION" }, ] } ] }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
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" \
-d @request.json \
"https://vision.googleapis.com/v1/images:annotate"
PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/images:annotate" | Select-Object -Expand Content
Wenn die Anfrage erfolgreich ist, gibt der Server den HTTP-Statuscode 200 OK
und die Antwort im JSON-Format zurück.
Die Antwort für LABEL_DETECTION
enthält die erkannten Labels, ihre Punktzahl sowie eine intransparente Label-ID. Dabei gilt:
{ "responses": [ { "labelAnnotations": [ { "mid": "/m/01c8br", "description": "Street", "score": 0.87294734, "topicality": 0.87294734 }, { "mid": "/m/06pg22", "description": "Snapshot", "score": 0.8523099, "topicality": 0.8523099 }, { "mid": "/m/0dx1j", "description": "Town", "score": 0.8481104, "topicality": 0.8481104 }, { "mid": "/m/01d74z", "description": "Night", "score": 0.80408716, "topicality": 0.80408716 }, { "mid": "/m/01lwf0", "description": "Alley", "score": 0.7133322, "topicality": 0.7133322 } ] } ] }
Go
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Go-Einrichtungsanleitung in der Vision-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Vision-Referenzdokumentation zur Go API.
Richten Sie zur Authentifizierung bei Vision die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
// detectLabels gets labels from the Vision API for an image at the given file path.
func detectLabelsURI(w io.Writer, file string) error {
ctx := context.Background()
client, err := vision.NewImageAnnotatorClient(ctx)
if err != nil {
return err
}
image := vision.NewImageFromURI(file)
annotations, err := client.DetectLabels(ctx, image, nil, 10)
if err != nil {
return err
}
if len(annotations) == 0 {
fmt.Fprintln(w, "No labels found.")
} else {
fmt.Fprintln(w, "Labels:")
for _, annotation := range annotations {
fmt.Fprintln(w, annotation.Description)
}
}
return nil
}
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie der Anleitung für die Einrichtung von Java in der Vision API-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Java-Referenzdokumentation zur Vision API.
import com.google.cloud.vision.v1.AnnotateImageRequest;
import com.google.cloud.vision.v1.AnnotateImageResponse;
import com.google.cloud.vision.v1.BatchAnnotateImagesResponse;
import com.google.cloud.vision.v1.EntityAnnotation;
import com.google.cloud.vision.v1.Feature;
import com.google.cloud.vision.v1.Image;
import com.google.cloud.vision.v1.ImageAnnotatorClient;
import com.google.cloud.vision.v1.ImageSource;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DetectLabelsGcs {
public static void detectLabelsGcs() throws IOException {
// TODO(developer): Replace these variables before running the sample.
String filePath = "gs://your-gcs-bucket/path/to/image/file.jpg";
detectLabelsGcs(filePath);
}
// Detects labels in the specified remote image on Google Cloud Storage.
public static void detectLabelsGcs(String gcsPath) throws IOException {
List<AnnotateImageRequest> requests = new ArrayList<>();
ImageSource imgSource = ImageSource.newBuilder().setGcsImageUri(gcsPath).build();
Image img = Image.newBuilder().setSource(imgSource).build();
Feature feat = Feature.newBuilder().setType(Feature.Type.LABEL_DETECTION).build();
AnnotateImageRequest request =
AnnotateImageRequest.newBuilder().addFeatures(feat).setImage(img).build();
requests.add(request);
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (ImageAnnotatorClient client = ImageAnnotatorClient.create()) {
BatchAnnotateImagesResponse response = client.batchAnnotateImages(requests);
List<AnnotateImageResponse> responses = response.getResponsesList();
for (AnnotateImageResponse res : responses) {
if (res.hasError()) {
System.out.format("Error: %s%n", res.getError().getMessage());
return;
}
// For full list of available annotations, see http://g.co/cloud/vision/docs
for (EntityAnnotation annotation : res.getLabelAnnotationsList()) {
annotation
.getAllFields()
.forEach((k, v) -> System.out.format("%s : %s%n", k, v.toString()));
}
}
}
}
}
Node.js
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Node.js-Einrichtungsanleitung in der Vision-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Vision-Referenzdokumentation zur Node.js API.
Richten Sie zur Authentifizierung bei Vision die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
// Imports the Google Cloud client libraries
const vision = require('@google-cloud/vision');
// Creates a client
const client = new vision.ImageAnnotatorClient();
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const bucketName = 'Bucket where the file resides, e.g. my-bucket';
// const fileName = 'Path to file within bucket, e.g. path/to/image.png';
// Performs label detection on the gcs file
const [result] = await client.labelDetection(
`gs://${bucketName}/${fileName}`
);
const labels = result.labelAnnotations;
console.log('Labels:');
labels.forEach(label => console.log(label.description));
Python
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Python-Einrichtungsanleitung in der Vision-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Vision-Referenzdokumentation zur Python API.
Richten Sie zur Authentifizierung bei Vision die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
def detect_labels_uri(uri):
"""Detects labels in the file located in Google Cloud Storage or on the
Web."""
from google.cloud import vision
client = vision.ImageAnnotatorClient()
image = vision.Image()
image.source.image_uri = uri
response = client.label_detection(image=image)
labels = response.label_annotations
print("Labels:")
for label in labels:
print(label.description)
if response.error.message:
raise Exception(
"{}\nFor more info on error messages, check: "
"https://cloud.google.com/apis/design/errors".format(response.error.message)
)
gcloud
Verwenden Sie für die Erkennung von Labels in einem Bild den Befehl gcloud ml vision detect-labels
, wie im folgenden Beispiel gezeigt:
gcloud ml vision detect-labels gs://cloud-samples-data/vision/label/setagaya.jpeg
Weitere Sprachen
C#: Folgen Sie der Anleitung zur Einrichtung von C# auf der Seite der Clientbibliotheken und rufen Sie dann die Vision-Referenzdokumentation für .NET auf.
PHP: Folgen Sie der Anleitung zur Einrichtung von PHP auf der Seite der Clientbibliotheken und rufen Sie dann die Vision-Referenzdokumentation für PHP auf.
Ruby: Folgen Sie der Anleitung zur Einrichtung von Ruby auf der Seite der Clientbibliotheken und rufen Sie dann die Vision-Referenzdokumentation für Ruby auf.
Jetzt ausprobieren
Probieren Sie die Labelerkennung jetzt aus. Sie können das bereits angegebene Bild verwenden (gs://cloud-samples-data/vision/label/setagaya.jpeg
) oder stattdessen ein eigenes Bild angeben. Wählen Sie zum Senden der Anfrage Ausführen aus.

Anfragetext:
{ "requests": [ { "features": [ { "maxResults": 5, "type": "LABEL_DETECTION" } ], "image": { "source": { "imageUri": "gs://cloud-samples-data/vision/label/setagaya.jpeg" } } } ] }