var defaultOptions = { workerPath: 'https://cdn.rawgit.com/naptha/tesseract.js/0.1.3/dist/worker.js', tesseractPath: 'https://cdn.rawgit.com/naptha/tesseract.js-core/0.1.0/index.js', langPath: 'https://cdn.rawgit.com/naptha/tessdata/gh-pages/3.02/', } if(location.hostname === '127.0.0.1' && location.port == '7355'){ console.debug('Using Development Configuration') defaultOptions.workerPath = location.protocol + '//' + location.host + '/dist/worker.js' } exports.defaultOptions = defaultOptions; exports.spawnWorker = function spawnWorker(instance, workerOptions){ if(window.Blob && window.URL){ var blob = new Blob(['importScripts("' + workerOptions.workerPath + '");']) var worker = new Worker(window.URL.createObjectURL(blob)); }else{ var worker = new Worker(workerOptions.workerPath) } worker.onmessage = function(e){ var packet = e.data; instance._recv(packet) } return worker } exports.terminateWorker = function(instance){ instance.worker.terminate() } exports.sendPacket = function sendPacket(instance, packet){ loadImage(packet.payload.image, function(img){ packet.payload.image = img instance.worker.postMessage(packet) }) } function loadImage(image, cb){ if(typeof image === 'string'){ if(/^\#/.test(image)){ // element css selector return loadImage(document.querySelector(image), cb) }else{ // url or path var im = new Image im.src = image; im.onload = e => loadImage(im, cb); return } }else if(image instanceof File){ // files var fr = new FileReader() fr.onload = e => loadImage(fr.result, cb); fr.readAsDataURL(image) return }else if(image instanceof Blob){ return loadImage(URL.createObjectURL(image), cb) }else if(image.getContext){ // canvas element return loadImage(image.getContext('2d'), cb) }else if(image.tagName == "IMG" || image.tagName == "VIDEO"){ // image element or video element var c = document.createElement('canvas'); c.width = image.naturalWidth || image.videoWidth; c.height = image.naturalHeight || image.videoHeight; var ctx = c.getContext('2d'); ctx.drawImage(image, 0, 0); return loadImage(ctx, cb) }else if(image.getImageData){ // canvas context var data = image.getImageData(0, 0, image.canvas.width, image.canvas.height); return loadImage(data, cb) } cb(image) }