Web 检测功能可检测对图片的 Web 引用。
类别 | 响应 |
---|---|
Web 实体 |
|
完全匹配的图片 |
|
部分匹配的图片 |
|
具有匹配图片的页面 |
|
外观类似的图片 |
|
最佳猜测标签 | 2019 年里约狂欢节舞者 |
Web 检测请求
设置您的 Google Cloud 项目和身份验证
如果您尚未创建 Google Cloud 项目,请立即创建。展开本部分可查看相关说明。
-
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.create
permission. 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.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
配置 gcloud CLI 以使用您的联合身份。
如需了解详情,请参阅使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
使用本地图片检测 Web 实体
您可以使用 Vision API 对本地图片文件执行特征检测。
对于 REST 请求,请将图片文件的内容作为 base64 编码的字符串在请求正文中发送。
对于
gcloud
和客户端库请求,请在请求中指定本地图片的路径。REST
在使用任何请求数据之前,请先进行以下替换:
- BASE64_ENCODED_IMAGE:二进制图片数据的 base64 表示(ASCII 字符串)。此字符串应类似于以下字符串:
/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
- RESULTS_INT:(可选)要返回的结果的整数值。如果您省略
"maxResults"
字段及其值,则 API 会默认返回 10 个结果。此字段不适用于以下功能类型:TEXT_DETECTION
、DOCUMENT_TEXT_DETECTION
或CROP_HINTS
。 - PROJECT_ID:您的 Google Cloud 项目 ID。
HTTP 方法和网址:
POST https://vision.googleapis.com/v1/images:annotate
请求 JSON 正文:
{ "requests": [ { "image": { "content": "BASE64_ENCODED_IMAGE" }, "features": [ { "maxResults": RESULTS_INT, "type": "WEB_DETECTION" }, ] } ] }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为
request.json
的文件中,然后执行以下命令: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
将请求正文保存在名为
request.json
的文件中,然后执行以下命令:$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如果请求成功,服务器将返回一个
200 OK
HTTP 状态代码以及 JSON 格式的响应。响应:
响应
{ "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
试用此示例之前,请按照《Vision 快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Vision Go API 参考文档。
如需向 Vision 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
// 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
在试用此示例之前,请按照Vision API 快速入门:使用客户端库中的 Java 设置说明进行操作。如需了解详情,请参阅 Vision API Java 参考文档。
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
试用此示例之前,请按照《Vision 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。 如需了解详情,请参阅 Vision Node.js API 参考文档。
如需向 Vision 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
// 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
试用此示例之前,请按照《Vision 快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Vision Python API 参考文档。
如需向 Vision 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
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) )
其他语言
C#: 请按照客户端库页面上的 C# 设置说明操作,然后访问 .NET 版 Vision 参考文档。
PHP: 请按照客户端库页面上的 PHP 设置说明操作,然后访问 PHP 版 Vision 参考文档。
Ruby 版: 请按照客户端库页面上的 Ruby 设置说明操作,然后访问 Ruby 版 Vision 参考文档。
使用远程图片检测 Web 实体
您可以使用 Vision API 对位于 Cloud Storage 或网络中的远程图片文件执行特征检测。如需发送远程文件请求,请在请求正文中指定文件的网址或 Cloud Storage URI。
REST
在使用任何请求数据之前,请先进行以下替换:
- CLOUD_STORAGE_IMAGE_URI:Cloud Storage 存储桶中有效图片文件的路径。您必须至少拥有该文件的读取权限。
示例:
gs://cloud-samples-data/vision/web/carnaval.jpeg
- RESULTS_INT:(可选)要返回的结果的整数值。如果您省略
"maxResults"
字段及其值,则 API 会默认返回 10 个结果。此字段不适用于以下功能类型:TEXT_DETECTION
、DOCUMENT_TEXT_DETECTION
或CROP_HINTS
。 - PROJECT_ID:您的 Google Cloud 项目 ID。
HTTP 方法和网址:
POST https://vision.googleapis.com/v1/images:annotate
请求 JSON 正文:
{ "requests": [ { "image": { "source": { "gcsImageUri": "CLOUD_STORAGE_IMAGE_URI" } }, "features": [ { "maxResults": RESULTS_INT, "type": "WEB_DETECTION" }, ] } ] }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为
request.json
的文件中,然后执行以下命令: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
将请求正文保存在名为
request.json
的文件中,然后执行以下命令:$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如果请求成功,服务器将返回一个
200 OK
HTTP 状态代码以及 JSON 格式的响应。响应:
响应
{ "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
试用此示例之前,请按照《Vision 快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Vision Go API 参考文档。
如需向 Vision 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
// 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
试用此示例之前,请按照《Vision 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Vision Java API 参考文档。
如需向 Vision 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
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
试用此示例之前,请按照《Vision 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。 如需了解详情,请参阅 Vision Node.js API 参考文档。
如需向 Vision 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
// 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
试用此示例之前,请按照《Vision 快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Vision Python API 参考文档。
如需向 Vision 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
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
如需执行 Web 检测,请使用
gcloud ml vision detect-web
命令,如以下示例所示:gcloud ml vision detect-web gs://cloud-samples-data/vision/web/carnaval.jpeg
其他语言
C#: 请按照客户端库页面上的 C# 设置说明操作,然后访问 .NET 版 Vision 参考文档。
PHP: 请按照客户端库页面上的 PHP 设置说明操作,然后访问 PHP 版 Vision 参考文档。
Ruby 版: 请按照客户端库页面上的 Ruby 设置说明操作,然后访问 Ruby 版 Vision 参考文档。
试用
在下面尝试检测 Web 实体。您可以使用已指定的图片 (
gs://cloud-samples-data/vision/web/carnaval.jpeg
) 或指定您自己的图片。选择执行即可发送请求。图片来源:Quinten de Graaf (Unsplash)。 请求正文:
{ "requests": [ { "features": [ { "type": "WEB_DETECTION" } ], "image": { "source": { "gcsImageUri": "gs://cloud-samples-data/vision/web/carnaval.jpeg" } } } ] }
- BASE64_ENCODED_IMAGE:二进制图片数据的 base64 表示(ASCII 字符串)。此字符串应类似于以下字符串: