前言
本文记录了在 Windows 环境下编译 PaddleOCR 源码并封装为 C++ 动态库的过程。
准备工作
在对 paddleocr 进行编译前,需要提前准备需要的文件:
- CMake 4.2.1 版本较新即可
- OpenCv 库,官网下载最新的 Windows 安装包即可
- paddle_inference 库,同样的在百度飞桨官网上可以找到,也是 windows 预编译版,下载下来即可使用。地址 https://www.paddleocr.ai/latest/version3.x/pipeline_usage/OCR.html#1-ocr
- VS2019 及以上。
检测模型和识别模型,在 paddleocr GitHub 上可以下载到,分为服务端模型和移动端模型,如下:
开始编译
首先,在 PaddleOcr 源码 PaddleOCR-3.3.0\deploy\cpp_infer 目录下创建一个 build 目录,打开 Cmake 的 gui,将此目录下的 cmakelist 拖入其中。将编译完保存的目录改成 PaddleOCR-3.3.0\deploy\cpp_infer\build。然后点击 Configure,等执行失败后,设置 openCv 库,以及 paddle_inference 库的目录。
这里的设置千万不要错,否则后面生成的 vs 工程很多东西需要手动去改,烦的很。 设置完成后继续点击 Configure,中途可能会出现提示某些 CMake 版本较低,无需多言,根据提示手动找到对应文件的 CMakeList 将 CMake 版本标识改成 4.2.1,然后继续编译即可。 这里大致上就会显示成功,然后点击 Generate 生成对应的 VS 工程,生成的 VS 工程位于 build 目录下 ppocr.sln。打开此项目,将编译版本改为 Release X64,点击编译。中途会提示缺少某个头文件。下载 dirent.h,并拷贝到 Visual Studio 的 include 文件夹下,如 C:\Program Files (x86)\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include。(此头文件可以在 此地址 里面找到)。 继续点击编译,不出意外,此时会显示编译成功。 在 build\release 目录下,会生成一个 ppocr.exe 的 demo 程序。在命令行中可以验证是否编译成功。
PS F:\project\paddleOcr\deploy\cpp_infer\build\Release> ./ppocr ocr --input ./test10.jpg --save_path F:/project/paddleOcr/output --text_detection_model_dir F:/project/paddleOcr/models/PP-OCRv5_server_det --text_recognition_model_dir \F:/project/paddleOcr/models\PP-OCRv5_server_rec --use_doc_orientation_classify False --use_doc_unwarping False --use_textline_orientation False --device cpu
相关参数很简单。执行,然后就会显示识别的内容。在此过程中如果提示缺少某某动态库,需要手动将其放置到 ppocr.exe 目录下。
封装自己的动态库
经过上面的操作,已经能够在 c++ 中进行推理识别了。但是此时是一个 ppocr.exe 的程序,用起来肯定是不方便的。我们需要将其封装成动态库,更方便我们使用。在 ppocr 项目下有个 cli.cc 文件。此程序的 main 函数就在这里面。 此时在 ppocr 项目中新建一个 myocr.h 和 myocr.cpp 文件。在里面自己封装识别的逻辑,代码如下:
#pragma once
#include<string>
#include<opencv2/opencv.hpp>
#define OCR_API __declspec(dllexport)
ocr {
Result { cv::Mat img; std::string text; score; cv::Rect rect;};
;
;
;
}

