|
|
|
const isURL = require('is-url');
|
|
|
|
|
|
|
|
const defaultOptions = {
|
|
|
|
// workerPath: 'https://cdn.jsdelivr.net/gh/naptha/tesseract.js@0.2.0/dist/worker.js',
|
|
|
|
corePath: `https://cdn.jsdelivr.net/gh/naptha/tesseract.js-core@v2.0.0-beta.5/tesseract-core${typeof WebAssembly === 'object' ? '' : '.asm'}.js`,
|
|
|
|
langPath: 'https://cdn.jsdelivr.net/gh/naptha/tessdata@gh-pages/4.0.0/',
|
|
|
|
};
|
|
|
|
|
|
|
|
if (process.env.NODE_ENV === 'development') {
|
|
|
|
console.debug('Using Development Configuration');
|
|
|
|
// eslint-disable-next-line
|
|
|
|
const { protocol, host } = location;
|
|
|
|
defaultOptions.workerPath = `${protocol}//${host}/dist/worker.dev.js?nocache=${Math.random().toString(36).slice(3)}`;
|
|
|
|
} else {
|
|
|
|
const { version } = require('../../package.json');
|
|
|
|
defaultOptions.workerPath = `https://cdn.jsdelivr.net/gh/naptha/tesseract.js@${version}/dist/worker.js`;
|
|
|
|
}
|
|
|
|
|
|
|
|
const loadImage = (imageURI) => {
|
|
|
|
if (isURL(imageURI)) {
|
|
|
|
return fetch(imageURI)
|
|
|
|
.then(resp => resp.arrayBuffer());
|
|
|
|
}
|
|
|
|
return new Promise();
|
|
|
|
};
|
|
|
|
|
|
|
|
exports.defaultOptions = defaultOptions;
|
|
|
|
|
|
|
|
exports.spawnWorker = (instance, workerOptions) => {
|
|
|
|
let worker;
|
|
|
|
if (window.Blob && window.URL) {
|
|
|
|
const blob = new Blob([`importScripts("${workerOptions.workerPath}");`]);
|
|
|
|
worker = new Worker(window.URL.createObjectURL(blob));
|
|
|
|
} else {
|
|
|
|
worker = new Worker(workerOptions.workerPath);
|
|
|
|
}
|
|
|
|
|
|
|
|
worker.onmessage = ({ data }) => {
|
|
|
|
instance._recv(data);
|
|
|
|
};
|
|
|
|
|
|
|
|
return worker;
|
|
|
|
};
|
|
|
|
|
|
|
|
exports.terminateWorker = (instance) => {
|
|
|
|
instance.worker.terminate();
|
|
|
|
};
|
|
|
|
|
|
|
|
exports.sendPacket = (instance, packet) => {
|
|
|
|
loadImage(packet.payload.image)
|
|
|
|
.then(buf => new Uint8Array(buf))
|
|
|
|
.then((img) => {
|
|
|
|
instance.worker.postMessage({
|
|
|
|
...packet,
|
|
|
|
payload: {
|
|
|
|
...packet.payload,
|
|
|
|
image: Array.from(img),
|
|
|
|
},
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|