Annotazione immagini batch offline

L'API Vision può eseguire servizi di rilevamento e annotazione offline (asincroni) di un batch di file di immagini di grandi dimensioni utilizzando qualsiasi tipo di funzionalità Vision funzionalità. Ad esempio, puoi specificare una o più funzionalità dell'API Vision (come TEXT_DETECTION, LABEL_DETECTION, e LANDMARK_DETECTION) per un singolo batch di immagini.

L'output di una richiesta batch offline viene scritto in un file JSON creato nel bucket Cloud Storage specificato.

Limitazioni

L'API Vision accetta fino a 2000 file di immagini. Un batch di file di immagini più grande restituirà un errore.

Tipi di funzionalità attualmente supportati

Tipo di caratteristica
CROP_HINTS Determina i vertici suggeriti per un'area di ritaglio su un'immagine.
DOCUMENT_TEXT_DETECTION Esegui l'OCR sulle immagini ad alta densità di testo, ad esempio documenti (PDF/TIFF) e immagini con scrittura a mano libera. TEXT_DETECTION può essere utilizzato per immagini con testo sparso. Ha la precedenza quando sono presenti sia DOCUMENT_TEXT_DETECTION che TEXT_DETECTION.
FACE_DETECTION Rileva i volti all'interno dell'immagine.
IMAGE_PROPERTIES Calcola un insieme di proprietà relative all'immagine, come i colori predominanti dell'immagine.
LABEL_DETECTION Aggiungi etichette in base al contenuto dell'immagine.
LANDMARK_DETECTION Rileva i punti di riferimento geografici nell'immagine.
LOGO_DETECTION Rileva i loghi aziendali nell'immagine.
OBJECT_LOCALIZATION Rileva ed estrai più oggetti in un'immagine.
SAFE_SEARCH_DETECTION Esegui SafeSearch per rilevare contenuti potenzialmente non sicuri o indesiderati.
TEXT_DETECTION Esegui il riconoscimento ottico dei caratteri (OCR) per il testo all'interno dell'immagine. Il rilevamento del testo è ottimizzato per aree di testo sparso all'interno di un'immagine più grande. Se l'immagine è un documento (PDF/TIFF), contiene testo ad alta densità o con scrittura a mano libera, utilizza invece DOCUMENT_TEXT_DETECTION.
WEB_DETECTION Rileva entità suddivise per argomento, ad esempio notizie, eventi o celebrità all'interno dell'immagine, e trova immagini simili sul Web grazie alla potenza della ricerca di immagini di Google.

Codice campione

Utilizza i seguenti esempi di codice per eseguire i servizi di annotazione offline su un batch di file di immagini in Cloud Storage.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida all'utilizzo delle librerie client dell'API Vision. Per saperne di più, consulta la documentazione di riferimento dell'API Vision per Java.

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.