node.js - 计算机视觉阅读 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 没有返回任何值。有人可以帮助我可能是什么问题吗?
解决方案
如文档所示,这是设计使然:
当您调用读取操作时,调用会返回一个名为“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));
};
结果:
推荐阅读
- python - 用于提取占位符匹配的 RegEx
- excel - 通过 cmd 运行 excel 宏
- android - 如何设置 EditText 菜单项的文本?
- python - Python argparse - 具有“store_true”行为的用户定义操作
- django - Django:获取带注释的值
- java - Spring Boot jdbc 问题。配置数据源失败:未指定“url”属性,无法配置嵌入式数据源
- bash - 如何防止while循环输出与以前的输出冲突?
- node.js - 使用 Npm 更新所有包
- node.js - 在 Node.JS 中将一个文件导入另一个文件时出错
- javascript - 使用 Webpack Encore Symfony 4 找不到警报