Tesseract.js, похоже, выводит на консоль при каждом вызове .recognize (), даже если параметры не подключены.
Кажется возможным успокоить вывод с помощью Tesseract CLI, используя флаг "quiet", но я не могу найти ничего подобного для Tesseract.js.
Я просканировал параметры, которые можно было бы передать в «параметры», как указано в репозитории Tesseract.js:
https://github.com/naptha/tesseract.js/blob/master/docs/tesseract_parameters.md
Я попытался установить все, что связано с "DEBUG", равным 0, и я попытался отправить вывод в параметр "debug_file", но ничего, что я делаю, похоже, не изменило вывод консоли.
Вот базовый пример без параметров для объекта «options»:
const fs = require('fs');
const Tesseract = require('tesseract.js');
const image = fs.readFileSync('path/to/image.jpg');
const options = {};
Tesseract.recognize(image, options)
.finally((resultOrError) => {
Tesseract.terminate();
}
);
Я бы ожидал, что здесь вообще не будет выходных данных, но вместо этого будет напечатано:
pre-main prep time: 76 ms
{ text: '',
html: '<div class=\'ocr_page\' id=\'page_1\' title=\'image ""; bbox 0 0 600 80; ppageno 0\'>\n</div>\n',
confidence: 0,
blocks: [],
psm: 'SINGLE_BLOCK',
oem: 'DEFAULT',
version: '3.04.00',
paragraphs: [],
lines: [],
words: [],
symbols: [] }
UPDATE
Хорошо, хорошо. Рано утром, я мог бы попробовать немного усерднее. Похоже, Tesseract.js автоматически выводит все на консоль, если вы не делаете вызовы .catch () и .then (). В приведенном ниже примере большая часть вывода на консоль исчезает.
const fs = require('fs');
const Tesseract = require('tesseract.js');
const image = fs.readFileSync('path/to/image.jpg');
const options = {};
const doSomethingWithResult = (result) => { result };
const doSomethingWithError = (error) => { error };
Tesseract.recognize(image, options)
.then(result => doSomethingWithResult(result))
.catch(err => doSomethingWithError(err))
.finally((resultOrError) => {
Tesseract.terminate();
}
);
Теперь только это выводится на консоль:
pre-main prep time: 66 ms
Я все еще хотел бы способ подавить это, поэтому я оставлю вопрос без ответа на данный момент. Я надеюсь, что кто-то может присоединиться с предложением.