-
Notifications
You must be signed in to change notification settings - Fork 0
/
tesseract.min.js.map
1 lines (1 loc) · 77.8 KB
/
tesseract.min.js.map
1
{"version":3,"sources":["webpack://Tesseract/webpack/universalModuleDefinition","webpack://Tesseract/webpack/bootstrap","webpack://Tesseract/./src/utils/getId.js","webpack://Tesseract/./src/utils/log.js","webpack://Tesseract/./node_modules/process/browser.js","webpack://Tesseract/./node_modules/resolve-url/resolve-url.js","webpack://Tesseract/./src/createJob.js","webpack://Tesseract/./src/createWorker.js","webpack://Tesseract/./src/constants/OEM.js","webpack://Tesseract/./src/index.js","webpack://Tesseract/./node_modules/regenerator-runtime/runtime.js","webpack://Tesseract/(webpack)/buildin/module.js","webpack://Tesseract/./src/createScheduler.js","webpack://Tesseract/./src/utils/resolvePaths.js","webpack://Tesseract/./src/utils/getEnvironment.js","webpack://Tesseract/./node_modules/is-electron/index.js","webpack://Tesseract/./src/utils/circularize.js","webpack://Tesseract/./src/constants/config.js","webpack://Tesseract/./src/worker/browser/index.js","webpack://Tesseract/./src/worker/browser/defaultOptions.js","webpack://Tesseract/./src/constants/defaultOptions.js","webpack://Tesseract/./src/worker/browser/spawnWorker.js","webpack://Tesseract/./src/worker/browser/terminateWorker.js","webpack://Tesseract/./src/worker/browser/onMessage.js","webpack://Tesseract/./src/worker/browser/send.js","webpack://Tesseract/./src/worker/browser/loadImage.js","webpack://Tesseract/./src/Tesseract.js","webpack://Tesseract/./src/constants/PSM.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","prefix","cnt","Math","random","toString","slice","logging","setLogging","_logging","log","args","console","apply","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","setTimeout","e","this","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","length","concat","drainQueue","timeout","len","run","marker","runClearTimeout","Item","array","noop","nextTick","Array","arguments","push","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","numUrls","base","document","createElement","href","head","getElementsByTagName","insertBefore","firstChild","resolved","a","index","removeChild","getId","require","jobCounter","_id","id","action","payload","resolvePaths","circularize","createJob","defaultOEM","defaultOptions","spawnWorker","terminateWorker","onMessage","loadImage","send","workerCounter","_options","logger","errorHandler","options","resolves","rejects","worker","setResolve","res","setReject","rej","startJob","jobId","Promise","resolve","reject","workerId","load","writeText","path","text","method","readText","encoding","removeFile","FS","loadLanguage","langs","initialize","oem","setParameters","params","recognize","image","opts","getPDF","textonly","detect","terminate","status","data","from","keys","TESSERACT_ONLY","LSTM_ONLY","TESSERACT_LSTM_COMBINED","DEFAULT","createScheduler","createWorker","Tesseract","OEM","PSM","runtime","undefined","Op","hasOwn","$Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","state","GenStateSuspendedStart","arg","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","type","done","GenStateSuspendedYield","makeInvokeMethod","fn","obj","err","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","AsyncIterator","previousPromise","callInvokeWithMethodAndArg","invoke","result","__await","then","unwrapped","error","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","constructor","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","iter","reverse","pop","skipTempReset","prev","charAt","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","webpackPolyfill","deprecate","paths","children","schedulerCounter","workers","runningWorkers","jobQueue","getNumWorkers","dequeue","wIds","job","w","shift","addWorker","addJob","wid","getQueueLen","resolveURL","isElectron","importScripts","electron","navigator","userAgent","indexOf","page","blocks","paragraphs","lines","words","symbols","block","paragraph","line","word","sym","dependencies","workerPath","TESS_ENV","corePath","substring","WebAssembly","langPath","workerBlobURL","Blob","URL","blob","Worker","createObjectURL","handler","onmessage","packet","postMessage","readFromBlobOrFile","fileReader","FileReader","onload","onerror","code","target","readAsArrayBuffer","test","atob","split","map","charCodeAt","fetch","resp","arrayBuffer","HTMLElement","tagName","src","poster","toBlob","File","Uint8Array","finally","OSD_ONLY","AUTO_OSD","AUTO_ONLY","AUTO","SINGLE_COLUMN","SINGLE_BLOCK_VERT_TEXT","SINGLE_BLOCK","SINGLE_LINE","SINGLE_WORD","CIRCLE_WORD","SINGLE_CHAR","SPARSE_TEXT","SPARSE_TEXT_OSD"],"mappings":"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","file":"tesseract.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Tesseract\"] = factory();\n\telse\n\t\troot[\"Tesseract\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 7);\n","module.exports = (prefix, cnt) => (\n `${prefix}-${cnt}-${Math.random().toString(16).slice(3, 8)}`\n);\n","let logging = false;\n\nexports.logging = logging;\n\nexports.setLogging = (_logging) => {\n logging = _logging;\n};\n\nexports.log = (...args) => (logging ? console.log.apply(this, args) : null);\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","// Copyright 2014 Simon Lydell\r\n// X11 (“MIT”) Licensed. (See LICENSE.)\r\n\r\nvoid (function(root, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define(factory)\r\n } else if (typeof exports === \"object\") {\r\n module.exports = factory()\r\n } else {\r\n root.resolveUrl = factory()\r\n }\r\n}(this, function() {\r\n\r\n function resolveUrl(/* ...urls */) {\r\n var numUrls = arguments.length\r\n\r\n if (numUrls === 0) {\r\n throw new Error(\"resolveUrl requires at least one argument; got none.\")\r\n }\r\n\r\n var base = document.createElement(\"base\")\r\n base.href = arguments[0]\r\n\r\n if (numUrls === 1) {\r\n return base.href\r\n }\r\n\r\n var head = document.getElementsByTagName(\"head\")[0]\r\n head.insertBefore(base, head.firstChild)\r\n\r\n var a = document.createElement(\"a\")\r\n var resolved\r\n\r\n for (var index = 1; index < numUrls; index++) {\r\n a.href = arguments[index]\r\n resolved = a.href\r\n base.href = resolved\r\n }\r\n\r\n head.removeChild(base)\r\n\r\n return resolved\r\n }\r\n\r\n return resolveUrl\r\n\r\n}));\r\n","const getId = require('./utils/getId');\n\nlet jobCounter = 0;\n\nmodule.exports = ({\n id: _id,\n action,\n payload = {},\n}) => {\n let id = _id;\n if (typeof id === 'undefined') {\n id = getId('Job', jobCounter);\n jobCounter += 1;\n }\n\n return {\n id,\n action,\n payload,\n };\n};\n","const resolvePaths = require('./utils/resolvePaths');\nconst circularize = require('./utils/circularize');\nconst createJob = require('./createJob');\nconst { log } = require('./utils/log');\nconst getId = require('./utils/getId');\nconst { defaultOEM } = require('./constants/config');\nconst {\n defaultOptions,\n spawnWorker,\n terminateWorker,\n onMessage,\n loadImage,\n send,\n} = require('./worker/node');\n\nlet workerCounter = 0;\n\nmodule.exports = (_options = {}) => {\n const id = getId('Worker', workerCounter);\n const {\n logger,\n errorHandler,\n ...options\n } = resolvePaths({\n ...defaultOptions,\n ..._options,\n });\n const resolves = {};\n const rejects = {};\n let worker = spawnWorker(options);\n\n workerCounter += 1;\n\n const setResolve = (action, res) => {\n resolves[action] = res;\n };\n\n const setReject = (action, rej) => {\n rejects[action] = rej;\n };\n\n const startJob = ({ id: jobId, action, payload }) => (\n new Promise((resolve, reject) => {\n log(`[${id}]: Start ${jobId}, action=${action}`);\n setResolve(action, resolve);\n setReject(action, reject);\n send(worker, {\n workerId: id,\n jobId,\n action,\n payload,\n });\n })\n );\n\n const load = jobId => (\n startJob(createJob({\n id: jobId, action: 'load', payload: { options },\n }))\n );\n\n const writeText = (path, text, jobId) => (\n startJob(createJob({\n id: jobId,\n action: 'FS',\n payload: { method: 'writeFile', args: [path, text] },\n }))\n );\n\n const readText = (path, jobId) => (\n startJob(createJob({\n id: jobId,\n action: 'FS',\n payload: { method: 'readFile', args: [path, { encoding: 'utf8' }] },\n }))\n );\n\n const removeFile = (path, jobId) => (\n startJob(createJob({\n id: jobId,\n action: 'FS',\n payload: { method: 'unlink', args: [path] },\n }))\n );\n\n const FS = (method, args, jobId) => (\n startJob(createJob({\n id: jobId,\n action: 'FS',\n payload: { method, args },\n }))\n );\n\n const loadLanguage = (langs = 'eng', jobId) => (\n startJob(createJob({\n id: jobId,\n action: 'loadLanguage',\n payload: { langs, options },\n }))\n );\n\n const initialize = (langs = 'eng', oem = defaultOEM, jobId) => (\n startJob(createJob({\n id: jobId,\n action: 'initialize',\n payload: { langs, oem },\n }))\n );\n\n const setParameters = (params = {}, jobId) => (\n startJob(createJob({\n id: jobId,\n action: 'setParameters',\n payload: { params },\n }))\n );\n\n const recognize = async (image, opts = {}, jobId) => (\n startJob(createJob({\n id: jobId,\n action: 'recognize',\n payload: { image: await loadImage(image), options: opts },\n }))\n );\n\n const getPDF = (title = 'Tesseract OCR Result', textonly = false, jobId) => (\n startJob(createJob({\n id: jobId,\n action: 'getPDF',\n payload: { title, textonly },\n }))\n );\n\n const detect = async (image, jobId) => (\n startJob(createJob({\n id: jobId,\n action: 'detect',\n payload: { image: await loadImage(image) },\n }))\n );\n\n const terminate = async () => {\n if (worker !== null) {\n /*\n await startJob(createJob({\n id: jobId,\n action: 'terminate',\n }));\n */\n terminateWorker(worker);\n worker = null;\n }\n return Promise.resolve();\n };\n\n onMessage(worker, ({\n workerId, jobId, status, action, data,\n }) => {\n if (status === 'resolve') {\n log(`[${workerId}]: Complete ${jobId}`);\n let d = data;\n if (action === 'recognize') {\n d = circularize(data);\n } else if (action === 'getPDF') {\n d = Array.from({ ...data, length: Object.keys(data).length });\n }\n resolves[action]({ jobId, data: d });\n } else if (status === 'reject') {\n rejects[action](data);\n if (errorHandler) {\n errorHandler(data);\n } else {\n throw Error(data);\n }\n } else if (status === 'progress') {\n logger(data);\n }\n });\n\n return {\n id,\n worker,\n setResolve,\n setReject,\n load,\n writeText,\n readText,\n removeFile,\n FS,\n loadLanguage,\n initialize,\n setParameters,\n recognize,\n getPDF,\n detect,\n terminate,\n };\n};\n","/*\n * OEM = OCR Engine Mode, and there are 4 possible modes.\n *\n * By default tesseract.js uses LSTM_ONLY mode.\n *\n */\nmodule.exports = {\n TESSERACT_ONLY: 0,\n LSTM_ONLY: 1,\n TESSERACT_LSTM_COMBINED: 2,\n DEFAULT: 3,\n};\n","/**\n *\n * Entry point for tesseract.js, should be the entry when bundling.\n *\n * @fileoverview entry point for tesseract.js\n * @author Kevin Kwok <[email protected]>\n * @author Guillermo Webster <[email protected]>\n * @author Jerome Wu <[email protected]>\n */\nrequire('regenerator-runtime/runtime');\nconst createScheduler = require('./createScheduler');\nconst createWorker = require('./createWorker');\nconst Tesseract = require('./Tesseract');\nconst OEM = require('./constants/OEM');\nconst PSM = require('./constants/PSM');\nconst { setLogging } = require('./utils/log');\n\nmodule.exports = {\n OEM,\n PSM,\n createScheduler,\n createWorker,\n setLogging,\n ...Tesseract,\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","const createJob = require('./createJob');\nconst { log } = require('./utils/log');\nconst getId = require('./utils/getId');\n\nlet schedulerCounter = 0;\n\nmodule.exports = () => {\n const id = getId('Scheduler', schedulerCounter);\n const workers = {};\n const runningWorkers = {};\n let jobQueue = [];\n\n schedulerCounter += 1;\n\n const getQueueLen = () => jobQueue.length;\n const getNumWorkers = () => Object.keys(workers).length;\n\n const dequeue = () => {\n if (jobQueue.length !== 0) {\n const wIds = Object.keys(workers);\n for (let i = 0; i < wIds.length; i += 1) {\n if (typeof runningWorkers[wIds[i]] === 'undefined') {\n jobQueue[0](workers[wIds[i]]);\n break;\n }\n }\n }\n };\n\n const queue = (action, payload) => (\n new Promise((resolve, reject) => {\n const job = createJob({ action, payload });\n jobQueue.push(async (w) => {\n jobQueue.shift();\n runningWorkers[w.id] = job;\n try {\n resolve(await w[action].apply(this, [...payload, job.id]));\n } catch (err) {\n reject(err);\n } finally {\n delete runningWorkers[w.id];\n dequeue();\n }\n });\n log(`[${id}]: Add ${job.id} to JobQueue`);\n log(`[${id}]: JobQueue length=${jobQueue.length}`);\n dequeue();\n })\n );\n\n const addWorker = (w) => {\n workers[w.id] = w;\n log(`[${id}]: Add ${w.id}`);\n log(`[${id}]: Number of workers=${getNumWorkers()}`);\n dequeue();\n return w.id;\n };\n\n const addJob = async (action, ...payload) => {\n if (getNumWorkers() === 0) {\n throw Error(`[${id}]: You need to have at least one worker before adding jobs`);\n }\n return queue(action, payload);\n };\n\n const terminate = async () => {\n Object.keys(workers).forEach(async (wid) => {\n await workers[wid].terminate();\n });\n jobQueue = [];\n };\n\n return {\n addWorker,\n addJob,\n terminate,\n getQueueLen,\n getNumWorkers,\n };\n};\n","const isBrowser = require('./getEnvironment')('type') === 'browser';\nconst resolveURL = isBrowser ? require('resolve-url') : s => s; // eslint-disable-line\n\nmodule.exports = (options) => {\n const opts = { ...options };\n ['corePath', 'workerPath', 'langPath'].forEach((key) => {\n if (typeof options[key] !== 'undefined') {\n opts[key] = resolveURL(opts[key]);\n }\n });\n return opts;\n};\n","const isElectron = require('is-electron');\n\nmodule.exports = (key) => {\n const env = {};\n\n if (isElectron()) {\n env.type = 'electron';\n } else if (typeof window === 'object') {\n env.type = 'browser';\n } else if (typeof importScripts === 'function') {\n env.type = 'webworker';\n } else if (typeof process === 'object' && typeof require === 'function') {\n env.type = 'node';\n }\n\n if (typeof key === 'undefined') {\n return env;\n }\n\n return env[key];\n};\n","// https://github.com/electron/electron/issues/2288\nfunction isElectron() {\n // Renderer process\n if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') {\n return true;\n }\n\n // Main process\n if (typeof process !== 'undefined' && typeof process.versions === 'object' && !!process.versions.electron) {\n return true;\n }\n\n // Detect the user agent when the `nodeIntegration` option is set to true\n if (typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0) {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isElectron;\n","/**\n * In the recognition result of tesseract, there\n * is a deep JSON object for details, it has around\n *\n * The result of dump.js is a big JSON tree\n * which can be easily serialized (for instance\n * to be sent from a webworker to the main app\n * or through Node's IPC), but we want\n * a (circular) DOM-like interface for walking\n * through the data.\n *\n * @fileoverview DOM-like interface for walking through data\n * @author Kevin Kwok <[email protected]>\n * @author Guillermo Webster <[email protected]>\n * @author Jerome Wu <[email protected]>\n */\n\nmodule.exports = (page) => {\n const blocks = [];\n const paragraphs = [];\n const lines = [];\n const words = [];\n const symbols = [];\n\n page.blocks.forEach((block) => {\n block.paragraphs.forEach((paragraph) => {\n paragraph.lines.forEach((line) => {\n line.words.forEach((word) => {\n word.symbols.forEach((sym) => {\n symbols.push({\n ...sym, page, block, paragraph, line, word,\n });\n });\n words.push({\n ...word, page, block, paragraph, line,\n });\n });\n lines.push({\n ...line, page, block, paragraph,\n });\n });\n paragraphs.push({\n ...paragraph, page, block,\n });\n });\n blocks.push({\n ...block, page,\n });\n });\n\n return {\n ...page, blocks, paragraphs, lines, words, symbols,\n };\n};\n","const OEM = require('./OEM');\n\nmodule.exports = {\n defaultOEM: OEM.DEFAULT,\n};\n","/**\n *\n * Tesseract Worker adapter for browser\n *\n * @fileoverview Tesseract Worker adapter for browser\n * @author Kevin Kwok <[email protected]>\n * @author Guillermo Webster <[email protected]>\n * @author Jerome Wu <[email protected]>\n */\nconst defaultOptions = require('./defaultOptions');\nconst spawnWorker = require('./spawnWorker');\nconst terminateWorker = require('./terminateWorker');\nconst onMessage = require('./onMessage');\nconst send = require('./send');\nconst loadImage = require('./loadImage');\n\nmodule.exports = {\n defaultOptions,\n spawnWorker,\n terminateWorker,\n onMessage,\n send,\n loadImage,\n};\n","const resolveURL = require('resolve-url');\nconst { version, dependencies } = require('../../../package.json');\nconst defaultOptions = require('../../constants/defaultOptions');\n\n/*\n * Default options for browser worker\n */\nmodule.exports = {\n ...defaultOptions,\n workerPath: (typeof process !== 'undefined' && process.env.TESS_ENV === 'development')\n ? resolveURL(`/dist/worker.dev.js?nocache=${Math.random().toString(36).slice(3)}`)\n : `https://unpkg.com/tesseract.js@v${version}/dist/worker.min.js`,\n /*\n * If browser doesn't support WebAssembly,\n * load ASM version instead\n */\n corePath: `https://unpkg.com/tesseract.js-core@v${dependencies['tesseract.js-core'].substring(1)}/tesseract-core.${typeof WebAssembly === 'object' ? 'wasm' : 'asm'}.js`,\n};\n","module.exports = {\n /*\n * default path for downloading *.traineddata\n */\n langPath: 'https://tessdata.projectnaptha.com/4.0.0',\n /*\n * Use BlobURL for worker script by default\n * TODO: remove this option\n *\n */\n workerBlobURL: true,\n logger: () => {},\n};\n","/**\n * spawnWorker\n *\n * @name spawnWorker\n * @function create a new Worker in browser\n * @access public\n */\nmodule.exports = ({ workerPath, workerBlobURL }) => {\n let worker;\n if (Blob && URL && workerBlobURL) {\n const blob = new Blob([`importScripts(\"${workerPath}\");`], {\n type: 'application/javascript',\n });\n worker = new Worker(URL.createObjectURL(blob));\n } else {\n worker = new Worker(workerPath);\n }\n\n return worker;\n};\n","/**\n * terminateWorker\n *\n * @name terminateWorker\n * @function terminate worker\n * @access public\n */\nmodule.exports = (worker) => {\n worker.terminate();\n};\n","module.exports = (worker, handler) => {\n worker.onmessage = ({ data }) => { // eslint-disable-line\n handler(data);\n };\n};\n","/**\n * send\n *\n * @name send\n * @function send packet to worker and create a job\n * @access public\n */\nmodule.exports = async (worker, packet) => {\n worker.postMessage(packet);\n};\n","const resolveURL = require('resolve-url');\n\n/**\n * readFromBlobOrFile\n *\n * @name readFromBlobOrFile\n * @function\n * @access private\n */\nconst readFromBlobOrFile = blob => (\n new Promise((resolve, reject) => {\n const fileReader = new FileReader();\n fileReader.onload = () => {\n resolve(fileReader.result);\n };\n fileReader.onerror = ({ target: { error: { code } } }) => {\n reject(Error(`File could not be read! Code=${code}`));\n };\n fileReader.readAsArrayBuffer(blob);\n })\n);\n\n/**\n * loadImage\n *\n * @name loadImage\n * @function load image from different source\n * @access private\n */\nconst loadImage = async (image) => {\n let data = image;\n if (typeof image === 'undefined') {\n return 'undefined';\n }\n\n if (typeof image === 'string') {\n // Base64 Image\n if (/data:image\\/([a-zA-Z]*);base64,([^\"]*)/.test(image)) {\n data = atob(image.split(',')[1])\n .split('')\n .map(c => c.charCodeAt(0));\n } else {\n const resp = await fetch(resolveURL(image));\n data = await resp.arrayBuffer();\n }\n } else if (image instanceof HTMLElement) {\n if (image.tagName === 'IMG') {\n data = await loadImage(image.src);\n }\n if (image.tagName === 'VIDEO') {\n data = await loadImage(image.poster);\n }\n if (image.tagName === 'CANVAS') {\n await new Promise((resolve) => {\n image.toBlob(async (blob) => {\n data = await readFromBlobOrFile(blob);\n resolve();\n });\n });\n }\n } else if (image instanceof File || image instanceof Blob) {\n data = await readFromBlobOrFile(image);\n }\n\n return new Uint8Array(data);\n};\n\nmodule.exports = loadImage;\n","const createWorker = require('./createWorker');\n\nconst recognize = async (image, langs, options) => {\n const worker = createWorker(options);\n await worker.load();\n await worker.loadLanguage(langs);\n await worker.initialize(langs);\n return worker.recognize(image)\n .finally(async () => {\n await worker.terminate();\n });\n};\n\nconst detect = async (image, options) => {\n const worker = createWorker(options);\n await worker.load();\n await worker.loadLanguage('osd');\n await worker.initialize('osd');\n return worker.detect(image)\n .finally(async () => {\n await worker.terminate();\n });\n};\n\nmodule.exports = {\n recognize,\n detect,\n};\n","/*\n * PSM = Page Segmentation Mode\n */\nmodule.exports = {\n OSD_ONLY: '0',\n AUTO_OSD: '1',\n AUTO_ONLY: '2',\n AUTO: '3',\n SINGLE_COLUMN: '4',\n SINGLE_BLOCK_VERT_TEXT: '5',\n SINGLE_BLOCK: '6',\n SINGLE_LINE: '7',\n SINGLE_WORD: '8',\n CIRCLE_WORD: '9',\n SINGLE_CHAR: '10',\n SPARSE_TEXT: '11',\n SPARSE_TEXT_OSD: '12',\n};\n"],"sourceRoot":""}