]> _ Git - 1000pourcent.git/commitdiff
wip #3222 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 28 Nov 2019 16:59:33 +0000 (17:59 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 28 Nov 2019 16:59:33 +0000 (17:59 +0100)
assets/font.traineddata [new file with mode: 0644]
assets/font.traineddata.gz [new file with mode: 0644]
index.html
js/1000pct.js
js/ocr.js
js/perspective.js

diff --git a/assets/font.traineddata b/assets/font.traineddata
new file mode 100644 (file)
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 (file)
index 0000000..bbdefb1
Binary files /dev/null and b/assets/font.traineddata.gz differ
index b50cec97d0b6bed528cae381bfec77abe29f6141..48b4f422e10e10799ab5abd47015f4d43b6ab118 100644 (file)
@@ -6,7 +6,7 @@
     <link href="style.css" rel="stylesheet" type="text/css">
 </head>
 <body>
-<script async src="js/opencv.js" onload="onOpenCvReady();" type="text/javascript"></script>
+<script async src="js/opencv.js" type="text/javascript"></script>
 <script async src='https://unpkg.com/tesseract.js@v2.0.0-beta.1/dist/tesseract.min.js' onload="onTesseractReady();"></script>
 <script src="js/1000pct.js"></script>
 <script src="js/perspective.js"></script>
index a96b778c409ecdc1bffaa0df69fa0fad20d1d5de..21f33ed80c165abfb7601b442ea71fbab55f0e69 100644 (file)
@@ -1,7 +1,7 @@
 var opencvReferences = [];
 
 
-function onOpenCvReady() {
+function appReady() {
     drawImage('assets/inputsmall.jpg', 'input', function (width, height) {
         setTimeout(function () {
             var start = Date.now();
index 91edaa7aa7b81634a9e638e218f4b2268dd8eec2..f29e7893540270f79d780f2c685c33b314c57ea3 100644 (file)
--- 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(
index 88cbf3474fe8cd3ba45efbc96a6598f165f3ee2b..22c66cce84b4094c70011e8353c0fee6bceb8592 100644 (file)
@@ -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);