Javascript OCR中如何使用应用程序/八位字节流发送图像

Javascript OCR中如何使用应用程序/八位字节流发送图像,javascript,microsoft-cognitive,Javascript,Microsoft Cognitive,您好,我正在尝试使用微软的OCR API,它期望内容类型为application/octet流和body post一个二进制文件。 我尝试将图像作为Base64(二进制)发送,只是二进制,但它不起作用。 有人知道该图像需要如何发送吗 是的,您可以简单地将其作为a或a发送(它们几乎是相同的东西) 使用XMLHttpRequest API的示例代码: var xhr = new XMLHttpRequest(); xhr.onload = do_something_with_this_JSON; x

您好,我正在尝试使用微软的OCR API,它期望内容类型为application/octet流和body post一个二进制文件。 我尝试将图像作为Base64(二进制)发送,只是二进制,但它不起作用。 有人知道该图像需要如何发送吗


是的,您可以简单地将其作为a或a发送(它们几乎是相同的东西)

使用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);
现在,关于如何获得斑点,这实际上取决于从何处获得图像

  • 如果它来自
    ,那么您可以这样发送它
  • 如果它来自一个请求(那么为什么不将url作为
    application/JSON
    ?)发送),您可以将响应请求为blob(
    xhr.responseType=“blob”
    fetch()。然后(resp=>resp.blob())
  • 如果你有画布,那么你可以使用它的方法
  • 如果您只有一个dataURI,那么请检查

对于canvas,请注意它们似乎不支持对透明PNG的识别:它们确实将所有透明像素转换为黑色,这样做会降低很多精度。感谢您的回答。我明白了,但我想接收base64编码的图像,并转换为blob,以便使用nodejs发送ocr认知服务。我尝试过这样做,b但我不知道该怎么做。@Rodolfuiliveira这是我回答的最后一个项目,已经回答了很多次了。所以,请跟随链接。我看到了这一点。但是Blob是在DOM Api中定义的,NodeJS不是基于DOM实现的,对吗?没有Blob对象我怎么能做到这一点呢?是的,这是正确的…但是我们怎么知道这个呢至少,您正在使用node?您的问题中没有任何状态,因此,下次当您有一个node问题时,请添加[node.js]标签,就目前的情况而言,您所谈论的只是前端javascript,它是基于我的答案所依据的。因此,现在更改它将使我的答案无效,这…不太好。我在node方面的知识有限,但您想要的只是