From b26adef7c60ff2b82d978b1ab501e94c484e8439 Mon Sep 17 00:00:00 2001 From: Guillermo Date: Tue, 28 Jul 2015 22:40:06 -0700 Subject: [PATCH] moar geen --- ...15.07.25.v0.js => Tesseract.2015.07.26.js} | 2 +- lib/Tesseract_dev.js | 130 ++++++++++++++++++ ....2015.07.25.v0.js => worker.2015.07.26.js} | 0 3 files changed, 131 insertions(+), 1 deletion(-) rename lib/{Tesseract.2015.07.25.v0.js => Tesseract.2015.07.26.js} (97%) create mode 100644 lib/Tesseract_dev.js rename lib/{worker.2015.07.25.v0.js => worker.2015.07.26.js} (100%) diff --git a/lib/Tesseract.2015.07.25.v0.js b/lib/Tesseract.2015.07.26.js similarity index 97% rename from lib/Tesseract.2015.07.25.v0.js rename to lib/Tesseract.2015.07.26.js index 9b2af2d..e066d85 100644 --- a/lib/Tesseract.2015.07.25.v0.js +++ b/lib/Tesseract.2015.07.26.js @@ -6,7 +6,7 @@ var Tesseract = (function(){ //https://rawgit.com/naptha/tesseract.js/master/worker/worker.js for testing //https://cdn.rawgit.com/naptha/tesseract.js/master/worker/worker.js - var blob = new Blob(["importScripts('https://cdn.rawgit.com/naptha/tesseract.js/master/lib/worker.2015.07.25.v0.js');"]); // changed on build + var blob = new Blob(["importScripts('https://cdn.rawgit.com/naptha/tesseract.js/master/lib/worker.2015.07.26.js');"]); // changed on build // console.log('localhost') var worker = new Worker(window.URL.createObjectURL(blob)); worker.postMessage({init: {mem: 16777216*6}}) diff --git a/lib/Tesseract_dev.js b/lib/Tesseract_dev.js new file mode 100644 index 0000000..01b11e4 --- /dev/null +++ b/lib/Tesseract_dev.js @@ -0,0 +1,130 @@ +var Tesseract = (function(){ + + var Tesseract = {} + + //https://cdn.rawgit.com/naptha/tesseract.js/master/worker/worker.js + //https://rawgit.com/naptha/tesseract.js/master/worker/worker.js for testing + //https://cdn.rawgit.com/naptha/tesseract.js/master/worker/worker.js + + var blob = new Blob(["importScripts('http://localhost:1234/master/lib/worker.2015.07.26.js');"]); // changed on build + // console.log('localhost') + var worker = new Worker(window.URL.createObjectURL(blob)); + worker.postMessage({init: {mem: 16777216*6}}) + var bigworker = false + + var index = 0 + var handlers = [] + + worker.onmessage = function(e){ + var handler = handlers[e.data.index] + if(e.data.progress){ + handler.progress(e.data.progress) + } + else if(e.data.err){ + handler.reject(e.data.err) + handler.callback(e.data.err) + } + else { + handler.resolve(e.data.result) + handler.callback(null,e.data.result) + } + } + + function convertToImageData(image){ + if(image.getContext){ + image = image.getContext('2d'); + }else if(image.tagName == "IMG" || image.tagName == "VIDEO"){ + var c = document.createElement('canvas'); + if(image.tagName == "IMG"){ + c.width = image.naturalWidth; + c.height = image.naturalHeight; + }else if(image.tagName == "VIDEO"){ + c.width = image.videoWidth; + c.height = image.videoHeight; + } + var ctx = c.getContext('2d'); + ctx.drawImage(image, 0, 0); + image = ctx; + } + if(image.getImageData) image = image.getImageData(0, 0, image.canvas.width, image.canvas.height); + return image + } + + Tesseract.detect = function(image, progress, callback){ + image = convertToImageData(image) + + if(typeof progress === "undefined"){ + progress = callback = new Function() + } + + if (typeof callback === "undefined"){ + callback = progress + progress = new Function() + } + + var i = index++ + + handlers[i] = { + resolve: new Function(), + reject: new Function() + } + handlers[i].callback = callback + handlers[i].progress = progress + + return new Promise(function(resolve, reject){ + handlers[i].resolve = resolve + handlers[i].reject = reject + worker.postMessage({index: i, fun: 'detect', image: image}) + }) + + } + + Tesseract.recognize = function(image, options, callback){ + var lang = options.lang + if (typeof lang === "undefined"){ + lang = 'eng' + } + + if (!bigworker && ['chi_sim', 'chi_tra', 'jpn'].indexOf(lang) != -1){ + worker.postMessage({init: {mem: 16777216*10}}) + bigworker = true + console.log('started big worker') + } + + if (typeof options === 'string') { + lang = options + options = {} + } + + if (typeof options === "function") { + callback = options + options = {} + } + + image = convertToImageData(image) + + var i = index++ + + handlers[i] = { + resolve: new Function(), + reject: new Function() + } + handlers[i].callback = callback || new Function() + handlers[i].progress = (function(){ + if(typeof options.progress === 'function'){ + var p = options.progress + delete options.progress + return p + } + return function(){} + })() + + return new Promise(function(resolve, reject){ + handlers[i].resolve = resolve + handlers[i].reject = reject + worker.postMessage({index: i, fun: 'recognize', image: image, lang: lang, options: options}) + }) + + } + return Tesseract +})() diff --git a/lib/worker.2015.07.25.v0.js b/lib/worker.2015.07.26.js similarity index 100% rename from lib/worker.2015.07.25.v0.js rename to lib/worker.2015.07.26.js