来自 Google Vision API 的 OCR 置信度评分

问题描述 投票:0回答:3

我正在使用 Google Vision OCR 从 python 中的图像中提取文本。
使用以下代码片段。
然而,置信度分数总是显示

0.0
,这绝对是不正确的。

如何从 Google 响应中提取单个字符或单词的 OCR 置信度得分?

 content = cv2.imencode('.jpg', cv2.imread(file_name))[1].tostring()
 img = types.Image(content=content)
 response1 = client.text_detection(image=img, image_context={"language_hints": ["en"]})
 response_annotations = response1.text_annotations
 for x in response1.text_annotations:
      print(x)
      print(f'confidence:{x.confidence}')

例如:迭代的输出

description: "Date:"
bounding_poly {
  vertices {
    x: 127
    y: 11
  }
  vertices {
    x: 181
    y: 10
  }
  vertices {
    x: 181
    y: 29
  }
  vertices {
    x: 127
    y: 30
  }
}

confidence:0.0
image-processing computer-vision ocr google-cloud-vision google-vision
3个回答
2
投票

我成功重现了您的问题。我使用以下函数并获得所有项目的置信度 0.0。

from google.cloud import vision

def detect_text_uri(uri):
    client = vision.ImageAnnotatorClient()
    image = vision.types.Image()
    image.source.image_uri = uri

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

    for text in texts:
        print('\n"{}"'.format(text.description))

        vertices = (['({},{})'.format(vertex.x, vertex.y)
                    for vertex in text.bounding_poly.vertices])

        print('bounds: {}'.format(','.join(vertices)))
        print("confidence: {}".format(text.confidence))

    if response.error.message:
        raise Exception(
            '{}\nFor more info on error messages, check: '
            'https://cloud.google.com/apis/design/errors'.format(
                response.error.message))

但是,当使用相同的图像与文档中的“尝试 API”选项时,我获得了置信度非 0 的结果。从本地图像检测文本时也会发生这种情况。

人们应该期望使用这两种方法的置信度具有相同的值。我已打开问题跟踪器,请在

此处查看。


2
投票
检索 GOCR 响应的正确置信度值的工作代码。

(使用

document_text_detection()

 代替 text_detection()

def detect_document(path): """Detects document features in an image.""" from google.cloud import vision import io client = vision.ImageAnnotatorClient() # [START vision_python_migration_document_text_detection] with io.open(path, 'rb') as image_file: content = image_file.read() image = vision.types.Image(content=content) response = client.document_text_detection(image=image) 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( paragraph.confidence)) 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: ' 'https://cloud.google.com/apis/design/errors'.format( response.error.message)) # [END vision_python_migration_document_text_detection] # [END vision_fulltext_detection] # add your own path path = "gocr_vision.png" detect_document(path)
    

0
投票
未填充置信度分数?

试试这个

from google.cloud import vision_v1 image = vision_v1.Image(content=my_image) text_detection_params = vision_v1.TextDetectionParams(enable_text_detection_confidence_score=True) image_context = vision_v1.ImageContext(text_detection_params=text_detection_params) response = client.text_detection(image=image, image_context=image_context)
    
© www.soinside.com 2019 - 2024. All rights reserved.