源码编译PaddleOCR,4条路径搞定3个平台

发布时间:2026/8/24 23:56:28
源码编译PaddleOCR,4条路径搞定3个平台 源码编译PaddleOCR4条路径搞定3个平台【免费下载链接】PaddleOCR飞桨多语言OCR工具包实用超轻量OCR系统支持80种语言识别提供数据标注与合成工具支持服务器、移动端、嵌入式及IoT设备端的训练与部署 Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80 languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)项目地址: https://gitcode.com/paddlepaddle/PaddleOCR/usr/bin/ld: CMakeFiles/ppocr.dir/src/ocr/system.cc.o: in function SystemOCR::init(): undefined reference to paddle::inference::Config::enable_gpu_memory_optimize collect2: error: ld returned 1 exit status一句话说明PaddleOCR C 编译链接失败最经典的现场——链接器找不到 PaddlePaddle 推理库的符号。你在做 PaddleOCR 编译时多半踩过它x86 服务器上一切顺利换到 ARM 目标机交叉编译undefined reference 立刻冒出来。多数情况下锅不在代码而在依赖没指对地方。PaddleOCR 源码构建的完整流程我们按你实际动手的先后顺序走一遍先把工具链备齐再分别走 Python 包和 C 推理库两条并行编译路径然后是 ARM、Windows 上的 PaddleOCR 交叉编译坑最后是性能调优和 Docker、CI 自动化。走完这套Linux、Windows、ARM 三个平台你都能独立交付。6条命令把依赖装齐并验证到位编译这件事第一步永远是备料。我们全文用做菜来打比方依赖是食材CMakeLists 是菜谱make 是开火链接是装盘。食材缺一味菜谱再全也救不了你。一键装齐3个系统包与2个依赖路径Ubuntu 20.04 上最小工具链就是下面这组sudo apt-get update sudo apt-get install -y build-essential cmake git \ libopencv-dev protobuf-compiler # 推理库解压后把两个变量指对位置 export PADDLE_LIB/opt/paddle_inference/paddle export OPENCV_DIR/usr/local/opencv4一句话说明一条命令装好 GCC、CMake、Git、OpenCV 和 Protobuf 开发包再把 PADDLE_LIB 和 OPENCV_DIR 两个路径指到位。版本底线记住几个数CMake 3.14 以上deploy/cpp_infer/CMakeLists.txt开头就声明了这个下限、GCC 7.5 以上、Python 3.8 以上。C 代码是 C11 标准编译器不用追新OpenCV 建议上 4.x仓库自带的官方构建脚本用的是 4.7.0。PADDLE_LIB 指向的目录里必须有paddle/include、paddle/lib和third_party三块少一块后面都要出幺蛾子。OPENCV_DIR 在 Linux 上要指向安装根目录——菜谱里找的是${OPENCV_DIR}/lib64/cmake/opencv4。直指 lib64 的话configure 阶段就会报找不到 OpenCV。用4行脚本验证推理库备料完别急着开火先确认食材是真货for f in ${PADDLE_LIB}/paddle/lib/libpaddle_inference.so \ ${OPENCV_DIR}/lib/libopencv_core.so; do [ -f $f ] echo OK $f || { echo MISSING $f; exit 1; } done一句话说明检查两个最关键的 .so 是否存在缺一个就地报错退出省掉后面 20 分钟的 make。脚本通过备料阶段结束。后面 C 编译卡住时八成要回到这一步复查——头文件找不到、符号未定义十有八九是路径问题。两条并行编译路径一个产wheel一个产可执行文件依赖就位后两条路并行开工Python 包装出 pip 可装的 paddleocrC 路径产出一个叫 ppocr 的独立可执行文件。Python路径pip -e装可编辑wheel出固定版Python 包是标准 setuptools 构建源码结构一眼看清paddleocr/是推理入口ppocr/管训练ppstructure/管文档结构分析。git clone https://gitcode.com/paddlepaddle/PaddleOCR cd PaddleOCR python -m pip install -e .一句话说明克隆仓库后以可编辑模式安装改了源码不用重装就生效适合开发调试。想要固定版而不是开发环境换成 wheel 构建python -m pip wheel . -w dist/ python -m pip install dist/paddleocr-*.whl python -m pip install -e .[doc-parser] # 按需加功能模块 python -m pip install -e .[all] # 或者全都要一句话说明从源码打 wheel 再安装相当于把做好的菜密封打包方括号 extras 决定装哪些菜。两个细节。其一pyproject.toml要求 setuptools 72.1.0、wheel、setuptools_scm版本号由 setuptools_scm 从 git tag 推导——没有 tag 的分支打出来的 wheel 版本号会很奇怪发版记得 checkout 带 tag 的提交。其二功能模块按需安装doc-parser、ie、trans、all四组 extras装什么用什么别把整个厨房端上桌。要训练的话还要装requirements.txt里那批shapely、pyclipper、lmdb、opencv-python、rapidfuzz 等pip install -r requirements.txt一条搞定。C路径CMake配置一次make -j产出ppocrC 路径的入口是deploy/cpp_infer/目录菜谱就是它下面的 CMakeLists.txt。PaddleOCR CMake 配置说白了就是传两个路径、拨四个开关cd deploy/cpp_infer mkdir -p build cd build cmake .. \ -DPADDLE_LIB${PADDLE_LIB} \ -DOPENCV_DIR${OPENCV_DIR} \ -DWITH_GPUOFF -DWITH_MKLON \ -DCMAKE_BUILD_TYPERelease make -j$(nproc) ./ppocr --help一句话说明把两个依赖路径传给 CMake选 CPU 版加 MKL然后并行编译产物是 build 目录下的 ppocr。PADDLE_LIB 或 OPENCV_DIR 少传一个CMake 直接 FATAL_ERROR 停下。这是好事菜谱明确告诉你缺什么而不是编译到一半才炸。还有一个容易忽略的点configure 阶段会自动从官方镜像下载 abseil-cpp、clipper、nlohmann 三个第三方包并解压到 third_party 下。所以跑 cmake 的机器必须能上网内网环境要提前把这三个 tgz 手动放进对应目录。4个CMake开关分别怎么拨菜谱前十几行就是全部开关WITH_MKL、WITH_GPU、WITH_STATIC_LIB、USE_FREETYPE没有第 5 个。WITH_MKL默认 ON。走 MKL拨 OFF 后菜谱自动改链 OpenBLAS 静态库。ARM 上通常拨 OFF。WITH_GPU默认 OFF。拨 ON 需要额外给 CUDA_LIBLinux 上还要 CUDNN_LIB然后链接 cudart 和 cudnn。WITH_STATIC_LIB默认 ON。静态链推理库产物胖但部署省心拨 OFF 用动态库产物小、运行时要带齐 .so。USE_FREETYPE默认 OFF。拨 ON 要求你的 OpenCV 带 freetype 模块否则直接 FATAL_ERROR 拦下你。Windows 分支还藏了个自动动作构建后把 mklml.dll、libiomp5md.dll、mkldnn.dll 拷到 build 目录。部署时连它们一起打包带走别漏。跨ARM和Windows平台你会踩的3个坑同一份菜谱换个灶台味道就不一样。非 x86-Linux 平台的坑基本集中在工具链指哪和运行库带哪两件事上。ARM交叉编译的sysroot怎么指PaddleOCR ARM 编译没有现成的工具链文件得自己写。关键是让 CMake 知道编译器给 ARM 干活头文件和库都在 sysroot 里找set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR arm) set(CMAKE_SYSROOT /opt/aarch64/sysroot) set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc) set(CMAKE【免费下载链接】PaddleOCR飞桨多语言OCR工具包实用超轻量OCR系统支持80种语言识别提供数据标注与合成工具支持服务器、移动端、嵌入式及IoT设备端的训练与部署 Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80 languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)项目地址: https://gitcode.com/paddlepaddle/PaddleOCR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考