我正在实现一个Web应用程序,该应用程序使用Cloud Vision API来检测用户生成的图像上的文本。
我正在使用React和Firebase云函数。
流程如下:
react image crop
package客户代码
const canvasBase64 = canvas.toDataURL("image/jpeg", 1.0);
const result = await firebase.functions().httpsCallable("readTextFromImage")({
image: canvasBase64
});
setTextareaValue(result.data.text);
云函数代码
const Vision = require('@google-cloud/vision');
const vision = new Vision.ImageAnnotatorClient();
async function readTextFromImage(data) {
const imgBase64 = data.image;
const [textDetections] = await vision.textDetection(imgBase64);
// OTHER THINGS I'VE TRIED HERE
const buffer = new Buffer(imgBase64, 'base64');
const arraybuffer = Uint8Array.from(buffer).buffer;
const [textDetections] = await vision.textDetection(buffer);
const [textDetections] = await vision.textDetection(arraybuffer);
}
注:
base 64
映像似乎是正确生成的。
来自节点上的谷歌文档。js Vision API:
https://googleapis.dev/nodejs/vision/latest/v1.ImageAnnotatorClient.html#textDetection
我们得到:
在尝试使用缓冲区时,我得到了no image present
并传递了base64
字符串,我得到了code:enametolong
问题
我应该如何将base 64
字符串转换为Cloud Vision API将接受的内容?
我就是这样解决的。
我打开了一个Github问题,在那里我得到了更多的细节。
https://github.com/googleapis/nodejs-vision/issues/808
客户代码
我必须删除base 64
字符串的第一部分。
这部分:"data: Image/jpeg; base 64,"
const result = await firebase.functions().httpsCallable("readTextFromImage")({
image: canvasBase64.split("base64,")[1] // <--- REMOVES THE FIRST PART OF THE STRING
});
云函数代码*
此外,我还必须使用{image:{content:base64String}}
const [textDetections] = await vision.textDetection(
{
image: {
content: imgBase64
}
}
);
尽管这与以下文件不符:
https://googleapis.dev/nodejs/vision/latest/v1.ImageAnnotatorClient.html#textDetection
但是我从另一篇文章中得到了这个想法:
https://cloud.google.com/vision/docs/base64
问题内容: 我想为几个工作人员在Python中实现该模式,并遇到了以下有用的代码段: 资料来源:这里 据我了解,为了这样做,我需要将回调传递给将要调用的函数。如果调用函数是一个方法,大概我可以使用,但是如果没有此方法,我如何才能直接获得对位有用的回调? 问题答案: 任何定义的函数都可以通过简单地使用其名称来传递,而无需在调用末尾添加: 其他示例用法:
我试图将字符串参数传递给JavaScript函数。出于某种原因,它只能获取整数。我在这里只放了字符串的语法,因为我知道这是个问题,因为它与int一起工作。 发送函数内的代码: 最终,我希望用计数器的值调用HTML页面上的以下函数,如上图所示: 正如我提到的,当我发送int时,javascript文件会发出警报,但当我发送字符串时不会做出反应。
http://www.codeguru.com/cpp/w-p/win32/tutorials/article.php/c10849/Setting-a-System-Environment-Variable.htm 发送消息(HWND\u广播,WM\u设置更改,0,(LPARAM)“环境”); JNA和windows xp:调用以通知环境已更改 见链接:twall.github.com/jna/
问题内容: 我试图将回调函数从控制器传递给指令。 这是回调函数代码: 指令用法: 指令代码: 模板中的回调用法: 但是,这给了我以下错误: 我看过很多类似的问题,但不明白我在哪里错了。 问题答案: 从指令中调用表达式方法时,您需要以格式传递指令中的参数,还应更正指令属性值以像 指令用法: 指令模板
问题内容: 我正在尝试通过使用JSON格式的字符串初始化Javascript变量来加载数据表。如果我声明: 那么我的表将正确加载该行。 我尝试在脚本之前初始化Java字符串,然后将该对象传递给Javascript变量,如下所示: 我的表无法识别这一点,并且在尝试以这种方式传递行时无法加载该行。如何正确地将Java字符串传递给Javascript,以便我的表能够加载数据? 问题答案: 尝试使用引号。
问题内容: 我正在尝试将一些参数传递给用作回调的函数,该怎么做? 问题答案: 如果您想要更一般的东西,可以使用arguments变量,如下所示: 但是否则,您的示例可以正常工作(可以在测试器中使用arguments [0]代替回调)