Node.js - Google Cloud Vision API Examples

Image processing technology makes it possible to extract information from an image. Deveoping your own image processing takes a lot of time, effort and knowledge. As an alternative, you can use image processing services, one of them is Google Cloud Vision. This tutorial shows you how to use Google Cloud Vision API from Node.js application.

Preparation

1. Create or select a Google Cloud project

A Google Cloud project is required to use this service. Open Google Cloud console, then create a new project or select existing project

2. Enable billing for the project

Like other cloud platforms, Google requires you to enable billing for your project. If you haven't set up billing, open billing page.

3. Enable Cloud Vision API

To use an API, you must enable it first. Open this page to enable Cloud Vision API.

4. Set up service account for authentication

As for authentication, you need to create a new service account. Create a new one on the service account management page and download the credentials, or you can use your already created service account.

In your .env file, you have to add a new variable

GOOGLE_APPLICATION_CREDENTIALS=/path/to/the/credentials

Dependencies

This tutorial uses @google-cloud/vision and also dotenv for loading environment. Add the following dependencies to your package.json and run npm install

  "@google-cloud/vision": "~0.23.0"
  "dotenv": "~4.0.0"

Code Examples

First, we need to create a client of @google-cloud/vision, which makes it easy to call Cloud Vision APIs. The library needs to read the credentials file whose path has been set on .env variable named GOOGLE_APPLICATION_CREDENTIALS. So we need load the .env file as well.

  // Load .env
  require('dotenv').config();

  // Import the Google Cloud Vision library
  const vision = require('@google-cloud/vision');

  // Create a client
  const client = new vision.ImageAnnotatorClient();

Label Detection

Label Detection is used to determine the type of image.

  client
    .labelDetection('an_image.png')
    .then(results => {
       const result = results[0].labelAnnotations;

       console.log(`Label Annotations Result: ${JSON.stringify(result, null, 2)}`);
    })
    .catch(err => {
        console.error('ERROR:', err);
    });

Text Detection

Text Detection is used to extract texts from an image.

  client
    .textDetection('http://digitalnativestudios.com/textmeshpro/docs/rich-text/line-indent.png')
    .then(results => {
      const result = results[0].textAnnotations;

      console.log(`Text Annotations Result: ${JSON.stringify(result, null, 2)}`);
    })
    .catch(err => {
        console.error('ERROR:', err);
    });

Logo Detection

Logo Detection is used to detect logo of popular brands from an image.

  client
    .logoDetection('http://allenmeyerdesign.com/wp-content/uploads/2013/09/new-yahoo-logo.jpg')
    .then(results => {
      const result = results[0].logoAnnotations;

      console.log(`Logo Annotations Result: ${JSON.stringify(result, null, 2)}`);
    })
    .catch(err => {
        console.error('ERROR:', err);
    });

List of Supported Annotations

Beside those three annotations above, currenty Google Cloud Vision also supports face detection, landmark detection, document text detection, safe search detection, etc.. Below is the list of supported annotations.

Annotation Method Description
faceDetection Detect multiple faces including facial attributes such as emotional state or headwear
landmarkDetection Detect popular structures, both natural and man-made
logoDetection Detect logo of popular brands
labelDetection Determine the type of image
textDetection Detect text within images using Optical Character Recognition (OCR)
documentTextDetection Detect dense document text using Optical Character Recognition (OCR)
safeSearchDetection Moderate and detect inappropriate content