如何在Python中调用Azure OCR的预览版?

时间:2018-07-21 09:30:15

标签: python azure ocr microsoft-cognitive azure-cognitive-services

Azure认知服务OCR在网站上有一个演示 https://azure.microsoft.com/en-us/services/cognitive-services/computer-vision/#text

在网站上,我得到了非常准确的结果。但是,当我尝试使用他们的文档中提到的代码调用相同的代码时,会得到不同且效果不佳的结果。 https://docs.microsoft.com/en-us/azure/cognitive-services/Computer-vision/quickstarts/python-print-text

我假设,该网站上提供的版本是预览版。 https://westus.dev.cognitive.microsoft.com/docs/services/5adf991815e1060e6355ad44/operations/587f2c6a154055056008f200

如何在Python中调用该版本?

谢谢您的帮助!

2 个答案:

答案 0 :(得分:2)

现在有一个官方的Microsoft软件包:

有样品:

如果遇到麻烦,请在Github上创建问题:)

(我在Azure SDK团队的MS部门工作,该团队发布了此SDK)

答案 1 :(得分:0)

有两种不同的用于识别文本的API。演示页面使用的是新方法,但需要注意的是,在撰写本文时,该页面仅适用于英语。

您应查看的示例代码为here。如果要识别打印的文本,请调整param。看起来像这样:

region = 'westcentralus'
request_url = 'https://{region}.api.cognitive.microsoft.com/vision/v2.0/recognizeText'.format(region=region)
headers = {'Ocp-Apim-Subscription-Key': subscription_key}
params  = {'mode': 'Printed'}
data    = {'url': image_url}
response = requests.post(
    request_url, headers=headers, params=params, json=data)

您通常会收到HTTP 202响应,而不是识别结果。您需要从操作位置获取响应:

operation_url = response.headers["Operation-Location"]
operation_response = requests.get(operation_url, headers=headers)

请注意,您需要检查operation_response的状态以确保任务已完成:

if operation_response.json()[u'status'] == 'Succeeded': ...