PP-OCR Linux 部署不再折腾:OpenCV、ONNX Runtime、OpenVINO 三版本开箱即用

发布时间:2026/7/18 20:43:58
PP-OCR Linux 部署不再折腾:OpenCV、ONNX Runtime、OpenVINO 三版本开箱即用 目录一套接口三个 Linux 推理版本不只是完整 OCR也支持“只识别”自带浏览器测试页面解压后即可启动支持 API Key但不把密钥打印到日志可以安装为 systemd 服务ONNX Runtime 的 CPU 与 CUDAOpenVINO 版不需要目标机器安装 SDK不同开发语言如何接入v1.3.0 做了哪些验证下载与交流做 OCR 项目时真正让人头疼的往往不只是“能不能识别”而是后面的部署问题C、C#、Python、Java 等不同技术栈怎么统一调用模型、推理框架和动态库怎么放才能不互相冲突客户机器没有开发环境能不能解压后直接运行已经裁剪好的文字区域能不能跳过检测直接识别能不能提供一个网页让客户先直观看到识别效果和耗时Linux 服务如何开机启动又如何做最基本的接口认证围绕这些实际问题我们完成了lw.PPOCR.Inference v1.3.0。这次正式发布 Linux OpenCV DNN、ONNX Runtime 和 OpenVINO 三个独立版本。每个版本都是完整部署包不要求客户先安装 Python也不需要从仓库重新编译。下载、校验、解压就可以启动 HTTP OCR 服务。一套接口三个 Linux 推理版本v1.3.0 同一个 Release 提供三个包版本设备适合场景OpenCV DNNCPU部署简单、通用 CPU 基线、方便快速验证ONNX RuntimeCPU / NVIDIA CUDA默认 CPU有 NVIDIA 环境时可切换 CUDAOpenVINOCPU注重 x64 CPU 推理效率的服务端场景三个版本使用相同的 C ABI 和 HTTP API。上层程序切换推理框架时不需要重写 OCR 调用逻辑。推理框架的动态库被放在各自独立目录中尽量避免 OpenCV、ONNX Runtime、OpenVINO 等组件在程序目录里相互覆盖或版本冲突。不只是完整 OCR也支持“只识别”常规 OCR 流程包含文字检测 → 方向分类 → 文字识别HTTP 接口为POST /api/ocr但在很多真实项目中客户已经使用摄像机 SDK、图像算法或其他检测模型裁剪好了文字区域。这时再运行一次文字检测既浪费时间也可能影响原有业务流程。因此项目同时提供POST /api/recognize它可以直接识别已经裁剪好的文字图片并支持一次提交多张图片。返回结果使用source_index对应原始输入顺序方便批量业务处理。自带浏览器测试页面HTTP 服务启动后浏览器访问http://127.0.0.1:8787/即可打开测试页面。页面支持上传图片、调用 OCR并把识别区域绘制回原图。同时显示图片解码、文字检测、方向分类、文字识别和服务端总耗时方便开发者快速确认模型、参数与运行环境是否正常。解压后即可启动以任意一个 Linux v1.3.0 包为例将.tar.gz和.sha256上传到 Ubuntu 后执行sha256sum -c 文件名.tar.gz.sha256 tar -xzf 文件名.tar.gz cd 解压后的目录 sudo ./install-deps-ubuntu.sh ./verify-linux-package.sh ./run-http-service.shverify-linux-package.sh不只是检查文件是否存在它还会验证包内 SHA-256、ELF 动态库依赖、健康接口并使用真实示例图片执行一次 OCR。启动后访问http://127.0.0.1:8787/需要注意请使用run-http-service.sh启动因为脚本会自动设置当前推理后端所需的私有动态库目录。如果在 Windows 上解压目录后再上传到 Linux脚本执行权限可能丢失。更推荐直接把.tar.gz上传到 Linux 后解压必要时也可以运行chmod x *.sh支持 API Key但不把密钥打印到日志本机测试时服务默认只监听127.0.0.1:8787如果需要让局域网中的其他电脑调用可以把listen_host修改为0.0.0.0并设置一个足够长的随机 API Key。客户端通过请求头传递X-API-Key: 你的密钥浏览器测试页面也提供 API Key 输入框。服务启动日志只显示认证是否启用不输出密钥明文。API Key 是轻量级访问控制不应替代 HTTPS、反向代理和防火墙。服务不建议在没有认证和网络限制的情况下直接暴露到公网。可以安装为 systemd 服务完成测试并修改好配置后可以安装为 Linux 系统服务sudo ./install-systemd.sh systemctl status lw-ppocr-http.service journalctl -u lw-ppocr-http.service -f服务会安装到/opt/lw-ppocr支持开机启动和异常退出后自动重启。ONNX Runtime 的 CPU 与 CUDAONNX Runtime 正式包默认携带官方 1.26.0 CPU Runtime因此没有 NVIDIA 显卡也可以直接使用。配置支持{device:cpu}{device:cuda}{device:auto}如果需要 CUDA必须准备兼容的 NVIDIA 驱动、CUDA、cuDNN并使用相同 ONNX Runtime 版本和相同 CUDA 系列官方 GPU 包中的完整libonnxruntime*.so*集合。这里特别提醒不要只替换一个libonnxruntime.so也不要混用 CUDA 12 和 CUDA 13 的文件。本次 v1.3.0 随附附件和 Ubuntu 虚拟机验证以 CPU Runtime 为基线。OpenVINO 版不需要目标机器安装 SDKOpenVINO 包固定使用官方 OpenVINO 2025.2.0 Ubuntu 20.04 Runtime已经携带 CPU plugin、ONNX frontend、oneTBB、hwloc 和 OCR 所需的 OpenCV 共享库。目标机器不需要另外安装 OpenVINO SDK。当前 v1.3.0 只开放 CPU。OpenVINO GPU 会在完成独立的正确性、驱动兼容和压力测试后再考虑加入不在本次稳定支持范围内。不同开发语言如何接入项目底层提供稳定的 C ABI不向调用方暴露 STL、cv::Mat、C 类或异常。因此除了现有的 C#、C 和 Python 示例任何能够调用 C 动态库的语言都可以进行封装例如C / CC#PythonJavaGoRustDelphi如果业务系统不方便直接加载动态库也可以统一通过 HTTP API 调用。v1.3.0 做了哪些验证三个 Linux 包都已经完成GitHub Actions 自动构建Ubuntu 20.04 虚拟机验证ABI 兼容性测试真实模型完整 OCR单张和批量只识别HTTP 服务与测试网页打包后的依赖和校验验证。项目的LW_PPOCR_API_VERSION仍然保持为1v1.0.0 的 ABI 冻结承诺继续有效。下载与交流项目与 Release 地址https://github.com/lxw112190/lw.PPOCR.Inference https://github.com/lxw112190/lw.PPOCR.Inference/releases建议根据目标机器选择对应的完整包。三个后端的公共接口相同但私有动态库不同不建议把不同包中的.so混合复制到同一目录。如果这个项目对你的 OCR 部署有帮助欢迎测试、反馈问题也欢迎分享给有相同需求的朋友。