Как заставить Tesseract.js правильно читать символ (цифру)? - PullRequest
0 голосов
/ 28 октября 2019

У меня есть пара маленьких изображений с одинарными цифрами, как эта: enter image description here (кстати, само число прозрачно)

Но по какой-то причине Tesseract.js считает, что2 на изображении 1.

Что я пробовал:

  • позволяет только Tesseract.js распознавать цифры
  • изменять сегментациюрежим так, что Tesseract.js ожидает одиночный символ, используя tessedit_pageseg_mode
  • удалить альфа-слой (прозрачность) из изображения и сделать число белым
  • инвертировать вышеупомянутое изображение так, чтобы я закончилвверх с черным 2 на белом фоне

Но он продолжает распознавать 1 вместо 2 независимо от того, что я пытаюсь.

Это мой код:

const Tesseract = require('tesseract.js')

async function imageToNumber(img) {
    const result = await Tesseract.recognize(img, {
        lang: 'eng',
        //tessedit_pageseg_mode: '10', // singe char mode
        tessedit_char_whitelist: '0123456789'
    })
    return parseInt(result.text)
}

async function main() {
    const detectedNumber = await imageToNumber('2.png')
    console.log(detectedNumber)
    process.exit()
}


main().catch(console.error)

Что я делаю не так? Как я могу заставить Tesseract.js сделать это правильно?

...