Tesseract.js似乎每次调用.recognize()都会打印到控制台,即使没有附加任何选项参数。
似乎可以通过使用“ quiet”标志使Tesseract CLI安静输出,但是我找不到Tesseract.js这样的东西。
我已经浏览了可以传递给Tesseract.js存储库中“选项”的参数: https://github.com/naptha/tesseract.js/blob/master/docs/tesseract_parameters.md
我尝试将与“ DEBUG”相关的所有内容都设置为0,并且尝试将输出发送到“ debug_file”参数,但我似乎无济于事,无法更改控制台输出。
这是一个基本示例,在“选项”对象上没有参数:
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: [] }
更新
好的,好的。现在是凌晨,我本可以在这里稍加努力。如果您不调用.catch()和.then(),则Tesseract.js似乎会自动将所有内容转储到控制台。在下面的示例中,大多数控制台输出消失了。
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
我仍然想抑制这种情况,所以现在暂时不回答这个问题。我希望有人可以提出建议。