google Cloud Vision API:vision.detectText()不接受google drive v3 URI

时间:2017-06-06 23:35:52

标签: google-cloud-vision

vision.detectText()在从drive.files.get()

获取的webviewLink格式中传递由google drive v3呈现的URI时会发出窒息

我的webViewLink抓取器是:

drive.files.get({
  auth: auth,
  fileId: options.fileID,
  //fields: 'webContentLink'  // <-- downloads the file
  fields: 'webViewLink'       // <-- "views" the file
},function(err, response) {}

response.webViewLink的格式为:

https://drive.google.com/file/d/0Bw4DMtLCtPMkOTlXR1l4Nkw1WGs/view?usp=drivesdk

vision.detectText(response.webViewLink)chokes with:

ERROR: { PartialFailureError: A failure occurred during this request.
at /Users/node_modules/@google-cloud/vision/src/index.js:434:15
at /Users/node_modules/@google-cloud/vision/src/index.js:126:5
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickCallback (internal/process/next_tick.js:104:9)
errors: 
[ { image:  'https://drive.google.com/file/d
/0Bw4DMtLCtPMkOTlXR1l4Nkw1WGs/view?usp=drivesdk',
errors: [Object] } ],
response: { responses: [ [Object] ] },
message: 'A failure occurred during this request.' }

用“传统”形式(如http://www.identifont.com/samples/houseindustries/NeutraText.gif)替换该webViewLink URI可以正常工作。

请注意https://cloud.google.com/vision/docs/request#providing_the_image sez“您可以在请求中提供图片...作为可公开访问的HTTP或HTTPS网址”。

Drive v3 webViewLink格式是否应视为vision.detectText()的“公共可访问”格式?

如果没有,应该如何修改此格式以使vision.detectText()能够接受以支持评估google驱动器托管的图像?

2 个答案:

答案 0 :(得分:1)

虽然这是一个可公开访问的网址,但不幸的是,它是嵌入图片的网页的网址,而不是图片文件本身的网址。

因此,您无法在请求中使用Google云端硬盘网址。您最简单的选择可能是谷歌云端存储......有一个用于上传图像的网页用户界面:

https://console.cloud.google.com/storage/browser

从该页面开始:

  1. 单击创建存储桶并按照说明操作(您可以接受默认设置,只需创建全局唯一存储桶名称)。
  2. 点击上传文件,然后选择您的图片。
  3. 上传后,选中文件旁边的复选框,然后点击公开分享
  4. 点击公开链接(与文件位于同一行)以获取公开网址。

答案 1 :(得分:0)

同意迈克的观点,我也对Google App脚本进行了一些研究,因为他们都在谷歌保护伞下,所以我做了一个错误的假设,他们可以互相“交谈”(这就是为什么我发现这个)后)。但它无法奏效。我相信这是Google Vision API的本质。

如果您通过身份验证(我相信您必须通过此操作,因为您需要将文件上传到Google存储空间),那么Mike的回答只是一点点添加,那么您可能不需要将文件指定为公开在您的申请中使用。