Electron 我如何打包一个具有OCR功能的电子应用程序?

Electron 我如何打包一个具有OCR功能的电子应用程序?,electron,tesseract,electron-builder,node-gyp,tesseract.js,Electron,Tesseract,Electron Builder,Node Gyp,Tesseract.js,我构建了一个电子应用程序,遇到了需要添加一些OCR功能的情况。 我发现人们大多使用tesseract.js,但它比本地的tesseract ocr慢得多(factor或10-20)。 这就是为什么tesseract.js不是我的选择。或者,我可以只使用许多tesseract节点中的一个。理论上 问题:这些节点模块需要编译的tesseract ocr二进制文件(通常与apt或brew一起安装)。 我不希望我的用户不得不经历额外的安装麻烦,我更希望我能把所有的东西都放进electron安装程序中 你

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

问题:这些节点模块需要编译的tesseract ocr二进制文件(通常与apt或brew一起安装)。 我不希望我的用户不得不经历额外的安装麻烦,我更希望我能把所有的东西都放进electron安装程序中

你知道我该怎么做吗?
我正在使用electron builder打包我的应用程序。

您正在寻找使用electron应用程序进行生产的本机模块打包。总体思路是使用
electron-rebuild
编译electron的本机库。您可以在文档中或文档中参考本机模块构建。您可以设置
buildDependenciesFromSource:true
,以在使用
electron builder
时编译特定平台构建的本机依赖项

以下是您可以查看的基本配置

“构建”:{
“appId”:“com.trinityinfosystem.electron.exchange.stream”,
“产品名称”:“准确”,
“版权”:“版权所有©2018 Trinity信息系统”,
“buildDependenciesFromSource”:true,
“mac”:{
“类别”:“public.app category.utilities”,
“图标”:“资产/图标.icns”,
“目标”:[
“dmg”
]
},
“赢”:{
“publisherName”:“Trinity信息系统”
“目标”:[
“国家统计局”
]
},
“linux”:{
“目标”:[
“AppImage”,
“tar.gz”
]
},
“dmg”:{
“背景”:“assets/background.png”,
“图标”:“资产/图标.icns”,
“标题”:“准确的安装程序”
},
“国家统计局”:{
“一键点击”:错误,
“perMachine”:错误,
“allowToChangeInstallationDirectory”:true
}
}

您正在寻找本机模块的包装,该包装带有用于生产的electron应用程序。总体思路是使用
electron-rebuild
编译electron的本机库。您可以在文档中或文档中参考本机模块构建。您可以设置
buildDependenciesFromSource:true
,以在使用
electron builder
时编译特定平台构建的本机依赖项

以下是您可以查看的基本配置

“构建”:{
“appId”:“com.trinityinfosystem.electron.exchange.stream”,
“产品名称”:“准确”,
“版权”:“版权所有©2018 Trinity信息系统”,
“buildDependenciesFromSource”:true,
“mac”:{
“类别”:“public.app category.utilities”,
“图标”:“资产/图标.icns”,
“目标”:[
“dmg”
]
},
“赢”:{
“publisherName”:“Trinity信息系统”
“目标”:[
“国家统计局”
]
},
“linux”:{
“目标”:[
“AppImage”,
“tar.gz”
]
},
“dmg”:{
“背景”:“assets/background.png”,
“图标”:“资产/图标.icns”,
“标题”:“准确的安装程序”
},
“国家统计局”:{
“一键点击”:错误,
“perMachine”:错误,
“allowToChangeInstallationDirectory”:true
}
}

您链接的节点模块不是本机节点模块(只有一个除外),而是生成流程的CLI包装,这就是为什么它们要求用户安装工具的原因

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

由于我没有对较新的节点版本的功能进行额外的测试
node tesseract
,因此有一些事情可能无法立即工作。如果它不起作用,你可能需要花一些时间来封装C++的库<代码> ListSeSertAs/COD>。你只需要包装你所需要的函数,而不是全部


完成后,您可以按照@Kiran Maniya所描述的步骤进行操作。您链接的节点模块不是本机节点模块(只有一个除外),而是生成流程的CLI包装,这就是为什么它们需要用户安装工具的原因

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

由于我没有对较新的节点版本的功能进行额外的测试
node tesseract
,因此有一些事情可能无法立即工作。如果它不起作用,你可能需要花一些时间来封装C++的库<代码> ListSeSertAs/COD>。你只需要包装你所需要的函数,而不是全部


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

您最后是如何使用此功能的?我们最近也遇到了类似的问题(我们必须在小范围内进行10个ocr/秒),所以我们选择了“capture2text”cli(不需要最终用户进行任何安装)。但是我们的应用程序的重量从40个月增加到120个月,这是一个很大的问题。因此,我很想知道您最终是如何解决的。

您最终是如何实现此功能的?我们最近也遇到了类似的问题(我们必须在小范围内进行10个ocr/秒),所以我们选择了“capture2text”cli(不需要最终用户进行任何安装)。但是我们的应用程序的重量从40个月增加到120个月,这是一个很大的问题。因此,我很想知道您最终是如何解决的。

谢谢,我仍然认为这无助于将所有依赖项打包到electron installer中。苔丝
node-gyp rebuild --target=YOUR_ELECTRON_VERION --arch=YOUR_ARCH -RELEASE_OR_DEBUG --dist url=https://electronjs.org/headers --directory=./node_modules/node-tesseract`