jaw*_*jaw 5 javascript ocr tesseract
我正在使用 Tesseract JS(v2.1.0 和 Tesseract v4.1.1)来识别经过大量预处理(降噪、黑/白)的扫描图像中的数字(一位或多位数字),并且知道数字在哪里。
但是,当我运行识别时,经常无法正确识别两位数,例如:
在此示例中,“11”被识别为“1”。
在图片中,你可以看到
rectangle给 Tesseract 的彩色矩形仅在该矩形中识别(但在识别后添加)到目前为止我尝试过的:
有什么可以改变选项或预处理来改善这一点吗?
这是代码(部分):
const scheduler = Tesseract.createScheduler();
const workers = createWorkers(16);
const canvasElement = document.getElementById('detected-numbers');
await recognizeNumbers(scheduler, workers, canvasElement, rowSpecNumbers, colSpecNumbers);
async function recognizeNumbers(scheduler, workers, canvasElement, rowSpecNumbers, colSpecNumbers) {
for (const worker of workers) {
await worker.load();
await worker.loadLanguage('eng');
await worker.initialize('eng');
await worker.setParameters({
tessedit_ocr_engine_mode: Tesseract.TESSERACT_ONLY,
tessedit_char_whitelist: '0123456789',
tessedit_pageseg_mode: Tesseract.SINGLE_WORD
})
scheduler.addWorker(worker);
}
await Promise.all(rowSpecNumbers
.flat()
.map(number => scheduler.addJob('recognize', canvasElement, {
rectangle: {
left: number.boundingRect.x,
top: number.boundingRect.y,
width: number.boundingRect.width,
height: number.boundingRect.height
}
}).then(result => number.data = result.data)
));
await Promise.all(colSpecNumbers
.flat()
.map(number => scheduler.addJob('recognize', canvasElement, {
rectangle: {
left: number.boundingRect.x,
top: number.boundingRect.y,
width: number.boundingRect.width,
height: number.boundingRect.height
}
}).then(result => number.data = result.data)
));
await scheduler.terminate();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1361 次 |
| 最近记录: |