文章目录

  • Windows10下使用PaddleOCR+c++
  • 2.1 配置c++环境
  • 2.1.1 cmake
  • 2.1.2 OpenCV
  • 2.1.3 vs2017
  • 2.1.4 PaddleOCR 项目文件
  • 2.1.5 paddle推理预测库
  • 2.1.6 模型文件
  • 2.2 生成编译例程——ocr_system
  • 2.2.1 cmake生成工程
  • 2.2.2 使用vs2017编译
  • 2.2.3 编译报错
  • 2.3 运行demo程序
  • 2.3.1 修改配置文件
  • 2.3.2 运行程序:
  • 2.3.3 解决Windows下控制台输出中文乱码


Windows10下使用PaddleOCR+c++

2.1 配置c++环境

cmake

opencv

vs2017

PaddleOCR 项目文件

paddle推理预测库

模型文件

以下按本机环境为例

2.1.1 cmake

版本:3.16.2

2.1.2 OpenCV

opencv-4.4.0

2.1.3 vs2017

官方教程推荐vs2019,原因是vs2019已经支持cmake,但实际用的过程中还是有各种问题,所以在生成项目时还是用的cmake-gui,所以这里对vs版本没太大要求

2.1.4 PaddleOCR 项目文件

直接在GitHub或者gitee拉取即可,这里可能需要登录,配置git环境之类不在此详述。

gitee项目地址:https://gitee.com/paddlepaddle/PaddleOCR

我用的是release/2.1,目录结构如下:

PaddleOCR use_gpu没什么变化 paddleocr windows_paddle

2.1.5 paddle推理预测库

地址:https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/05_inference_deployment/inference/windows_cpp_inference.html

这里下载的是cpu版本,cpu_avx_mkl——预测库(2.0.2)

目录结构如下:

PaddleOCR use_gpu没什么变化 paddleocr windows_c++_02

2.1.6 模型文件

模型简介

模型名称

推荐场景

检测模型

方向分类器

识别模型

中英文超轻量OCR模型(9.4M)

ch_ppocr_mobile_v2.0_xx

移动端&服务器端

推理模型 / 预训练模型

推理模型 / 预训练模型

推理模型 / 预训练模型

中英文通用OCR模型(143.4M)

ch_ppocr_server_v2.0_xx

服务器端

推理模型 / 预训练模型

推理模型 / 预训练模型

推理模型 / 预训练模型

这里用的是中英文通用OCR模型,目录结构如下(需整理):

PaddleOCR use_gpu没什么变化 paddleocr windows_c++_03

2.2 生成编译例程——ocr_system

  1. 用cmake生成工程
  2. 用vs2017打开程序,配置、编译

2.2.1 cmake生成工程

打开cmake-gui,选择路径:

PaddleOCR use_gpu没什么变化 paddleocr windows_python_04

点击Configure

PaddleOCR use_gpu没什么变化 paddleocr windows_深度学习_05

点击Finish

PaddleOCR use_gpu没什么变化 paddleocr windows_深度学习_06

配置OpenCV和Paddle_Lib路径,我的路径如下:

PaddleOCR use_gpu没什么变化 paddleocr windows_ocr_07

点击Configure

点击Generate

生成如下文件:

PaddleOCR use_gpu没什么变化 paddleocr windows_c++_08

2.2.2 使用vs2017编译

使用vs2017打开ocr_system.sln,设置为Release、x64,再检查一下工程的依赖项路径名称等是否与本地文件一致

PaddleOCR use_gpu没什么变化 paddleocr windows_python_09

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T9mMCh1R-1625024835356)(Windows10下使用PaddleOCR记录.assets/image-20210514171246639.png)]

PaddleOCR use_gpu没什么变化 paddleocr windows_python_10

PaddleOCR use_gpu没什么变化 paddleocr windows_paddle_11

右击ocr_system生成就好

2.2.3 编译报错

  1. 在postprocess_op.cpp中PolygonScoreAcc函数下有句话错误:cv::Point rook_point[contour.size()];
    发现没有用到这个函数的地方,整个函数都注释掉吧
  2. 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”
    c/c+±-代码生成–运行库 设置为多线程(/MT:
  3. 常量中有换行符
    进入项目 -> 属性->常规,将字符集设置为多字节字符集
    在C/C++ => 命令行中添加(“/utf-8”)

2.3 运行demo程序

2.3.1 修改配置文件

修改配置文件:\PaddleOCR\deploy\cpp_infer\tools\config.txt:

主要修改以下参数:

det_model_dir

cls_model_dir

rec_model_dir

char_list_file

# model load config
use_gpu 0
gpu_id  0
gpu_mem  4000
cpu_math_library_num_threads  10
use_mkldnn 1

# det config
max_side_len  960
det_db_thresh  0.3
det_db_box_thresh  0.5
det_db_unclip_ratio  1.6
det_model_dir  D:/MyFiles/CV/PaddleOCR/Model/ch_ppocr_server_v2.0_det_infer/

# cls config
use_angle_cls 0
cls_model_dir  D:/MyFiles/CV/PaddleOCR/Model/ch_ppocr_mobile_v2.0_cls_infer/
cls_thresh  0.9

# rec config
rec_model_dir  D:/MyFiles/CV/PaddleOCR/Model/ch_ppocr_server_v2.0_rec_infer/
char_list_file D:/MyFiles/CV/PaddleOCR/PaddleOCR-CPU-cpp/PaddleOCR/ppocr/utils/ppocr_keys_v1.txt

# show the detection results
visualize 1

# use_tensorrt
use_tensorrt 0
use_fp16   0

2.3.2 运行程序:

找到ocr_system.exe所在文件夹,拷贝需要依赖的dll

PaddleOCR use_gpu没什么变化 paddleocr windows_ocr_12

打开控制台进入到此路径:

ocr_system.exe D:\MyFiles\CV\PaddleOCR\PaddleOCR-CPU-cpp\PaddleOCR\deploy\cpp_infer\tools\config.txt D:\MyFiles\CV\PaddleOCR\PaddleOCR-CPU-cpp\PaddleOCR\doc\imgs\11.jpg

其中路径要根据实际情况修改

2.3.3 解决Windows下控制台输出中文乱码

在控制台输入

CHCP 65001