使用python中的cv2使用Google Cloud Vision API从图像中提取文本

时间:2019-05-20 07:44:29

标签: python python-3.x google-cloud-platform google-cloud-vision

我们正在尝试使用google-cloud-vision API从图像中提取文本:

import io
import os
from google.oauth2 import service_account
from google.cloud import vision

# The name of the image file to annotate (Change the line below 'image_path.jpg' ******)
path = os.path.join(os.path.dirname(__file__), '3.jpg') # Your image path from current directory 


client = vision.ImageAnnotatorClient()

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

image = vision.types.Image(content=content)

response = client.text_detection(image=image)
texts = response.text_annotations
print('Texts:')

for text in texts:
    print(format(text.description))

在此代码中,我们需要使API仅通过“ cv2”功能而不是使用“ io”功能来读取图像:

# Read image file
    with io.open(img_path, 'rb') as image_file:
        content = image_file.read()

任何建议都会有所帮助

1 个答案:

答案 0 :(得分:3)

您需要做的就是将从cv2创建的numpy数组转换为Google Vision API使用的字节。这是您的操作方式:

import cv2 
with open(path, 'rb') as image_file:
    content1 = image_file.read()
image = cv2.imread(path)
success, encoded_image = cv2.imencode('.jpg', image)
content2 = encoded_image.tobytes()
image_cv2 = vision.types.Image(content=content2)
response =  client.text_detection(image=image_cv2)
texts = response.text_annotations