C++ 编译 PaddleOCR(CPU版)
下载文件
- PaddleOCR 项目文件 需要登录!
- paddle推理预测库 选择 cpu_avx_mkl 版
- opencv 3.4.5 开始下载后,复制下载链接用迅雷下载,会快很多!
- 模型文件:一般自己不再训练模型的话,就选择
inference
模型。 链接见下方
模型名称 | 模型简介 | 检测模型地址 | 识别模型地址 | 支持空格的识别模型地址 |
---|---|---|---|---|
chinese_db_crnn_mobile | 超轻量级中文OCR模型 | inference模型 / 预训练模型 | inference模型 / 预训练模型 | inference模型 / 预训练模型 |
chinese_db_crnn_server | 通用中文OCR模型 | inference模型 / 预训练模型 | inference模型 / 预训练模型 | inference模型 / 预训练模型 |
这里,我只下载了轻量级的模型,现在我们有这些文件:
解压后(opencv.exe双击后,也是解压)目录如下:
添加opencv
环境变量:
使用Visual Studio 2019直接编译CMake
- 打开Visual Studio 2019 Community,点击
继续但无需代码
- 点击:
文件
->打开
->CMake
选择项目代码所在路径,并打开CMakeList.txt
:
- 点击:
项目
->CMake设置
- 稍等片刻,在下方的CMake变量和缓存中指定
OpenCV_DIR
、PADDLE_LIB
的路径
OPENCV_DIR: E:/OCR/opencv/build/x64/vc15/lib
OpenCV_DIR: E:/OCR/opencv/build/x64/vc15/lib
PADDLE_LIB: E:/OCR/fluid_inference_cpu_avx_mkl
设置完成后, 点击上图中保存并生成CMake缓存以加载变量
,前面都没问题的话,应该会得到以下输出:
点击生成
->全部生成
不出意外,还会遇到错误,如下:
双击错误,定位到main.cpp
文件中,这个错误产生的原因是cout
输出了中文,所以,我们可以用英文来替换这几个汉字!
还有一种奇怪的解决办事,就是要在中文字符串的最后边加上一个空格即可 😃
std::cout << "花费了 "
<< double(duration.count()) *
std::chrono::microseconds::period::num /
std::chrono::microseconds::period::den
<< "秒 " << std::endl;
重新生成,就没问题了!!!
在运行程序之前,还要先修改一下配置文件,在E:\OCR\PaddleOCR\deploy\cpp_infer\tools
中,
生成的可执行文件在E:\OCR\PaddleOCR\deploy\cpp_infer\out\build\x64-Debug
中,在文件管理器中打开相应的文件夹,在地址栏输入cmd
,即可定位到当前文件夹。
先输入CHCP 65001
回车,不然程序运行输出会乱码!
E:\OCR\PaddleOCR\deploy\cpp_infer\out\build\x64-Debug>ocr_system.exe E:\OCR\PaddleOCR\deploy\cpp_infer\tools\config.txt E:\OCR\PaddleOCR\doc\imgs\10.jpg
第一个参数是 配置文件的路径,第二个参数是检测的图片路径
运行还会遇到一个错误 T_T
解决办法就是将 E:\OCR\opencv\build\x64\vc15\bin
目录下的 opencv_world346.dll
、opencv_world346d.dll
复制到 C:\Windows\System32
中
再运行即可!结果如下:
对比可以看到,轻量级的检测模型还是有一定的错误,可以下载更大的模型自行测试!!完结撒花 !!!