tesseract.js 从 axios 流响应中识别

我的问题是可以从 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 时可以绕过。


慕斯王
浏览 226回答 2
2回答

心有法竹

在爱可信,你可以改变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 文档
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript