使用Python中的Cloud Vision API格式化OCR文本注释

时间:2018-01-15 15:59:32

标签: python google-cloud-platform google-cloud-vision

我在我正在使用的小程序上使用Google Cloud Vision API for Python。该功能正在运行,我得到了OCR结果,但我需要格式化这些结果才能使用它们。

这是功能:

# Call to OCR API
def detect_text_uri(uri):
    """Detects text in the file located in Google Cloud Storage or on the Web.
    """
    client = vision.ImageAnnotatorClient()
    image = types.Image()
    image.source.image_uri = uri

    response = client.text_detection(image=image)
    texts = response.text_annotations

    for text in texts:
        textdescription = ("    "+ text.description )
        return textdescription

我特别需要逐行切割文本,并在开头添加四个空格,最后添加一个换行符,但此时这只适用于第一行,其余部分作为单行返回斑点。

我一直在检查官方文档,但没有真正了解API的响应格式。

1 个答案:

答案 0 :(得分:6)

你几乎就在那里。由于您希望逐行对文本进行切片,而不是循环显示文本注释,请尝试获取直接的' 描述'来自谷歌愿景的回应,如下所示。

def parse_image(image_path=None):
    """
    Parse the image using Google Cloud Vision API, Detects "document" features in an image
    :param image_path: path of the image
    :return: text content
    :rtype: str
    """

    client = vision.ImageAnnotatorClient()
    response = client.text_detection(image=open(image_path, 'rb'))
    text = response.text_annotations
    del response     # to clean-up the system memory

    return text[0].description

上述函数返回一个字符串,其中包含图片中的内容,其中的行以" \ n"

分隔

现在,您可以添加前缀&每条线都需要后缀。

image_content = parse_image(image_path="path\to\image")

my_formatted_text = ""
for line in image_content.split("\n"):
    my_formatted_text += "    " + line + "\n"

my_formatted_text是您需要的文字。