Pure Javascript OCR for more than 100 Languages 📖🎉🖥
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
1.7 KiB

10 years ago
var Tesseract = {}
Tesseract.recognize = function(image, options, callback){
var lang = options.lang
if(typeof lang === "undefined"){
lang = 'eng'
}
if (typeof options === 'string') {
lang = options
options = {}
}
if (typeof options === "function") {
callback = options
options = {}
}
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);
10 years ago
var blob = new Blob(["importScripts('https://cdn.rawgit.com/naptha/tesseract.js/master/worker/worker.js');"]);
var worker = new Worker(window.URL.createObjectURL(blob));
var progress = (function(){
if(typeof options.progress === 'function'){
var p = options.progress
delete options.progress
return p
}
return function(){}
})()
10 years ago
if(typeof callback === "function"){
worker.onmessage = function(e){
if(e.data.progress){
progress(e.data.progress)
}
else{
callback(e.data.err, e.data.result)
}
10 years ago
}
worker.postMessage({image: image, lang: lang})
}
else {
return new Promise(function(resolve, reject){
worker.onmessage = function(e){
if(e.data.progress){
progress(e.data.progress)
}
else if(e.data.err){
10 years ago
reject(e.data.err)
}
else {
resolve(e.data.result)
}
}
worker.postMessage({image: image, lang: lang, options: options})
})
}
}