为方便在windows下使用c++测试验证paddleocr模型效果,paddleocr提供了 cpp_infer,下面记录使用vs2019对该测试工程编译操作的步骤。暂时只记录了cpu版操作。
cpu版
准备:
CMake
PaddleOCR/deploy/cpp_infer
paddle推理库paddle_inference https://paddleinference.paddlepaddle.org.cn/user_guides/download_lib.html#windows , 如 cpu_avx_mkl
opencv, 如opencv4.5.4
vs2019
paddleocr 预测模型,ch_PP-OCRv2_xx中英文超轻量PP-OCRv2模型(13.0M)
cmake 配置
1、运行cmake-gui,输入cpp_infer文件夹所在的路径,及vs编译工程目录
2、点击"Configure"按钮,并选择vs2019及x64平台
3、点击“Configure”后,会报错
遇到报错 `unable to access 'https://github.com/LDOUBLEV/AutoLog.git/': gnutls_handshake() failed: The TLS connection was non-properly terminated.`, 将 `deploy/cpp_infer/external-cmake/auto-log.cmake` 中的github地址改为 https://gitee.com/Double_V/AutoLog 地址即可。
4、配置opencv及paddle_inference目录后,再重新点击“Configure”
5、提示配置成功后,点击“Generate”生成工程文件
vs2019项目配置
CMake Generate完成后,会在cpp_infer/build文件夹中生成ppocr.sln文件,右击-打开方式-VS2019,在VS2019中打开ppocr.sln。
注意:将debug改为Release,点击生成-生成解决方案。
生成会报错:
- 报错 C1083 无法打开包括文件:"dirent.h":No such file or directory
- 第一步,在git上搜索dirent,下载该项目。 第二步,打开Microsoft Visual Studio的安装路径:xxx/Microsoft Visual Studio/2019/Community/VC/Auxiliary/VS/include/,将dirent/dirent.h复制到该路径下
- 报错 C3861“lstat”: 找不到标识符
- 方案:修改utility.cpp70行:lstat改成stat。
至此,c++版本的PaddleOCR生成结束。在cpp_infer/build/Release文件夹中,会看到ppocr.exe等文件。
为保证程序正常运行,paddle_inference/paddle/lib/paddle_inference.dll和opencv/build/x64/vc1/bin/opencv_world455.dll移入该文件夹下。
CMD运行:
cd cpp_infer/build/Release/
ppocr.exe system --det_model_dir=det模型所在路径 --rec_model_dir=rec模型所在路径 --image_dir=图片位置 --char_list_file=ppocr_keys_v1.txt
预测时的bug:
乱码:在预测前,命令行中输入CHCP 65001并回车
图片预测内容是从下到上呈现的,这个可以忽略