公式のスニペットDetectText.javaの 1 つを確認すると、次の興味深いコメントが見つかります。
// リクエストの送信に使用されるクライアントを初期化します。このクライアントは一度だけ作成する必要があり、複数のリクエストに再利用できます。すべてのリクエストが完了したら、クライアントで「close」メソッドを呼び出して、残りのバックグラウンド リソースを安全にクリーンアップします。
これは、クライアントをセットアップしたら電話をかけることができることを意味しますが、あなたが言ったように、注文については何も言及していません。の詳細についてImageAnnotatorClient
は、こちらを参照してください。
テストの結果、バッチは提供されたリクエスト リストのsame size
および であることがわかりました。same order
の詳細についてはBatchAnnotateImagesResponse
、こちらをご覧ください。
最後に、画像注釈の処理をさらに拡張し、要求の処理方法を確認できるasyncBatchAnnotateImages
、公式のクラウド ビジョン 注釈サンプルから更新されたバージョンの関数を含むコードを以下に残します。(現在の範囲外かもしれませんが、役に立つと思います)
public static void asyncBatchAnnotateImages(List<String> uris, String outputUri)
throws IOException, ExecutionException, InterruptedException {
try (ImageAnnotatorClient imageAnnotatorClient = ImageAnnotatorClient.create()) {
List<AnnotateImageRequest> imageRequests = new ArrayList<AnnotateImageRequest>();
for (String inputImageUri : uris) {
ImageSource source = ImageSource.newBuilder().setImageUri(inputImageUri).build();
Image image = Image.newBuilder().setSource(source).build();
Feature feature = Feature.newBuilder().setType(Feature.Type.LABEL_DETECTION).build();
AnnotateImageRequest imageRequest = AnnotateImageRequest.newBuilder().setImage(image).addFeatures(feature).build();
imageRequests.add(imageRequest);
}
GcsDestination gcsDestination = GcsDestination.newBuilder().setUri(outputUri).build();
OutputConfig outputConfig = OutputConfig.newBuilder()
.setGcsDestination(gcsDestination)
.setBatchSize(1) // The max number of responses to output in each JSON file
.build();
AsyncBatchAnnotateImagesRequest request = AsyncBatchAnnotateImagesRequest.newBuilder()
.addAllRequests(imageRequests)
.setOutputConfig(outputConfig)
.build();
AsyncBatchAnnotateImagesResponse response = imageAnnotatorClient.asyncBatchAnnotateImagesAsync(request).get();
String gcsOutputUri = response.getOutputConfig().getGcsDestination().getUri();
System.out.format("Output written to GCS with prefix: %s%n", gcsOutputUri);
}
}