async function batchAnnotateFiles()

in vision/batch-annotate-files.js [33:94]


  async function batchAnnotateFiles() {
    // First Specify the input config with the file's path and its type.
    // Supported mime_type: application/pdf, image/tiff, image/gif
    // https://cloud.google.com/vision/docs/reference/rpc/google.cloud.vision.v1#inputconfig
    const inputConfig = {
      mimeType: 'application/pdf',
      content: await fs.readFile(fileName),
    };

    // Set the type of annotation you want to perform on the file
    // https://cloud.google.com/vision/docs/reference/rpc/google.cloud.vision.v1#google.cloud.vision.v1.Feature.Type
    const features = [{type: 'DOCUMENT_TEXT_DETECTION'}];

    // Build the request object for that one file. Note: for additional files you have to create
    // additional file request objects and store them in a list to be used below.
    // Since we are sending a file of type `application/pdf`, we can use the `pages` field to
    // specify which pages to process. The service can process up to 5 pages per document file.
    // https://cloud.google.com/vision/docs/reference/rpc/google.cloud.vision.v1#google.cloud.vision.v1.AnnotateFileRequest
    const fileRequest = {
      inputConfig: inputConfig,
      features: features,
      // Annotate the first two pages and the last one (max 5 pages)
      // First page starts at 1, and not 0. Last page is -1.
      pages: [1, 2, -1],
    };

    // Add each `AnnotateFileRequest` object to the batch request.
    const request = {
      requests: [fileRequest],
    };

    // Make the synchronous batch request.
    const [result] = await client.batchAnnotateFiles(request);

    // Process the results, just get the first result, since only one file was sent in this
    // sample.
    const responses = result.responses[0].responses;

    for (const response of responses) {
      console.log(`Full text: ${response.fullTextAnnotation.text}`);
      for (const page of response.fullTextAnnotation.pages) {
        for (const block of page.blocks) {
          console.log(`Block confidence: ${block.confidence}`);
          for (const paragraph of block.paragraphs) {
            console.log(` Paragraph confidence: ${paragraph.confidence}`);
            for (const word of paragraph.words) {
              const symbol_texts = word.symbols.map(symbol => symbol.text);
              const word_text = symbol_texts.join('');
              console.log(
                `  Word text: ${word_text} (confidence: ${word.confidence})`
              );
              for (const symbol of word.symbols) {
                console.log(
                  `   Symbol: ${symbol.text} (confidence: ${symbol.confidence})`
                );
              }
            }
          }
        }
      }
    }
  }