【发布时间】:2020-01-07 03:08:17
【问题描述】:
最近我一直在开发一个使用 vue 作为前端的 chrome 扩展。使扩展程序在浏览器上运行的 vue 样板使用 webpack 并通过以下方式下载:
vue init kocal/vue-web-extension name
并给出这个项目结构:
.
├── dist
│ └── <the built extension>
├── node_modules
│ └── <one or two files and folders>
├── package.json
├── package-lock.json
├── scripts
│ ├── build-zip.js
│ └── remove-evals.js
├── src
│ ├── background.js
│ ├── icons
│ │ ├── icon_128.png
│ │ ├── icon_48.png
│ │ └── icon.xcf
│ ├── manifest.json
│ └── popup
│ ├── App.vue
│ ├── popup.html
│ └── popup.js
└── webpack.config.js
此设置的问题在于,现在我正在尝试使用 tesseract.js 实现 OCR,并且因为 chrome 扩展不允许您使用 CDN 或外部库,所以我需要在本地下载 tesseract.js 文件。我查看了这个关于本地下载的link,还参考了 tesseract.js 的关于使用带有 chrome 扩展名的 tesseract.js 的示例(https://github.com/jeromewu/tesseract.js-chrome-extension),但是当我加载库时,我一直遇到问题
tesseract.min.js:688 Uncaught Error: ReferenceError: window is not defined
at eval (tesseract.min.js:688)
at Worker.e.onmessage (tesseract.min.js:1579)
我现在在 vue 文件中的当前 tesseract 代码是 (App.vue),问题似乎发生在 await worker.load():
const { createWorker } = Tesseract;
const worker = createWorker({
workerPath: chrome.runtime.getURL("js/worker.min.js"),
langPath: chrome.runtime.getURL("traineddata"),
corePath: chrome.runtime.getURL("js/tesseract-core.wasm.js")
});
async function extract() {
console.log("test1");
await worker.load();
console.log("test2");
await worker.loadLanguage("eng");
await worker.initialize("eng");
const {
data: { text }
} = await worker.recognize("https://tesseract.projectnaptha.com/img/eng_bw.png");
console.log(text);
await worker.terminate();
}
extract();
Html 页面包含 (tab.html):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="stylesheet" href="tab.css" />
<script src="../js/tesseract.min.js"></script>
</head>
<body>
<div id="app"></div>
<script src="tab.js"></script>
</body>
</html>
和js文件(tab.js):
import Vue from "vue";
import App from "./App";
/* eslint-disable no-new */
new Vue({
el: "#app",
render: h => h(App)
});
我当前的文件结构如下所示: File structure
我已经被这个问题困扰了很长一段时间,所以任何帮助都将不胜感激!
【问题讨论】:
标签: vue.js google-chrome-extension tesseract.js