From: Vincent Vanwaelscappel Date: Thu, 28 Nov 2019 16:59:33 +0000 (+0100) Subject: wip #3222 @1 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=1331471ac2685950997a423c4331348ee1e3a75d;p=1000pourcent.git wip #3222 @1 --- diff --git a/assets/font.traineddata b/assets/font.traineddata new file mode 100644 index 0000000..2ef9bf7 Binary files /dev/null and b/assets/font.traineddata differ diff --git a/assets/font.traineddata.gz b/assets/font.traineddata.gz new file mode 100644 index 0000000..bbdefb1 Binary files /dev/null and b/assets/font.traineddata.gz differ diff --git a/index.html b/index.html index b50cec9..48b4f42 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,7 @@ - + diff --git a/js/1000pct.js b/js/1000pct.js index a96b778..21f33ed 100644 --- a/js/1000pct.js +++ b/js/1000pct.js @@ -1,7 +1,7 @@ var opencvReferences = []; -function onOpenCvReady() { +function appReady() { drawImage('assets/inputsmall.jpg', 'input', function (width, height) { setTimeout(function () { var start = Date.now(); diff --git a/js/ocr.js b/js/ocr.js index 91edaa7..f29e789 100644 --- a/js/ocr.js +++ b/js/ocr.js @@ -1,14 +1,18 @@ function onTesseractReady() { - - window.tesseractWorker = new Tesseract.createWorker(); + console.log('onTesseractReady()'); (async () => { - await window.tesseractWorker.load(); - await window.tesseractWorker.loadLanguage('eng'); - await window.tesseractWorker.initialize('eng'); - await window.tesseractWorker.setParameters({ - tessedit_char_whitelist: '0123456789?', - }); + window.tesseractScheduler = Tesseract.createScheduler(); + for (let i = 0; i < 4; i++) { + let worker = Tesseract.createWorker({ + langPath:'./assets/', + }); + await worker.load(); + await worker.loadLanguage('font'); + await worker.initialize('font'); + tesseractScheduler.addWorker(worker); + } + appReady(); })(); } @@ -50,18 +54,20 @@ function recognizeChars(canvas) { function extractRegion(src, region, color, area) { let drawId = 'color_' + color + '_area'; + var coef = 1000 / 500; + region[0] *= coef; + region[1] *= coef; + region[2] *= coef; + region[3] *= coef; + let rect = new cv.Rect(region[0], region[1], region[2], region[3]); let dst = src.roi(rect); - // if (region[4] === 90 || region[4] === 270) { - // cv.imshow(getCanvas('c_' + drawId), dst); - // } let res = new cv.Mat(); let w, h; w = region[2]; h = region[3]; - let size = new cv.Size(w, h); let center = new cv.Point(w / 2, h / 2); let bbox = cv.RotatedRect.boundingRect({center: center, size: size, angle: region[4]}); @@ -75,9 +81,9 @@ function extractRegion(src, region, color, area) { // Grayscale cv.cvtColor(res, res, cv.COLOR_RGBA2GRAY, 0); // Brightness - cv.convertScaleAbs(res, res,2,100); + cv.convertScaleAbs(res, res, 1.9, 100); // Contrast - cv.equalizeHist(res, res); + cv.equalizeHist(res, res); let canvas = getCanvas(drawId); cv.imshow(canvas, res); @@ -86,11 +92,12 @@ function extractRegion(src, region, color, area) { } function ocr(image, color, area) { + let worker = new Tesseract.createWorker(); + (async () => { - const {data: {text}} = await window.tesseractWorker.recognize(image); - console.log(text); + const {data: {text}} = await window.tesseractScheduler.addJob('recognize', image); + console.log(color, area, text); regions[color][area] = text; - await window.tesseractWorker.terminate(); })(); // try { // Tesseract.recognize( diff --git a/js/perspective.js b/js/perspective.js index 88cbf34..22c66cc 100644 --- a/js/perspective.js +++ b/js/perspective.js @@ -61,7 +61,7 @@ function correctPerspective(contours) { cv.warpPerspective(src, finalDest, M, dsize, cv.INTER_LINEAR, cv.BORDER_CONSTANT, new cv.Scalar()); // Resize the board to be a square - var finalSize = 500; + var finalSize = 1000; let boardSized = cv.Mat.zeros(finalSize, finalSize, cv.CV_8UC3); let boardSize = new cv.Size(finalSize, finalSize) cv.resize(finalDest, boardSized, boardSize, 0, cv.INTER_LINEAR);