Mit der Weberkennung werden Webverweise auf ein Bild erkannt.
| Kategorie | Antworten |
|---|---|
| Webentitäten |
|
| Bilder mit vollständiger Übereinstimmung |
|
| Bilder mit teilweiser Übereinstimmung |
|
| Seiten mit übereinstimmenden Bildern |
|
| Optisch ähnliche Bilder |
|
| Wahrscheinlichste Labels | rio carnival 2019 dancers |
Weberkennungsanfragen
Google Cloud -Projekt und Authentifizierung einrichten
Wenn Sie noch kein Google Cloud Projekt erstellt haben, tun Sie dies jetzt. Maximieren 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vision API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vision API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
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_DETECTIONoderCROP_HINTS. - PROJECT_ID: Ihre Google Cloud Projekt-ID
- 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/web/carnaval.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_DETECTIONoderCROP_HINTS. - PROJECT_ID: Ihre Google Cloud Projekt-ID
Webentitäten mit einem lokalen Bild erkennen
Sie können die Vision API für die Erkennung von Features 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 mit gcloud und Clientbibliotheken den Pfad zu einem lokalen Bild in Ihrer Anfrage an.
REST
Ersetzen Sie folgende Werte in den 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": "WEB_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.
Antwort:
Antwort
{
"responses": [
{
"webDetection": {
"webEntities": [
{
"entityId": "/m/02p7_j8",
"score": 1.44225,
"description": "Carnival in Rio de Janeiro"
},
{
"entityId": "/m/06gmr",
"score": 1.2913725,
"description": "Rio de Janeiro"
},
{
"entityId": "/m/04cx88",
"score": 0.78465,
"description": "Brazilian Carnival"
},
{
"entityId": "/m/09l9f",
"score": 0.7166,
"description": "Carnival"
},
...
],
"fullMatchingImages": [
{
"url": "https://1000lugaresparair.files.wordpress.com/2017/11/quinten-de-graaf-278848.jpg"
},
...
],
"partialMatchingImages": [
{
"url": "https://www.linnanneito.fi/wp-content/uploads/sambakarnevaali-riossa.jpg"
},
...
],
"pagesWithMatchingImages": [
{
"url": "https://www.intrepidtravel.com/us/brazil/rio-carnival-122873",
"pageTitle": "\u003cb\u003eRio Carnival\u003c/b\u003e | Intrepid Travel US",
"partialMatchingImages": [
{
"url": "https://www.intrepidtravel.com/sites/intrepid/files/styles/large/public/elements/product/hero/GGSR-Brazil-rio-carnival-ladies.jpg"
},
...
],
"visuallySimilarImages": [
{
"url": "https://pbs.twimg.com/media/DVoQOx6WkAIpHKF.jpg"
},
...
],
"bestGuessLabels": [
{
"label": "rio carnival",
"languageCode": "en"
}
]
}
}
]
}
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 Go-Referenzdokumentation zur Vision API.
Richten Sie zur Authentifizierung bei Vision die Standardanmeldedaten für Anwendungen (ADC) ein. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.
// detectWeb gets image properties from the Vision API for an image at the given file path.
func detectWeb(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
}
web, err := client.DetectWeb(ctx, image, nil)
if err != nil {
return err
}
fmt.Fprintln(w, "Web properties:")
if len(web.FullMatchingImages) != 0 {
fmt.Fprintln(w, "\tFull image matches:")
for _, full := range web.FullMatchingImages {
fmt.Fprintf(w, "\t\t%s\n", full.Url)
}
}
if len(web.PagesWithMatchingImages) != 0 {
fmt.Fprintln(w, "\tPages with this image:")
for _, page := range web.PagesWithMatchingImages {
fmt.Fprintf(w, "\t\t%s\n", page.Url)
}
}
if len(web.WebEntities) != 0 {
fmt.Fprintln(w, "\tEntities:")
fmt.Fprintln(w, "\t\tEntity\t\tScore\tDescription")
for _, entity := range web.WebEntities {
fmt.Fprintf(w, "\t\t%-14s\t%-2.4f\t%s\n", entity.EntityId, entity.Score, entity.Description)
}
}
if len(web.BestGuessLabels) != 0 {
fmt.Fprintln(w, "\tBest guess labels:")
for _, label := range web.BestGuessLabels {
fmt.Fprintf(w, "\t\t%s\n", label.Label)
}
}
return nil
}
Java
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für 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.Feature;
import com.google.cloud.vision.v1.Feature.Type;
import com.google.cloud.vision.v1.Image;
import com.google.cloud.vision.v1.ImageAnnotatorClient;
import com.google.cloud.vision.v1.WebDetection;
import com.google.cloud.vision.v1.WebDetection.WebEntity;
import com.google.cloud.vision.v1.WebDetection.WebImage;
import com.google.cloud.vision.v1.WebDetection.WebLabel;
import com.google.cloud.vision.v1.WebDetection.WebPage;
import com.google.protobuf.ByteString;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DetectWebDetections {
public static void detectWebDetections() throws IOException {
// TODO(developer): Replace these variables before running the sample.
String filePath = "path/to/your/image/file.jpg";
detectWebDetections(filePath);
}
// Finds references to the specified image on the web.
public static void detectWebDetections(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(Type.WEB_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;
}
// Search the web for usages of the image. You could use these signals later
// for user input moderation or linking external references.
// For a full list of available annotations, see http://g.co/cloud/vision/docs
WebDetection annotation = res.getWebDetection();
System.out.println("Entity:Id:Score");
System.out.println("===============");
for (WebEntity entity : annotation.getWebEntitiesList()) {
System.out.println(
entity.getDescription() + " : " + entity.getEntityId() + " : " + entity.getScore());
}
for (WebLabel label : annotation.getBestGuessLabelsList()) {
System.out.format("%nBest guess label: %s", label.getLabel());
}
System.out.println("%nPages with matching images: Score%n==");
for (WebPage page : annotation.getPagesWithMatchingImagesList()) {
System.out.println(page.getUrl() + " : " + page.getScore());
}
System.out.println("%nPages with partially matching images: Score%n==");
for (WebImage image : annotation.getPartialMatchingImagesList()) {
System.out.println(image.getUrl() + " : " + image.getScore());
}
System.out.println("%nPages with fully matching images: Score%n==");
for (WebImage image : annotation.getFullMatchingImagesList()) {
System.out.println(image.getUrl() + " : " + image.getScore());
}
System.out.println("%nPages with visually similar images: Score%n==");
for (WebImage image : annotation.getVisuallySimilarImagesList()) {
System.out.println(image.getUrl() + " : " + image.getScore());
}
}
}
}
}Node.js
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Node.js in der Vision-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Node.js-Referenzdokumentation zur Vision API.
Richten Sie zur Authentifizierung bei Vision die Standardanmeldedaten für Anwendungen (ADC) ein. Weitere Informationen finden Sie unter ADC 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';
// Detect similar images on the web to a local file
const [result] = await client.webDetection(fileName);
const webDetection = result.webDetection;
if (webDetection.fullMatchingImages.length) {
console.log(
`Full matches found: ${webDetection.fullMatchingImages.length}`
);
webDetection.fullMatchingImages.forEach(image => {
console.log(` URL: ${image.url}`);
console.log(` Score: ${image.score}`);
});
}
if (webDetection.partialMatchingImages.length) {
console.log(
`Partial matches found: ${webDetection.partialMatchingImages.length}`
);
webDetection.partialMatchingImages.forEach(image => {
console.log(` URL: ${image.url}`);
console.log(` Score: ${image.score}`);
});
}
if (webDetection.webEntities.length) {
console.log(`Web entities found: ${webDetection.webEntities.length}`);
webDetection.webEntities.forEach(webEntity => {
console.log(` Description: ${webEntity.description}`);
console.log(` Score: ${webEntity.score}`);
});
}
if (webDetection.bestGuessLabels.length) {
console.log(
`Best guess labels found: ${webDetection.bestGuessLabels.length}`
);
webDetection.bestGuessLabels.forEach(label => {
console.log(` Label: ${label.label}`);
});
}Python
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Python in der Vision-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Python-Referenzdokumentation zur Vision API.
Richten Sie zur Authentifizierung bei Vision die Standardanmeldedaten für Anwendungen (ADC) ein. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.
def detect_web(path):
"""Detects web annotations given an image."""
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.web_detection(image=image)
annotations = response.web_detection
if annotations.best_guess_labels:
for label in annotations.best_guess_labels:
print(f"\nBest guess label: {label.label}")
if annotations.pages_with_matching_images:
print(
"\n{} Pages with matching images found:".format(
len(annotations.pages_with_matching_images)
)
)
for page in annotations.pages_with_matching_images:
print(f"\n\tPage url : {page.url}")
if page.full_matching_images:
print(
"\t{} Full Matches found: ".format(len(page.full_matching_images))
)
for image in page.full_matching_images:
print(f"\t\tImage url : {image.url}")
if page.partial_matching_images:
print(
"\t{} Partial Matches found: ".format(
len(page.partial_matching_images)
)
)
for image in page.partial_matching_images:
print(f"\t\tImage url : {image.url}")
if annotations.web_entities:
print("\n{} Web entities found: ".format(len(annotations.web_entities)))
for entity in annotations.web_entities:
print(f"\n\tScore : {entity.score}")
print(f"\tDescription: {entity.description}")
if annotations.visually_similar_images:
print(
"\n{} visually similar images found:\n".format(
len(annotations.visually_similar_images)
)
)
for image in annotations.visually_similar_images:
print(f"\tImage url : {image.url}")
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 Einrichtungsanleitung für C# auf der Seite der Clientbibliotheken und rufen Sie dann die Vision-Referenzdokumentation für .NET auf.
PHP: Folgen Sie der Einrichtungsanleitung für PHP auf der Seite der Clientbibliotheken und rufen Sie dann die Vision-Referenzdokumentation für PHP auf.
Ruby: Folgen Sie der Einrichtungsanleitung für Ruby auf der Seite der Clientbibliotheken und rufen Sie dann die Vision-Referenzdokumentation für Ruby auf.
Webentitäten mit einem Remote-Bild erkennen
Sie können die Vision API für die Erkennung von Features in einer Remote-Bilddatei verwenden, die sich in Cloud Storage oder im Web befindet. Zum Senden einer Remote-Dateianfrage geben Sie die URL oder den Cloud Storage-URI der Datei im Anfragetext an.
REST
Ersetzen Sie folgende Werte in den 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": "WEB_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.
Antwort:
Antwort
{
"responses": [
{
"webDetection": {
"webEntities": [
{
"entityId": "/m/02p7_j8",
"score": 1.44225,
"description": "Carnival in Rio de Janeiro"
},
{
"entityId": "/m/06gmr",
"score": 1.2913725,
"description": "Rio de Janeiro"
},
{
"entityId": "/m/04cx88",
"score": 0.78465,
"description": "Brazilian Carnival"
},
{
"entityId": "/m/09l9f",
"score": 0.7166,
"description": "Carnival"
},
...
],
"fullMatchingImages": [
{
"url": "https://1000lugaresparair.files.wordpress.com/2017/11/quinten-de-graaf-278848.jpg"
},
...
],
"partialMatchingImages": [
{
"url": "https://www.linnanneito.fi/wp-content/uploads/sambakarnevaali-riossa.jpg"
},
...
],
"pagesWithMatchingImages": [
{
"url": "https://www.intrepidtravel.com/us/brazil/rio-carnival-122873",
"pageTitle": "\u003cb\u003eRio Carnival\u003c/b\u003e | Intrepid Travel US",
"partialMatchingImages": [
{
"url": "https://www.intrepidtravel.com/sites/intrepid/files/styles/large/public/elements/product/hero/GGSR-Brazil-rio-carnival-ladies.jpg"
},
...
],
"visuallySimilarImages": [
{
"url": "https://pbs.twimg.com/media/DVoQOx6WkAIpHKF.jpg"
},
...
],
"bestGuessLabels": [
{
"label": "rio carnival",
"languageCode": "en"
}
]
}
}
]
}
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 Go-Referenzdokumentation zur Vision API.
Richten Sie zur Authentifizierung bei Vision die Standardanmeldedaten für Anwendungen (ADC) ein. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.
// detectWeb gets image properties from the Vision API for an image at the given file path.
func detectWebURI(w io.Writer, file string) error {
ctx := context.Background()
client, err := vision.NewImageAnnotatorClient(ctx)
if err != nil {
return err
}
image := vision.NewImageFromURI(file)
web, err := client.DetectWeb(ctx, image, nil)
if err != nil {
return err
}
fmt.Fprintln(w, "Web properties:")
if len(web.FullMatchingImages) != 0 {
fmt.Fprintln(w, "\tFull image matches:")
for _, full := range web.FullMatchingImages {
fmt.Fprintf(w, "\t\t%s\n", full.Url)
}
}
if len(web.PagesWithMatchingImages) != 0 {
fmt.Fprintln(w, "\tPages with this image:")
for _, page := range web.PagesWithMatchingImages {
fmt.Fprintf(w, "\t\t%s\n", page.Url)
}
}
if len(web.WebEntities) != 0 {
fmt.Fprintln(w, "\tEntities:")
fmt.Fprintln(w, "\t\tEntity\t\tScore\tDescription")
for _, entity := range web.WebEntities {
fmt.Fprintf(w, "\t\t%-14s\t%-2.4f\t%s\n", entity.EntityId, entity.Score, entity.Description)
}
}
if len(web.BestGuessLabels) != 0 {
fmt.Fprintln(w, "\tBest guess labels:")
for _, label := range web.BestGuessLabels {
fmt.Fprintf(w, "\t\t%s\n", label.Label)
}
}
return nil
}
Java
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Java in der Vision-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Java-Referenzdokumentation zur Vision API.
Richten Sie zur Authentifizierung bei Vision die Standardanmeldedaten für Anwendungen (ADC) ein. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.
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.Feature;
import com.google.cloud.vision.v1.Image;
import com.google.cloud.vision.v1.ImageAnnotatorClient;
import com.google.cloud.vision.v1.ImageSource;
import com.google.cloud.vision.v1.WebDetection;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DetectWebDetectionsGcs {
public static void detectWebDetectionsGcs() throws IOException {
// TODO(developer): Replace these variables before running the sample.
String filePath = "gs://your-gcs-bucket/path/to/image/file.jpg";
detectWebDetectionsGcs(filePath);
}
// Detects whether the remote image on Google Cloud Storage has features you would want to
// moderate.
public static void detectWebDetectionsGcs(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.WEB_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;
}
// Search the web for usages of the image. You could use these signals later
// for user input moderation or linking external references.
// For a full list of available annotations, see http://g.co/cloud/vision/docs
WebDetection annotation = res.getWebDetection();
System.out.println("Entity:Id:Score");
System.out.println("===============");
for (WebDetection.WebEntity entity : annotation.getWebEntitiesList()) {
System.out.println(
entity.getDescription() + " : " + entity.getEntityId() + " : " + entity.getScore());
}
for (WebDetection.WebLabel label : annotation.getBestGuessLabelsList()) {
System.out.format("%nBest guess label: %s", label.getLabel());
}
System.out.println("%nPages with matching images: Score%n==");
for (WebDetection.WebPage page : annotation.getPagesWithMatchingImagesList()) {
System.out.println(page.getUrl() + " : " + page.getScore());
}
System.out.println("%nPages with partially matching images: Score%n==");
for (WebDetection.WebImage image : annotation.getPartialMatchingImagesList()) {
System.out.println(image.getUrl() + " : " + image.getScore());
}
System.out.println("%nPages with fully matching images: Score%n==");
for (WebDetection.WebImage image : annotation.getFullMatchingImagesList()) {
System.out.println(image.getUrl() + " : " + image.getScore());
}
System.out.println("%nPages with visually similar images: Score%n==");
for (WebDetection.WebImage image : annotation.getVisuallySimilarImagesList()) {
System.out.println(image.getUrl() + " : " + image.getScore());
}
}
}
}
}Node.js
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Node.js in der Vision-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Node.js-Referenzdokumentation zur Vision API.
Richten Sie zur Authentifizierung bei Vision die Standardanmeldedaten für Anwendungen (ADC) ein. Weitere Informationen finden Sie unter ADC 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';
// Detect similar images on the web to a remote file
const [result] = await client.webDetection(`gs://${bucketName}/${fileName}`);
const webDetection = result.webDetection;
if (webDetection.fullMatchingImages.length) {
console.log(
`Full matches found: ${webDetection.fullMatchingImages.length}`
);
webDetection.fullMatchingImages.forEach(image => {
console.log(` URL: ${image.url}`);
console.log(` Score: ${image.score}`);
});
}
if (webDetection.partialMatchingImages.length) {
console.log(
`Partial matches found: ${webDetection.partialMatchingImages.length}`
);
webDetection.partialMatchingImages.forEach(image => {
console.log(` URL: ${image.url}`);
console.log(` Score: ${image.score}`);
});
}
if (webDetection.webEntities.length) {
console.log(`Web entities found: ${webDetection.webEntities.length}`);
webDetection.webEntities.forEach(webEntity => {
console.log(` Description: ${webEntity.description}`);
console.log(` Score: ${webEntity.score}`);
});
}
if (webDetection.bestGuessLabels.length) {
console.log(
`Best guess labels found: ${webDetection.bestGuessLabels.length}`
);
webDetection.bestGuessLabels.forEach(label => {
console.log(` Label: ${label.label}`);
});
}Python
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Python in der Vision-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Python-Referenzdokumentation zur Vision API.
Richten Sie zur Authentifizierung bei Vision die Standardanmeldedaten für Anwendungen (ADC) ein. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.
def detect_web_uri(uri):
"""Detects web annotations in the file located in Google Cloud Storage."""
from google.cloud import vision
client = vision.ImageAnnotatorClient()
image = vision.Image()
image.source.image_uri = uri
response = client.web_detection(image=image)
annotations = response.web_detection
if annotations.best_guess_labels:
for label in annotations.best_guess_labels:
print(f"\nBest guess label: {label.label}")
if annotations.pages_with_matching_images:
print(
"\n{} Pages with matching images found:".format(
len(annotations.pages_with_matching_images)
)
)
for page in annotations.pages_with_matching_images:
print(f"\n\tPage url : {page.url}")
if page.full_matching_images:
print(
"\t{} Full Matches found: ".format(len(page.full_matching_images))
)
for image in page.full_matching_images:
print(f"\t\tImage url : {image.url}")
if page.partial_matching_images:
print(
"\t{} Partial Matches found: ".format(
len(page.partial_matching_images)
)
)
for image in page.partial_matching_images:
print(f"\t\tImage url : {image.url}")
if annotations.web_entities:
print("\n{} Web entities found: ".format(len(annotations.web_entities)))
for entity in annotations.web_entities:
print(f"\n\tScore : {entity.score}")
print(f"\tDescription: {entity.description}")
if annotations.visually_similar_images:
print(
"\n{} visually similar images found:\n".format(
len(annotations.visually_similar_images)
)
)
for image in annotations.visually_similar_images:
print(f"\tImage url : {image.url}")
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 Weberkennung den Befehl gcloud ml vision detect-web, wie im folgenden Beispiel gezeigt:
gcloud ml vision detect-web gs://cloud-samples-data/vision/web/carnaval.jpeg
Weitere Sprachen
C#: Folgen Sie der Einrichtungsanleitung für C# auf der Seite der Clientbibliotheken und rufen Sie dann die Vision-Referenzdokumentation für .NET auf.
PHP: Folgen Sie der Einrichtungsanleitung für PHP auf der Seite der Clientbibliotheken und rufen Sie dann die Vision-Referenzdokumentation für PHP auf.
Ruby: Folgen Sie der Einrichtungsanleitung für Ruby auf der Seite der Clientbibliotheken und rufen Sie dann die Vision-Referenzdokumentation für Ruby auf.
Jetzt testen
Probieren Sie die Erkennung von Webentitäten jetzt aus. Sie können das bereits angegebene Bild verwenden (gs://cloud-samples-data/vision/web/carnaval.jpeg) oder stattdessen ein eigenes Bild angeben. Wählen Sie zum Senden der Anfrage Ausführen aus.
Anfragetext:
{
"requests": [
{
"features": [
{
"type": "WEB_DETECTION"
}
],
"image": {
"source": {
"gcsImageUri": "gs://cloud-samples-data/vision/web/carnaval.jpeg"
}
}
}
]
}