为了账号安全,请及时绑定邮箱和手机立即绑定

tesseract.js 从 axios 流响应中识别

tesseract.js 从 axios 流响应中识别

慕斯王 2021-06-29 17:58:50
我的问题是可以从 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 文档


查看完整回答
反对 回复 2021-07-15
  • 2 回答
  • 0 关注
  • 223 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信