我将此发布到了Google愿景的google小组... 并增加了一些额外的发现。
以下是我认为相关的所有细节:
当每个请求只发送4张图片时,事情按预期工作......我得到回复和注释。
如果我将每个请求的图像数量增加到8个文件,则从Execute返回的响应不包含任何结果。没有错误,也没有例外。
只有一个没有响应的Google.Apis.Vision.v1.Data.BatchAnnotateImagesResponse对象。使用网络流量监控工具,我看到与谷歌愿景的连接 - 该服务返回200服务器响应。但是否则是空的。
进一步的研究表明,我能够根据整体请求成功向API发送大约1MB的base64内容。还有更多,我得到了描述的奇怪条件。
根据API文档,以下限制适用于Google Cloud Vision API使用。
我没有看到任何方式可以打破记录的限制:每个请求8个文件,总计小于8MB,没有文件甚至接近4MB。
对于我可能遗失的任何想法?下面记录的限制是否正确?
答案 0 :(得分:1)
事实证明,谷歌在请求中实施gzip压缩存在一个错误...我不确定API是否仅在请求大小达到某个阈值时应用gzip压缩,或者实现错误是否适用于小的请求,但不适用于大的请求。
以下是我解决问题的方法(禁用GZIP是关键):
Private Function GetAnalysisService() As VisionService
Dim credential As GoogleCredential = Nothing
credential = GoogleCredential.GetApplicationDefaultAsync().Result
If credential.IsCreateScopedRequired Then
credential = credential.CreateScoped(New String() {VisionService.Scope.CloudPlatform})
End If
Dim ServiceInitializer = New VisionService.Initializer With {.ApplicationName = "TF Image Analysis", .HttpClientInitializer = credential}
ServiceInitializer.GZipEnabled = False
Return New VisionService(ServiceInitializer)
End Function
答案 1 :(得分:0)
我也想知道限制是否正确。
基于Quotas and Limits和Supported Images,云存储上托管的图片或公开访问的网址的最大图片文件大小应 20 MB 。此外,还有最大JSON请求对象大小(10 MB)。
我正在使用云存储上托管的图片选项,但对于大于~7.95 MB(12000 x 6500)的图片,我收到错误消息:
responses {
error {
code: 3
message: "Invalid image contents: gs://... ."
}
}
对于尺寸较小的图像,我得到了正确的响应。