Мой вопрос: можно ли узнать из 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.
Я никогда не использовал эту библиотеку, но из приведенных примеров и быстрой проверки их исходного кода, похоже, что worker.recognize не принимает поток в качестве аргумента, вместо этого он ожидает либо URL изображения, либофактическое изображение, и оно обрабатывает сетевой вызов «при необходимости» внутри.
worker.recognize
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)