tesseract.js возвращает слишком длинную строку с base64 - PullRequest
0 голосов
/ 07 июня 2018

Я бы хотел протестировать библиотеку tesseract.js на сервере node.js, но при запуске следующего кода:

var TESSERACT = require('tesseract.js');
var base64String = 'data:image/png;base64,' + pngInBase64;
var job1 = TESSERACT.recognize(base64String, {
    progress: show_progress,
    lang: 'ang'
});

function show_progress(p) {
    console.log(p);
}

Получает ошибку в виде:

Error: ENAMETOOLONG: name too long, open 'data:image/png;base64,iVBORw0KGgoAAAA ...

Можно ли каким-либо образом установить (увеличить) максимальную длину строки base64?

1 Ответ

0 голосов
/ 14 ноября 2018

Использование "tesseract.js": "1.0.10":

Передав строку в качестве параметра recognize, Tesseract пытается открыть файл с именем data:image/png;base64,{bytes...}, и это выдает ошибку, которую вы видите,а именно ENAMETOOLONG, имя файла слишком длинное.

В recognize строку base64, превратите ее в Buffer, содержимое которого декодируется в base64:

Tesseract.recognize(Buffer.from(base64String, 'base64'));
// have a cup of tea

Примечание: Tesseract.recognize не работает на base64 Buffer, и вам также необходимо избавиться от метаданных: data:image/png;base64.

Так что это не сработает:

Tesseract.recognize(Buffer.from(base64string));

и это тоже не сработает:

const base64string = 'data:image/png;base64,{bytes...}'
Tesseract.recognize(Buffer.from(base64string));

вам нужно получить байты:

const base64string = 'data:image/png;base64,{bytes...}'.split(',')[1];
Tesseract.recognize(Buffer.from(base64string, 'base64'));
...