tesseract.js распознает ответ Axios Stream - PullRequest
0 голосов
/ 24 июня 2019

Мой вопрос: можно ли узнать из tesseract.js из потока ответов axios

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/articles/read/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

Итак, теперь проблема с readFile связана с тем, как читать файл из ответа axios. Что тоже не возможно. Поскольку readFile принимает только путь, а не данные. Поэтому будет возникать проблема в tesseract.js, чтобы можно было обойти распознавание readFile.

1 Ответ

0 голосов
/ 25 июня 2019

Я никогда не использовал эту библиотеку, но из приведенных примеров и быстрой проверки их исходного кода, похоже, что worker.recognize не принимает поток в качестве аргумента, вместо этого он ожидает либо URL изображения, либофактическое изображение, и оно обрабатывает сетевой вызов «при необходимости» внутри.

https://github.com/naptha/tesseract.js/blob/master/src/common/TesseractWorker.js#L74

const { TesseractWorker } = require( 'tesseract.js' );
const worker = new TesseractWorker();


worker.recognize('https://lh3.googleusercontent.com/iXmJ9aWblkGDpg-_jpcqaY10KmA8HthjZ7F15U7mJ9PQK6vZEStMlathz1FfQQWV5XeeF-A1tZ0UpDjx3q6vEm2BWZn5k1btVSuBk9ad=s660')
.then(console.log)
.catch(console.error)
...