Detect handwritten text in a Cloud Storage file (beta)

Perform handwritten text detection on a file stored in Cloud Storage (for beta launch).

Code sample


Before trying this sample, follow the Node.js setup instructions in the Vision Quickstart Using Client Libraries. For more information, see the Vision Node.js API reference documentation.

// Imports the Google Cloud client libraries
const vision = require('@google-cloud/vision').v1p3beta1;
const fs = require('fs');

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

 * TODO(developer): Uncomment the following line before running the sample.
// const uri = `gs://bucket/bucketImage.png`;

const request = {
  image: {
    content: fs.readFileSync(uri),
  feature: {
    languageHints: ['en-t-i0-handwrit'],

const [result] = await client.documentTextDetection(request);
const fullTextAnnotation = result.fullTextAnnotation;
console.log(`Full text: ${fullTextAnnotation.text}`);


Before trying this sample, follow the Python setup instructions in the Vision Quickstart Using Client Libraries. For more information, see the Vision Python API reference documentation.

def detect_handwritten_ocr_uri(uri):
    """Detects handwritten characters in the file located in Google Cloud

    uri: The path to the file in Google Cloud Storage (gs://...)
    from import vision_v1p3beta1 as vision
    client = vision.ImageAnnotatorClient()
    image = vision.Image()
    image.source.image_uri = uri

    # Language hint codes for handwritten OCR:
    # en-t-i0-handwrit, mul-Latn-t-i0-handwrit
    # Note: Use only one language hint code per request for handwritten OCR.
    image_context = vision.ImageContext(

    response = client.document_text_detection(image=image,

    print('Full Text: {}'.format(response.full_text_annotation.text))
    for page in response.full_text_annotation.pages:
        for block in page.blocks:
            print('\nBlock confidence: {}\n'.format(block.confidence))

            for paragraph in block.paragraphs:
                print('Paragraph confidence: {}'.format(

                for word in paragraph.words:
                    word_text = ''.join([
                        symbol.text for symbol in word.symbols
                    print('Word text: {} (confidence: {})'.format(
                        word_text, word.confidence))

                    for symbol in word.symbols:
                        print('\tSymbol: {} (confidence: {})'.format(
                            symbol.text, symbol.confidence))

    if response.error.message:
        raise Exception(
            '{}\nFor more info on error messages, check: '

What's next

To search and filter code samples for other Google Cloud products, see the Google Cloud sample browser