【问题标题】:How to send image using application/octet-stream in OCR Cognitive如何在 OCR Cognitive 中使用 application/octet-stream 发送图像
【发布时间】:2017-09-02 19:18:48
【问题描述】:

您好,我正在尝试使用 Microsoft 的 OCR API,它期望 Content-type application/octet-stream 和 body 发布二进制文件。 我尝试将图像作为 Base64(二进制)发送,只是二进制,但是它没有用。 有人知道这张图片需要如何发送吗?

Link to documentation

【问题讨论】:

    标签: javascript microsoft-cognitive


    【解决方案1】:

    是的,您可以简单地将其作为BlobFile 发送(它们几乎相同)。

    使用 XMLHttpRequest API 的示例代码:

    var xhr = new XMLHttpRequest();
    xhr.onload = do_something_with_this_JSON;
    xhr.open('POST', 'https://westus.api.cognitive.microsoft.com/vision/v1.0/ocr');
    xhr.setRequestHeader("Content-Type", "application/octet-stream");
    xhr.setRequestHeader("Ocp-Apim-Subscription-Key", YOUR_KEY);
    xhr.send(blob);
    

    现在关于如何获取 Blob,这实际上取决于您从哪里获取图像。

    • 如果它来自<input type="file">,那么您可以这样发送。
    • 如果它来自一个请求(那你为什么不将url作为application/JSON发送?)你可以请求响应是一个blob(xhr.responseType = "blob"fetch().then(resp => resp.blob())
    • 如果你有一个画布,那么你可以使用它的toBlob 方法。
    • 如果您只有一个 dataURI,请检查 this Q/A

    【讨论】:

    • 对于画布,请注意它们似乎不支持对透明 png 的识别:它们确实将所有透明像素转换为黑色,这样做会降低很多精度。
    • 感谢您的回答。我明白了,但我想接收一个 base64 编码的图像并转换成一个 blob 以使用 nodejs 发送 ocr 认知服务。我试过这样做,但我不知道这样做。
    • @RodolfoOliveira 这是我回答的最后一个项目符号,并且已在 SO 上多次回答。所以,请点击链接。
    • 我看到了这个。但是 Blob 是在 DOM Api 中定义的,而 NodeJS 不是基于 DOM 实现的,对吗?没有 Blob 对象我怎么能做到这一点?
    • 是的,它是正确的......但是我们怎么知道你正在使用节点?您的问题中没有任何内容表明,下次您遇到节点问题时,请添加 [node.js] 标记,就目前而言,您只是在谈论前端 javascript,这是我的回答所基于的。所以现在改变它会使我的答案无效,这......不是很好。我对节点的了解有限,但您想要的只是how to convert a dataURI to binaryhow to post this binary
    猜你喜欢
    • 2011-05-21
    • 2012-03-31
    • 2014-06-08
    • 2019-06-26
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    相关资源
    最近更新 更多