Anotasi gambar batch offline

Vision API dapat menjalankan layanan deteksi offline (asinkron) dan anotasi sejumlah besar file gambar menggunakan beberapa jenis fitur Vision apa pun . Misalnya, Anda dapat menentukan satu atau lebih fitur Vision API (seperti TEXT_DETECTION, LABEL_DETECTION, dan LANDMARK_DETECTION) untuk setiap batch gambar.

Output dari permintaan batch offline ditulis ke file JSON yang dibuat dalam bucket Cloud Storage yang ditentukan.

Batasan

Vision API menerima hingga 2.000 file gambar. Batch file gambar yang lebih besar akan menampilkan {i>error.<i}

Jenis fitur yang didukung saat ini

Jenis fitur
CROP_HINTS Menetapkan verteks yang disarankan untuk area crop pada gambar
DOCUMENT_TEXT_DETECTION Menjalankan OCR pada gambar teks padat, seperti dokumen (PDF/TIFF), dan gambar dengan tulisan tangan. TEXT_DETECTION dapat digunakan untuk gambar teks yang renggang. Lebih diutamakan jika ada DOCUMENT_TEXT_DETECTION dan TEXT_DETECTION.
FACE_DETECTION Mendeteksi wajah dalam gambar.
IMAGE_PROPERTIES Menghitung kumpulan properti gambar, seperti warna dominan di gambar.
LABEL_DETECTION Menambahkan label berdasarkan konten gambar.
LANDMARK_DETECTION Mendeteksi landmark geografis dalam gambar.
LOGO_DETECTION Mendeteksi logo perusahaan dalam gambar.
OBJECT_LOCALIZATION Mendeteksi dan mengekstrak beberapa objek dalam gambar.
SAFE_SEARCH_DETECTION Menjalankan SafeSearch untuk mendeteksi konten yang berpotensi tidak aman atau tidak diinginkan.
TEXT_DETECTION Menjalankan Pengenalan Karakter Optik (OCR) pada teks dalam gambar. Deteksi teks dioptimalkan untuk area teks renggang dalam gambar yang lebih besar. Jika gambar adalah dokumen (PDF/TIFF), memiliki teks padat, atau berisi tulisan tangan, gunakan DOCUMENT_TEXT_DETECTION sebagai gantinya.
WEB_DETECTION Mendeteksi entitas topik tertentu seperti berita, peristiwa, atau selebritas dalam gambar, serta menemukan gambar serupa di web menggunakan kecanggihan Penelusuran Gambar Google.

Contoh kode

Gunakan contoh kode berikut untuk menjalankan layanan anotasi offline pada batch file gambar di Cloud Storage.

Java

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan Memulai Vision API Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Java Vision API.

import com.google.cloud.vision.v1.AnnotateImageRequest;
import com.google.cloud.vision.v1.AsyncBatchAnnotateImagesRequest;
import com.google.cloud.vision.v1.AsyncBatchAnnotateImagesResponse;
import com.google.cloud.vision.v1.Feature;
import com.google.cloud.vision.v1.GcsDestination;
import com.google.cloud.vision.v1.Image;
import com.google.cloud.vision.v1.ImageAnnotatorClient;
import com.google.cloud.vision.v1.ImageSource;
import com.google.cloud.vision.v1.OutputConfig;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class AsyncBatchAnnotateImages {

  public static void asyncBatchAnnotateImages()
      throws InterruptedException, ExecutionException, IOException {
    String inputImageUri = "gs://cloud-samples-data/vision/label/wakeupcat.jpg";
    String outputUri = "gs://YOUR_BUCKET_ID/path/to/save/results/";
    asyncBatchAnnotateImages(inputImageUri, outputUri);
  }

  public static void asyncBatchAnnotateImages(String inputImageUri, String outputUri)
      throws IOException, ExecutionException, InterruptedException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (ImageAnnotatorClient imageAnnotatorClient = ImageAnnotatorClient.create()) {

      // You can send multiple images to be annotated, this sample demonstrates how to do this with
      // one image. If you want to use multiple images, you have to create a `AnnotateImageRequest`
      // object for each image that you want annotated.
      // First specify where the vision api can find the image
      ImageSource source = ImageSource.newBuilder().setImageUri(inputImageUri).build();
      Image image = Image.newBuilder().setSource(source).build();

      // Set the type of annotation you want to perform on the image
      // https://cloud.google.com/vision/docs/reference/rpc/google.cloud.vision.v1#google.cloud.vision.v1.Feature.Type
      Feature feature = Feature.newBuilder().setType(Feature.Type.LABEL_DETECTION).build();

      // Build the request object for that one image. Note: for additional images you have to create
      // additional `AnnotateImageRequest` objects and store them in a list to be used below.
      AnnotateImageRequest imageRequest =
          AnnotateImageRequest.newBuilder().setImage(image).addFeatures(feature).build();

      // Set where to store the results for the images that will be annotated.
      GcsDestination gcsDestination = GcsDestination.newBuilder().setUri(outputUri).build();
      OutputConfig outputConfig =
          OutputConfig.newBuilder()
              .setGcsDestination(gcsDestination)
              .setBatchSize(2) // The max number of responses to output in each JSON file
              .build();

      // Add each `AnnotateImageRequest` object to the batch request and add the output config.
      AsyncBatchAnnotateImagesRequest request =
          AsyncBatchAnnotateImagesRequest.newBuilder()
              .addRequests(imageRequest)
              .setOutputConfig(outputConfig)
              .build();

      // Make the asynchronous batch request.
      AsyncBatchAnnotateImagesResponse response =
          imageAnnotatorClient.asyncBatchAnnotateImagesAsync(request).get();

      // The output is written to GCS with the provided output_uri as prefix
      String gcsOutputUri = response.getOutputConfig().getGcsDestination().getUri();