【问题标题】:How can I package an electron app with OCR features?如何打包具有 OCR 功能的电子应用程序?
【发布时间】:2021-03-28 09:42:00
【问题描述】:

我构建了一个电子应用程序并遇到了需要添加一些 OCR 功能的情况。 我发现人们主要使用 tesseract.js,但它比本机 tesseract-ocr(因子或 10-20)慢得多。 这就是为什么 tesseract.js 不是我的选择。或者,我可以只使用许多 tesseract 节点 modules which are out there 之一。理论上。

问题:这些节点模块需要已编译的 tesseract-ocr 二进制文件(通常使用 apt 或 brew 安装)。 我不希望我的用户必须经历额外的设置麻烦,我希望我可以将所有内容都放入电子安装程序中。

有什么想法可以完成这项工作吗? 我正在使用 electron-builder 来打包我的应用程序。

【问题讨论】:

    标签: electron tesseract electron-builder node-gyp tesseract.js


    【解决方案1】:

    最后,在一位出色的开发伙伴的帮助下,我设法让事情顺利进行。 这是 node-native-ocr,它与电子完美结合: https://www.npmjs.com/package/node-native-ocr

    【讨论】:

      【解决方案2】:

      你最后是怎么做这个功能的?我们最近遇到了类似的问题(我们必须在小区域执行 10 ocr/seconde)所以我们选择了“capture2text”cli(不需要最终用户进行任何安装。)但是我们的应用程序的重量从 40 Mo 跳到120个月,太多了。所以我很想知道你最后是怎么解决的。

      【讨论】:

      • 嗨@Nemzytch,请在下面查看我的答案:我编写了自己的模块...
      【解决方案3】:

      您链接的节点模块不是本机节点模块(一个除外),而只是生成进程的 CLI 包装器,这就是它们需要用户安装工具的原因。

      要解决这个问题,您需要一个本地节点模块,例如 node-tesseract 将是您应该使用的。您可以通过node-gyp 使用electron-builder 或此命令为电子重建它(用您的目标设置替换标记的部分):

      node-gyp rebuild --target=YOUR_ELECTRON_VERION --arch=YOUR_ARCH -RELEASE_OR_DEBUG --dist url=https://electronjs.org/headers --directory=./node_modules/node-tesseract`
      

      由于我没有加倍努力测试node-tesseract 以了解较新节点版本的功能,因此有些事情可能无法立即工作。如果它不起作用,您可能需要花一些时间通过NAPI 为节点包装c++ 库libtesseract。你只需要包装你不需要的所有功能。

      完成后,您可以按照@Kiran Maniya 描述的步骤进行操作

      【讨论】:

      • 感谢您的解释!不确定您提到的 NAPI 方法。这不是别人已经做过的事情了吗?我刚刚找到了“Penteract”,这里提到了:tesseract-ocr.github.io/tessdoc/AddOns.html#tesseract-wrappers
      • 我尝试使用 penteract,但现在遇到以下错误:github.com/kaelzhang/penteract-ocr/issues/11
      • Penteract 看起来是正确的选择,但对于这个问题,我不确定为什么会发生这种情况,如果发布版本存在,它应该能够很好地加载它。在将 NODE_ENV 设置为开发或发布时,我有时会遇到类似的问题。圣诞节后我可以再看一眼;)
      【解决方案4】:

      您正在寻求将本机模块打包与用于生产的电子应用程序打包在一起。总体思路是使用electron-rebuild 为电子编译本机库。您可以参考 electron docselectron-builder 文档中的原生模块构建。您可以设置buildDependenciesFromSource: true 以在使用electron-builder 时为特定平台构建编译本机依赖项。

      这里是你可以看看的基本配置,

      "build": {
          "appId": "com.trinityinfosystem.electron.exchange.stream",
          "productName": "Accurate",
          "copyright": "Copyright © 2018 Trinity InfoSystem",
          "buildDependenciesFromSource": true,
          "mac": {
            "category": "public.app-category.utilities",
            "icon": "assets/icon.icns",
            "target": [
              "dmg"
            ]
          },
          "win": {
            "publisherName": "Trinity InfoSystem"
            "target": [
              "nsis"
            ]
          },
          "linux": {
            "target": [
              "AppImage",
              "tar.gz"
            ]
          },
          "dmg": {
            "background": "assets/background.png",
            "icon": "assets/icon.icns",
            "title": "Accurate Installer"
          },
          "nsis": {
            "oneClick": false,
            "perMachine": false,
            "allowToChangeInstallationDirectory": true
          }
        }
      

      【讨论】:

      • 谢谢,我仍然认为这不会有助于将所有依赖项打包到电子安装程序中。 Tesseract 使用了多种附加工具,这些工具也都需要包含在内。
      • 您必须使用节点的 tesseract 包装器。
      • 你的意思是上面提到的库之一?还是特定的?
      猜你喜欢
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      • 1970-01-01
      • 2017-03-02
      • 2019-07-14
      • 2016-04-09
      相关资源
      最近更新 更多