了解Google OCR全文注释中的DetectedBreak

时间:2018-09-30 16:31:43

标签: ocr google-cloud-vision google-vision text-segmentation

我正在尝试将谷歌视觉OCR结果的全文注释转换为BlockParagraphWordSymbol中的行级和单词级层次结构。

但是,在将symbols转换为word文本并将word转换为line文本时,我需要了解DetectedBreak属性。

我经历了This documentation。但是我听不懂其中的几个。

有人可以解释以下中断是什么意思吗?我只了解LINE_BREAKSPACE

  1. EOL_SURE_SPACE
  2. 连字符
  3. LINE_BREAK
  4. 空格
  5. SURE_SPACE
  6. 未知

可以将它们替换为换行符还是空格?

1 个答案:

答案 0 :(得分:0)

您提供的链接提供了有关每一个代表什么的最详细的说明。我想更好地理解的最好方法是在不同的图像上运行ocr并将响应与在相应图像上看到的进行比较。以下python脚本在保存在GCS中的图像上运行DOCUMENT_TEXT_DETECTION并打印所有检测到的中断,除了您毫无困难的中断(LINE_BREAKSPACE)外,还有紧接的单词他们可以进行比较。

import sys
import os
from google.cloud import storage
from google.cloud import vision

def detect_breaks(gcs_image):

    os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '/path/to/json'
    client = vision.ImageAnnotatorClient()

    feature = vision.types.Feature(
        type=vision.enums.Feature.Type.DOCUMENT_TEXT_DETECTION)

    image_source = vision.types.ImageSource(
        image_uri=gcs_image)

    image = vision.types.Image(
        source=image_source)

    request = vision.types.AnnotateImageRequest(
        features=[feature], image=image)

    annotation = client.annotate_image(request).full_text_annotation

    breaks = vision.enums.TextAnnotation.DetectedBreak.BreakType
    word_text = ""
    for page in annotation.pages:
        for block in page.blocks:
            for paragraph in block.paragraphs:
                for word in paragraph.words:
                    for symbol in word.symbols:
                        word_text += symbol.text
                        if symbol.property.detected_break.type:
                            if symbol.property.detected_break.type == breaks.SPACE or symbol.property.detected_break.type == breaks.LINE_BREAK:
                                word_text = ""
                            else:
                                print word_text,symbol.property.detected_break
                                word_text = ""

if __name__ == '__main__':
    detect_breaks(sys.argv[1])