演示页和控制台之间的Azure OCR差异

时间:2019-01-15 14:54:44

标签: rest azure ocr

我有一些需要使用OCR识别的图像示例。

我尝试在演示页面https://azure.microsoft.com/en-us/services/cognitive-services/computer-vision/上识别它们,并且效果很好。我使用“读取图像中的文字”选项,其效果甚至比“读取图像中的手写文字”更好。

但是,当我尝试使用脚本中的REST调用时(根据文档中给出的示例),结果会更糟。有些字母被认为是错误的,有些则完全被漏掉了。如果尝试从开发控制台https://westcentralus.dev.cognitive.microsoft.com/docs/services/5adf991815e1060e6355ad44/operations/56f91f2e778daf14a499e1fc/console运行相同的示例,我仍然会得到相同的不良结果。

什么会引起这种差异?如何在演示页面生成时修复它以获得可靠的结果?

也许需要其他信息吗?

UPD:由于我找不到任何解决方案,甚至找不到差异的解释,所以我创建了一个示例文件(类似于实际文件),因此您可以看一下。文件网址为http://sfiles.herokuapp.com/sample.png

您可以看到,如果在演示页面https://azure.microsoft.com/en-us/services/cognitive-services/computer-vision/的“读取图像中的文字”部分中使用了该结果,则产生的JSON是

{
  "status": "Succeeded",
  "succeeded": true,
  "failed": false,
  "finished": true,
  "recognitionResult": {
    "lines": [
      {
        "boundingBox": [
          307,
          159,
          385,
          158,
          386,
          173,
          308,
          174
        ],
        "text": "October 2011",
        "words": [
          {
            "boundingBox": [
              308,
              160,
              357,
              160,
              357,
              174,
              308,
              175
            ],
            "text": "October"
          },
          {
            "boundingBox": [
              357,
              160,
              387,
              159,
              387,
              174,
              357,
              174
            ],
            "text": "2011"
          }
        ]
      },
      {
        "boundingBox": [
          426,
          157,
          519,
          158,
          519,
          173,
          425,
          172
        ],
        "text": "07UC14PII0244",
        "words": [
          {
            "boundingBox": [
              426,
              160,
              520,
              159,
              520,
              174,
              426,
              174
            ],
            "text": "07UC14PII0244"
          }
        ]
      }
    ]
  }
}

如果我在控制台中使用此文件并进行以下调用:

POST https://westcentralus.api.cognitive.microsoft.com/vision/v2.0/ocr?language=unk&detectOrientation =true HTTP/1.1
Host: westcentralus.api.cognitive.microsoft.com
Content-Type: application/json
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••

{"url":"http://sfiles.herokuapp.com/sample.png"}

我得到不同的结果:

{
  "language": "el",
  "textAngle": 0.0,
  "orientation": "Up",
  "regions": [{
    "boundingBox": "309,161,75,10",
    "lines": [{
      "boundingBox": "309,161,75,10",
      "words": [{
        "boundingBox": "309,161,46,10",
        "text": "October"
      }, {
        "boundingBox": "358,162,26,9",
        "text": "2011"
      }]
    }]
  }, {
    "boundingBox": "428,161,92,10",
    "lines": [{
      "boundingBox": "428,161,92,10",
      "words": [{
        "boundingBox": "428,161,92,10",
        "text": "071_lC14P110244"
      }]
    }]
  }]
}

您看到的结果是完全不同的(甚至是JSON格式)。有谁知道我在做什么错,或者我错过了什么,并且“读取图像中的文本”演示与API的ocr方法不匹配?

将非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

Microsoft认知服务中有两种OCR类型。较新的终结点(/recognizeText)具有更好的识别能力,但当前仅支持英语。较旧的终结点(/ocr)具有更广泛的语言覆盖范围。

有关差异的一些其他详细信息在this post中。