Search code examples
pythongoogle-cloud-platformocrgoogle-vision

is it possible to scan 10 images at once ocr using google vision api? so far manage to do only 1


We are currently doing an ocr project using google vision API where the images return a text value... but so far we manage to do only 1 image, is it possible to do 10 images? im using python and this code only runs one image.. thank you

import os, io
from google.cloud import vision
from google.cloud.vision import types
import pandas as pd

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = r'anjir.json'

client = vision.ImageAnnotatorClient()

FILE_NAME = 'receipttest2.jpg'
FOLDER_PATH = r'C:\Users\Fadhlan\Desktop\Python venv\image\text'

with io.open(os.path.join(FOLDER_PATH, FILE_NAME), 'rb') as image_file:
    content = image_file.read()

image = vision.types.Image(content=content)
response = client.text_detection(image=image)
texts = response.text_annotations

df = pd.DataFrame(columns=['locale', 'description'])
for text in texts:
    df = df.append(
        dict(
            locale=text.locale,
            description=text.description
        ),
        ignore_index=True

    )
print(df['description'][0])

Solution

  • It's possible using batch image annotation offline since the "TEXT_DETECTION" feature is supported in the asynchronous mode. You can find a sample code for Python in here and as you can see there, it's required to create a request element for each image and add it to the array of requests:

    client = vision_v1.ImageAnnotatorClient()
    
    //image one
    source1 = {"image_uri": image_uri_1}
    image1 = {"source": source1}
    features1 = [
        {"type": enums.Feature.Type.LABEL_DETECTION},
        {"type": enums.Feature.Type.IMAGE_PROPERTIES}
    ]
    
    //image two
    source2 = {"image_uri": image_uri_2}
    image2 = {"source": source2}
    features2 = [
        {"type": enums.Feature.Type.LABEL_DETECTION}
    ]
    
    # Each requests element corresponds to a single image
    requests = [{"image": image1, "features": features1}, {"image": image2, "features": features2}]
    gcs_destination = {"uri": output_uri}
    
    # The max number of responses to output in each JSON file
    batch_size = 2
    
    output_config = {"gcs_destination": gcs_destination,
                     "batch_size": batch_size}
    operation = client.async_batch_annotate_images(requests, output_config)