Приложение Electron с Vue и vue -cli-plugin-electronic-builder не может работать с Tesseract. js - PullRequest
0 голосов
/ 06 февраля 2020

Я создал проект с vue -service-cli. После попытки использовать tesseract OCR, но я не могу загрузить данные lang.traineddata локально и удаленно. Я пробовал примеры (они работают) из tesseract. js repo и многими другими способами, но безрезультатно. Когда я пытаюсь загрузить их, я вижу стандартную ошибку:

    Error opening data file ./eng.traineddata
    Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory.
    Failed loading language 'eng'
    Tesseract couldn't load any languages!
    AdaptedTemplates != nullptr:Error:Assert failed:in file /src/src/classify/adaptmatch.cpp, line 196
    trap!

Я подозреваю, что это проблема в формате архива .asar (из vue -cli-plugin-electronic-builder ), который находится в /node_modules/electron/dist/resources/electron.asar. Я могу загрузить файлы. Некоторые конфигурации не могут работать вместе.

Мой код

    const data = await Tesseract.recognize(
    "https://tesseract.projectnaptha.com/img/eng_bw.png",
    "eng",
    {
      logger: console.log,
      corePath: window.location.origin + "/tesseract/tesseract-core.wasm.js",
      workerPath: window.location.origin + "/tesseract/worker.min.js",
      langPath: window.location.origin + "/tesseract/tessdata"
      //or
      langPath: path.join(__dirname, "tessdata")
    }

Мои зависимости

"dependencies": {
    "core-js": "^3.4.4",
    "electron": "5.0.0",
    "semantic-ui-css": "^2.4.1",
    "tesseract.js": "2.0.2",
    "vue": "^2.6.10",
    "vue-class-component": "^7.0.2",
    "vue-property-decorator": "^8.3.0",
    "vue-router": "^3.1.3",
    "vuex": "^3.1.2"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "^4.1.0",
    "@vue/cli-plugin-eslint": "^4.1.0",
    "@vue/cli-plugin-router": "^4.1.0",
    "@vue/cli-plugin-typescript": "^4.1.0",
    "@vue/cli-plugin-vuex": "^4.1.0",
    "@vue/cli-service": "^4.1.0",
    "@vue/eslint-config-prettier": "^5.0.0",
    "@vue/eslint-config-typescript": "^4.0.0",
    "eslint": "^5.16.0",
    "eslint-plugin-prettier": "^3.1.1",
    "eslint-plugin-vue": "^5.0.0",
    "node-sass": "^4.12.0",
    "prettier": "^1.19.1",
    "pug": "^2.0.4",
    "pug-plain-loader": "^1.0.0",
    "sass-loader": "^8.0.0",
    "typescript": "~3.5.3",
    "vue-cli-plugin-electron-builder": "^1.4.4",
    "vue-template-compiler": "^2.6.10"
  }

РЕДАКТИРОВАТЬ: Я заметил, что проект https://github.com/auth0-blog/electron-vue отлично работает с Tesseract. js. В этом проекте используется Vue, но без vue -vli-service, что означает, что у него нет vue -cli-plugin-electronic-builder, что подтверждает вышеупомянутый тезис. Я все еще ищу решение с использованием vue -cli

1 Ответ

0 голосов
/ 09 февраля 2020

Я нашел решение благодаря владельцу модуля.
GitHub выпуск

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...