查询 Google Vision API 时出现错误:
{
"responses" : [ {
"error" : {
"code" : 3,
"message" : "image-annotator::Malformed request.: Image processing error!"
}
} ]
}
我传递了一个包含图像的 pdf 文件,然后提取图像pdfbox
用于创建AnnotateImageRequest
列表
List<AnnotateImageRequest> visionRequests = new ArrayList<>();
PDDocument document = PDDocument.load(pdfDatastream);
for (PDPage page : document.getPages()) {
PDResources resources = page.getResources();
for (COSName xObjectName : resources.getXObjectNames()) {
PDXObject pdxObject = resources.getXObject(xObjectName);
if (pdxObject instanceof PDImageXObject) {
byte[] imageArray = Base64.encodeBase64(IOUtils.toByteArray(((PDImageXObject) pdxObject).createInputStream()));
System.out.println("image >>"+imageArray.length);
Image image = new Image();
image.encodeContent(imageArray);
Feature feature = new Feature();
feature.setType("TEXT_DETECTION");
AnnotateImageRequest annotateImageRequest = new AnnotateImageRequest();
annotateImageRequest.setImage(image);
annotateImageRequest.setFeatures(Arrays.asList(feature));
visionRequests.add(annotateImageRequest);
}
}
}
并将上面创建的列表传递给视觉服务:
BatchAnnotateImagesResponse visionSrvcResponse = visionSrvc.images().annotate(new BatchAnnotateImagesRequest().setRequests(visionRequests)).execute();
System.out.println(visionSrvcResponse.toPrettyString());
我也试过删除图像字节数组的base64编码,但仍然得到顶部列出的相同错误。字节数组长度为“ 774800 ”
有没有我遗漏的东西,因为当我将图像多部分传递给 servlet 并传递从输入流获得的字节数组时,它工作正常。
我在 Tomcat V8 上运行应用程序
使用的依赖项:
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>1.13</version>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>1.13</version>
</dependency>
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-vision</artifactId>
<version>v1-rev24-1.22.0</version>
</dependency>