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();
})();
}
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]});
// 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);
}
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(
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);