我的问题是可以从 axios 响应流中的 tesseract.js 中识别const axios = require('axios');const { TesseractWorker } = require('tesseract.js');const worker = new TesseractWorker();axios({ method: 'get', url: 'https://lh3.googleusercontent.com/iXmJ9aWblkGDpg-_jpcqaY10KmA8HthjZ7F15U7mJ9PQK6vZEStMlathz1FfQQWV5XeeF-A1tZ0UpDjx3q6vEm2BWZn5k1btVSuBk9ad=s660', responseType: 'stream'}) .then(function (response) { //this doesn't work worker.recognize(response.data).then(result => { console.log(result); }); });我看到一些例子https://ourcodeworld.com/articles/read/580/how-to-convert-images-to-text-with-pure-javascript-using-tesseract-js & https://ourcodeworld.com/文章/阅读/348/getting-started-with-optical-character-recognition-ocr-with-tesseract-in-node-js。但我无法从这个例子中弄清楚。-------------------------------------------------- - -更新 - - - - - - - - - - - - - - - - - - - - - - - ---------------调试后,我发现 tesseract.js 没有问题,因为它正在调用本机 node.js fs readFile 函数https://github.com/naptha/tesseract.js/blob/master/src/node/index.js#L37所以现在面临关于如何从 axios 响应中读取文件的 readFile 问题。这也是不可能的。因为 readFile 只接受路径而不是数据。因此,将为 tesseract.js 创建一个问题,以便在识别 readFile 时可以绕过。
2 回答
心有法竹
TA贡献1866条经验 获得超5个赞
在爱可信,你可以改变responseType,以arraybuffer在Node.js的情况下,或者blob在浏览器的情况下。并将结果传递给Tesseract.recognize
例如,
const img = await axios({
method: 'get',
url: 'your img url',
responseType: 'arraybuffer' //for me it's node.js
});
const imgeDataAsString = await Tesseract.recognize(
img.data,
'eng',
{ logger: m => console.log(m) }
).then(({ data: { text } }) => text);
你在这里参考 axios 文档
添加回答
举报
0/150
提交
取消