Как подавить вывод консоли в Tesseract.js? - PullRequest
0 голосов
/ 17 января 2019

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

Я все еще хотел бы способ подавить это, поэтому я оставлю вопрос без ответа на данный момент. Я надеюсь, что кто-то может присоединиться с предложением.

...