常见问题
Q: 为什么我的模型在 ONNX Runtime GPU 版上比在 CPU 上还要慢?¶
A: 因为 OCR 任务中输入图像 Shape 是动态的。每次 GPU 上都需要重新清空上一次不同 Shape 的缓存结果。如果输入图像 Shape 不变的情况下,ONNX Runtime GPU 版一般都要比 CPU 快的。该问题已经提了相关 issue [#13198](https://github.com/RapidAI/RapidOCR/pull/13198)。
推荐 CPU 端推理用 rapidocr_onnxruntime 或者 rapidocr_openvino,GPU 端用 rapidocr_paddle。关于 rapidocr_onnxruntime 和 rapidocr_paddle 两者之间推理,可参见:docs
Q: 请问这个能在 32 位 C#中用嘛?¶
A: C#可以 32 位,要用 32 位的 dll,但 nuget 上的 onnxruntime 不支持 win7。
Q: Windows 系统下,装完环境之后,运行示例程序之后,报错 OSError: [WinError 126] 找不到指定的模組¶
A: 原因是 Shapely 库没有正确安装,如果是在 Windows,可以在 Shapely whl 下载对应的 whl 包,离线安装即可;另外一种解决办法是用 conda 安装也可。
Q: Linux 部署 python 的程序时,import cv2 时会报 ImportError: ligGL.so.1: cannot open shared object file: No such file or directory?¶
A: 解决方法 有两个 (来自群友 ddeef):
- 安装
opencv-python-headless取代opencv-python; - 运行
sudo apt-get install -y libgl1-mesa-dev
Q: 询问下,我编译出来的进程在 win7 下面通过 cmd 调用,发生了崩溃的情况?¶
A: 不支持 win7 (by @如果我有時光機)
Q: 能不能搞个 openmmlab 类似的那个提取信息的?¶
A: 这个目前正在调研测试当中,如果 mmocr 中关键信息提取效果还可以,后期会考虑整合进来。
Q: RapidOCR 和 PaddleOCR 是什么关系呢?¶
A: RapidOCR 是将 PaddleOCR 的预训练模型转为 onnx 模型,不依赖 paddle 框架,方便各个平台部署。
Q: onnxruntime arm32 有人编译过吗? 我编译成功了,但是使用的时候 libonnxruntime.so
error: file not recognized: File format not recognized 应该是版本不匹配¶
A: 没遇到过。我是直接在当前平台编译的,我们用的是 arm。估计是平台不兼容,建议在本身平台上编译。没遇到过问题。通常出在交叉编译方式下。
Q: 请问一下 c++ demo 必须要 vs2017 及以上版本吗?¶
A: 最好用 vs2019
Q: 可以达到百度 EasyEdge Free App 的效果吗?¶
A: edge 的模型应该没有开源。百度开源的模型里 server det 的识别效果可以达到,但是模型比较大。
Q: 我用 c++ 推理 onnx 貌似是 cpu 推理的,gpu 没有反应?¶
A: 如果想用 GPU 的话,需要安装 onnxruntime-gpu 版,自己在 onnxruntime 的代码中添加 EP (execution provider)。我们的定位是通用,只用 cpu 推理。
Q: 您好,我想部署下咱们的 ocr 识别,有提供 linux 版本的 ocr 部署包吗?¶
A: linux 版本的自己编译即可, 可以参考我们的 action 中的脚本;其实编译非常容易,安装个 opencv 后,在 cmakelists.txt 中修改一下 onnxruntime 的路径即可,具体参考这个: https://github.com/RapidAI/RapidOCR/blob/v0.1.5/.github/workflows/make-linux.yml
Q: onnxruntime 编译好的 C++ 库,哪里可以下载到?¶
A: 从这里:https://github.com/RapidAI/OnnxruntimeBuilder/releases/tag/1.7.0
Q: 目前简单测试环境是 Win10 + Cygwin + gcc + 纯 C 编程,可以在 C 程序中直接接入简单 OCR 功能吗?¶
A: 直接使用 API 就行,API 就是由 c 导出的
Q: 模型下载地址¶
A: 百度网盘 | Google Drive
Q: onnxruntime 1.7 下出错:onnxruntime::SequentialExecutor::Execute] Non-zero status code returned while running ScatterND node. Name:'ScatterND@1' Status Message: updates¶
A: 由于模型只支持 onnxruntime=1.5.0 导致,请更新模型,下载地址见 Q3
Q: 边缘总有一行文字无法识别,怎么办?¶
A: 在 padding 参数中添加一个值 ,默认是 0,你可以添加 5 或 10, 甚至更大,直到能识别为止。注意不要添加过大,会浪费内存。