我目前正在Vision API文档中关注此示例:found here
import com.google.cloud.vision.v1.*;
import com.google.cloud.vision.v1.Feature.Type;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
public class VisionApiTest {
public static void main(String... args) throws Exception {
PrintStream stream = new PrintStream(new File("src/test.txt"));
detectTextGcs("https://www.w3.org/TR/SVGTiny12/examples/textArea01.png", stream);
}
public static void detectTextGcs(String gcsPath, PrintStream out) throws Exception, 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(Type.TEXT_DETECTION).build();
AnnotateImageRequest request =
AnnotateImageRequest.newBuilder().addFeatures(feat).setImage(img).build();
requests.add(request);
try (ImageAnnotatorClient client = ImageAnnotatorClient.create()) {
BatchAnnotateImagesResponse response = client.batchAnnotateImages(requests);
List<AnnotateImageResponse> responses = response.getResponsesList();
for (AnnotateImageResponse res : responses) {
if (res.hasError()) {
out.printf("Error: %s\n", res.getError().getMessage());
return;
}
// For full list of available annotations, see http://g.co/cloud/vision/docs
for (EntityAnnotation annotation : res.getTextAnnotationsList()) {
out.printf("Text: %s\n", annotation.getDescription());
out.printf("Position : %s\n", annotation.getBoundingPoly());
}
}
}
}
}
在示例中将gcsPath字符串传递到detectTextGcs方法之后,出现错误:“错误:指定了无效的GCS路径:https://www.w3.org/TR/SVGTiny12/examples/textArea01.png”
我希望PrintStream对象将图片中包含的文本写入文件,该文本将是“明天,\ ntomorrow和\ ntomorrow;等等等等……”。在上述Vision API文档页面上尝试API后,它可以正常工作,但不能在IntelliJ中使用。
任何帮助将不胜感激。谢谢。 (也请原谅我,如果这不是措辞不错的问题,这是我第一次发帖)
答案 0 :(得分:0)
Google云存储(GCS)是一个存储系统,您可以在其中将数据永久保存为Blob存储。在GCS中,我们有存储桶的概念,存储桶是数据的“命名”容器,而对象是数据的实例。为了指定Blob,我们Google发明了以下形式的GCS URL:
gs://[BUCKET_NAME]/[OBJECT_NAME]
在您的故事中,您指定了一个预期使用GCS网址的HTTP URL。您不得在需要GCS URL的地方指定HTTP URL。
答案 1 :(得分:0)
我实际上发现了问题所在。问题出在detectGcsText()方法的第3行中。
ImageSource imgSource = imageSource.newBuilder().setGcsImageUri(gcsPath).build();
如果您想使用常规HTTP URI,则必须使用setImageUri(path)
而非setGcsImageUri(gcsPath)
。
谢谢大家的帮助!