首页 > 解决方案 > 计算机视觉阅读 api azure

问题描述

我已经尝试了 Read api of azure 来从图像/pdf( https://eastus.dev.cognitive.microsoft.com/docs/services/computer-vision-v3-2/operations/5d986960601faab4bf452005/console )中读取文本并且它有效正确然后我尝试使用代码

var request = require('request');
var options = {
  'method': 'POST',
  'url': 'https://eastus.api.cognitive.microsoft.com/vision/v3.2/read/analyze?language=en&readingOrder=basic&model-version=latest',
  'headers': {
    'Host': 'eastus.api.cognitive.microsoft.com',
    'Content-Type': 'application/json',
    'Ocp-Apim-Subscription-Key': 'key'
  },
  body: JSON.stringify({"url":"url"})

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log("response",response.body);
});

response.body 没有返回任何值。有人可以帮助我可能是什么问题吗?

标签: node.jsazureocr

解决方案


如文档所示,这是设计使然:

当您调用读取操作时,调用会返回一个名为“Operation-Location”的响应标头。“Operation-Location”标头包含一个带有操作 ID 的 URL,该操作 ID 将在第二步中使用。在第二步中,您使用 Get Read Result 操作来获取检测到的文本行和单词作为 JSON 响应的一部分。

响应体为空,可以Operation-Location在响应头中。

只需尝试以下代码即可获得Operation-Location最终结果:

var request = require('request');

var region = ''
var key = ''
var imageUrl = ""

var options = {
  'method': 'POST',
  'url': `https://${region}.api.cognitive.microsoft.com/vision/v3.2/read/analyze?language=en&readingOrder=basic&model-version=latest`,
  'headers': {
    'Content-Type': 'application/json',
    'Ocp-Apim-Subscription-Key': key
  },
  body: JSON.stringify({"url":imageUrl})

};


request(options, function (error, response) {
    if (error) throw new Error(error);

    resultURL = response.headers['operation-location'];
    //print result URL
    console.log(resultURL)

    options.url= resultURL
    options.method='GET'

    //wait 5s to allow Azure process the image
    wait(5000).then(function(){
            request.get(options,function(error, result){
                console.log(result.body)
            });
        })
});

function wait(ms) {
    return new Promise(resolve => setTimeout(() => resolve(), ms));
};

结果:

在此处输入图像描述


推荐阅读