Tesseract.js - выводит результат построчно вместо чтения всего изображения - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь прочитать текст с tesseract.js в узле.

Чтобы ускорить процесс, я бы хотел, чтобы он выводил результаты построчно. Если я правильно понимаю tesseract, он сначала считывает изображение, применяет некоторые изменения, фильтры и т. Д., Чтобы сделать его более читабельным, обнаруживает строки, а затем начинает распознавать текст в этих строках.

Есть ли способ, как я мог бы получить эти строки до того, как он закончит распознавать весь документ, или мне нужно было бы буквально разделить изображение и затем передать каждую строку как изображение для тессеракта?

Чтобы попробовать это, я разделил тестовое изображение вручную и пропустил их через tesseract. Это значительно ускоряет процесс (для моего конкретного варианта использования).

Результат: https://gyazo.com/3e50e40bb7b2f07190c4a2377b65c92d

var Tesseract = require('tesseract.js')

var myImage = [
        "1.jpg",
        "2.jpg",
        "3.jpg",
        "4.jpg",
        "5.jpg",
        "6.jpg",
        "7.jpg",
        "8.jpg",
        "9.jpg"
]

rec(0)

function rec(number){
    var thisImage = myImage[number];

    Tesseract.recognize(thisImage, {
        lang: "eng"
    })
       .then(function (result) { 
            console.log("[Line: " + number + "] " + result.text.replace(/(\r\n|\n|\r)/gm, ""));
            if(number < 8){
                number++;
                rec(number)
            }
        })  
}

В случае, если мне придется предварительно разделить изображение, какую библиотеку NodeJS мне следует использовать для обнаружения линий? ImageMagick?

Я нашел пример на python только от того, кто пытался обнаружить строки на изображении: Разделение строк текста в отсканированном документе

Каков был бы правильный подход для этого?

...