Skip to content
This repository has been archived by the owner on Jul 20, 2023. It is now read-only.

Commit

Permalink
docs: update beta samples to v1 and style (#553)
Browse files Browse the repository at this point in the history
  • Loading branch information
nnegrey authored Mar 11, 2020
1 parent a80d966 commit 5ddbab9
Show file tree
Hide file tree
Showing 3 changed files with 198 additions and 128 deletions.
97 changes: 57 additions & 40 deletions samples/async-batch-annotate-images.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,55 +14,72 @@

'use strict';

async function main(inputImageUri, outputUri) {
// [START vision_async_batch_annotate_images_beta]
function main(
inputImageUri = 'gs://cloud-samples-data/vision/label/wakeupcat.jpg',
outputUri = 'gs://YOUR_BUCKET_ID/path/to/save/results/'
) {
// [START vision_async_batch_annotate_images]
/**
* TODO(developer): Uncomment these variables before running the sample.
*/
// const inputImageUri = 'gs://cloud-samples-data/vision/label/wakeupcat.jpg';
// const outputUri = 'gs://YOUR_BUCKET_ID/path/to/save/results/';

// Imports the Google Cloud client libraries
const {ImageAnnotatorClient} = require('@google-cloud/vision').v1p4beta1;
const {ImageAnnotatorClient} = require('@google-cloud/vision').v1;

// Creates a client
// Instantiates a client
const client = new ImageAnnotatorClient();

/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// GCS path where the image resides
// const inputImageUri = 'gs://my-bucket/my_image.jpg';
// GCS path where to store the output json
// const outputUri = 'gs://mybucket/out/'

const features = [
{type: 'DOCUMENT_LABEL_DETECTION'},
{type: 'DOCUMENT_TEXT_DETECTION'},
{type: 'DOCUMENT_IMAGE_DETECTION'},
];

const outputConfig = {
gcsDestination: {
uri: outputUri,
},
};
// 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 request object for each image that you want annotated.
async function asyncBatchAnnotateImages() {
// 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
const features = [
{type: 'LABEL_DETECTION'},
];

const request = {
requests: [
{
image: {
source: {
imageUri: inputImageUri,
},
// Build the image request object for that one image. Note: for additional images you have to create
// additional image request objects and store them in a list to be used below.
const imageRequest = {
image: {
source: {
imageUri: inputImageUri,
},
features: features,
},
],
outputConfig,
};
features: features,
}

// Set where to store the results for the images that will be annotated.
const outputConfig = {
gcsDestination: {
uri: outputUri,
},
batchSize: 2, // The max number of responses to output in each JSON file
};

// Add each image request object to the batch request and add the output config.
const request = {
requests: [
imageRequest, // add additional request objects here
],
outputConfig,
};

// Make the asynchronous batch request.
const [operation] = await client.asyncBatchAnnotateImages(request);

// Wait for the operation to complete
const [filesResponse] = await operation.promise();

const [operation] = await client.asyncBatchAnnotateImages(request);
const [filesResponse] = await operation.promise();
// The output is written to GCS with the provided output_uri as prefix
const destinationUri = filesResponse.outputConfig.gcsDestination.uri;
console.log(`Output written to GCS with prefix: ${destinationUri}`);
}

const destinationUri = filesResponse.outputConfig.gcsDestination.uri;
console.log(`Json saved to: ${destinationUri}`);
// [END vision_async_batch_annotate_images_beta]
asyncBatchAnnotateImages();
// [END vision_async_batch_annotate_images]
}

main(...process.argv.slice(2)).catch(console.error);
main(...process.argv.slice(2));
116 changes: 71 additions & 45 deletions samples/batch-annotate-files-gcs.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,66 +14,92 @@

'use strict';

async function main(gcsSourceUri) {
// [START vision_batch_annotate_files_gcs_beta]
function main(
gcsSourceUri = 'gs://cloud-samples-data/vision/document_understanding/kafka.pdf'
) {
// [START vision_batch_annotate_files_gcs]
/**
* TODO(developer): Uncomment these variables before running the sample.
*/
// const gcsSourceUri = 'gs://cloud-samples-data/vision/document_understanding/kafka.pdf';

// Imports the Google Cloud client libraries
const {ImageAnnotatorClient} = require('@google-cloud/vision').v1p4beta1;
const {ImageAnnotatorClient} = require('@google-cloud/vision').v1;

// Creates a client
// Instantiates a client
const client = new ImageAnnotatorClient();

/**
* TODO(developer): Uncomment the following line before running the sample.
*/
// GCS path where the pdf file resides
// const gcsSourceUri = 'gs://my-bucket/my_pdf.pdf';

const inputConfig = {
// Supported mime_types are: 'application/pdf' and 'image/tiff'
mimeType: 'application/pdf',
gcsSource: {
uri: gcsSourceUri,
},
};
const features = [{type: 'DOCUMENT_TEXT_DETECTION'}];
const request = {
requests: [
{
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],
// You can send multiple files to be annotated, this sample demonstrates how to do this with
// one file. If you want to use multiple files, you have to create a request object for each file that you want annotated.
async function batchAnnotateFiles() {
// First Specify the input config with the file's uri 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',
gcsSource: {
uri: gcsSourceUri,
},
],
};
};

const [result] = await client.batchAnnotateFiles(request);
const responses = result.responses[0].responses;
// 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'}];

for (const response of responses) {
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) {
// 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(
` Symbol: ${symbol.text} (confidence: ${symbol.confidence})`
` Word text: ${word_text} (confidence: ${word.confidence})`
);
for (const symbol of word.symbols) {
console.log(
` Symbol: ${symbol.text} (confidence: ${symbol.confidence})`
);
}
}
}
}
}
}
}
// [END vision_batch_annotate_files_gcs_beta]

batchAnnotateFiles();
// [END vision_batch_annotate_files_gcs]
}

main(...process.argv.slice(2));
113 changes: 70 additions & 43 deletions samples/batch-annotate-files.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,66 +14,93 @@

'use strict';

async function main(fileName) {
// [START vision_batch_annotate_files_beta]
function main(
fileName = 'path/to/your/file.pdf'
) {
// [START vision_batch_annotate_files]
/**
* TODO(developer): Uncomment these variables before running the sample.
*/
// const fileName = 'path/to/your/file.pdf';

// Imports the Google Cloud client libraries
const {ImageAnnotatorClient} = require('@google-cloud/vision').v1p4beta1;
const {ImageAnnotatorClient} = require('@google-cloud/vision').v1;
const fs = require('fs');
const {promisify} = require('util');
const readFileAsync = promisify(fs.readFile);

// Creates a client
// Instantiates a client
const client = new ImageAnnotatorClient();

/**
* TODO(developer): Uncomment the following line before running the sample.
*/
// const fileName = `/path/to/localDocument.pdf`;
// You can send multiple files to be annotated, this sample demonstrates how to do this with
// one file. If you want to use multiple files, you have to create a request object for each file that you want annotated.
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 readFileAsync(fileName),
};

const inputConfig = {
// Other supported mime_types: image/tiff' or 'image/gif'
mimeType: 'application/pdf',
content: await readFileAsync(fileName),
};
const features = [{type: 'DOCUMENT_TEXT_DETECTION'}];
const request = {
requests: [
{
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],
},
],
};
// 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'}];

const [result] = await client.batchAnnotateFiles(request);
const responses = result.responses[0].responses;
// 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],
};

for (const response of responses) {
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) {
// 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(
` Symbol: ${symbol.text} (confidence: ${symbol.confidence})`
` Word text: ${word_text} (confidence: ${word.confidence})`
);
for (const symbol of word.symbols) {
console.log(
` Symbol: ${symbol.text} (confidence: ${symbol.confidence})`
);
}
}
}
}
}
}
}
// [END vision_batch_annotate_files_beta]

batchAnnotateFiles();
// [END vision_batch_annotate_files]
}

main(...process.argv.slice(2)).catch(console.error);
main(...process.argv.slice(2));

0 comments on commit 5ddbab9

Please sign in to comment.