如何在Tesseract.js中禁止控制台输出?

时间:2019-01-17 14:44:09

标签: javascript node.js ocr tesseract tesseract.js

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

我仍然想抑制这种情况,所以现在暂时不回答这个问题。我希望有人可以提出建议。

0 个答案:

没有答案