Ubuntu 环境下paddleocr cpp_infer 操作说明

1、准备环境

1.1 编译opencv库

  • 首先需要从opencv官网上下载在Linux环境下源码编译的包,以opencv3.4.7为例,下载命令如下。

cd deploy/cpp_infer
wget https://paddleocr.bj.bcebos.com/libs/opencv/opencv-3.4.7.tar.gz
tar -xf opencv-3.4.7.tar.gz
  • 编译opencv,设置opencv源码路径(`root_path`)以及安装路径(`install_path`)。进入opencv源码路径下,按照下面的方式进行编译

root_path="your_opencv_root_path"
install_path=${root_path}/opencv3
build_dir=${root_path}/build
rm -rf ${build_dir}
mkdir ${build_dir}
cd ${build_dir}
cmake .. \
-DCMAKE_INSTALL_PREFIX=${install_path} \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DWITH_IPP=OFF \
-DBUILD_IPP_IW=OFF \
-DWITH_LAPACK=OFF \
-DWITH_EIGEN=OFF \
-DCMAKE_INSTALL_LIBDIR=lib64 \
-DWITH_ZLIB=ON \
-DBUILD_ZLIB=ON \
-DWITH_JPEG=ON \
-DBUILD_JPEG=ON \
-DWITH_PNG=ON \
-DBUILD_PNG=ON \
-DWITH_TIFF=ON \
-DBUILD_TIFF=ON
make -j
make install

也可以直接修改`tools/build_opencv.sh`的内容,然后直接运行下面的命令进行编译

sh tools/build_opencv.sh

其中`root_path`为下载的opencv源码路径,`install_path`为opencv的安装路径,`make install`完成之后,会在该文件夹下生成opencv头文件和库文件,用于后面的OCR代码编译。

最终在安装路径下的文件结构如下所示:

opencv3/
|-- bin
|-- include
|-- lib
|-- lib64
|-- share

1.2 编译cmake

由于ubuntu中自带的cmake版本为3.5.0版本比较低,所以需要更新一下版本。

wget https://github.com/Kitware/CMake/releases/download/v3.26.0/cmake-3.26.0-linux-x86_64.sh

然后用 sh 文件快速升级:

sudo bash ./cmake-3.23.0-linux-x86_64.sh --skip-licence --prefix=/usr

# 安装过程中遇到:
# 选择1
Do you accept the license? [yn]: 
# 输入 y

# 选择2
By default the CMake will be installed in:
  "/usr/cmake-3.23.0-linux-x86_64"
Do you want to include the subdirectory cmake-3.23.0-linux-x86_64?
Saying no will install in: "/usr" [Yn]:
# 输入 n

安装完成后,可以看到 cmake 版本已经更新

$ cmake --version
cmake version 3.26.0

1.3 下载Paddle预测库

[Paddle预测库官网](https://paddle-inference.readthedocs.io/en/latest/user_guides/download_lib.html) 上提供了不同cuda版本的Linux预测库,可以在官网查看并选择合适的预测库版本(*建议选择paddle版本>=2.0.1版本的预测库* )。

下载之后使用下面的方法解压:

tar -xf paddle_inference.tgz

其中`paddle`就是C++预测所需的Paddle库,`version.txt`中包含当前预测库的版本信息。

2、开始运行

2.1 下载推理模型

https://www.paddlepaddle.org.cn/modelsDetail?modelId=16

ch_PP-OCRv2_det、ch_PP-OCRv2_rec

将检测、识别模型放在PaddleOCR/deploy/cpp_infer/的inference文件夹(新建)里面; 文件结构如下:

inference/
|-- det_db
| |--inference.pdiparams
| |--inference.pdmodel
|-- rec_rcnn
| |--inference.pdiparams
| |--inference.pdmodel

2.2 编译PaddleOCR C++预测demo

编译命令如下,其中Paddle C++预测库、opencv等其他依赖库的地址需要换成自己机器上的实际地址

sh tools/build.sh

具体的,需要修改`tools/build.sh`中环境路径,相关内容如下:

OPENCV_DIR=your_opencv_dir
LIB_DIR=your_paddle_inference_dir
#CUDA_LIB_DIR=your_cuda_lib_dir
#CUDNN_LIB_DIR=your_cudnn_lib_dir
BUILD_DIR=build
rm -rf ${BUILD_DIR}
mkdir ${BUILD_DIR}
cd ${BUILD_DIR}
cmake .. \
-DPADDLE_LIB=${LIB_DIR} \
-DWITH_MKL=ON \
-DWITH_GPU=OFF \
-DWITH_STATIC_LIB=OFF \
-DWITH_TENSORRT=OFF \
-DOPENCV_DIR=${OPENCV_DIR} \
# -DCUDNN_LIB=${CUDNN_LIB_DIR} \
#-DCUDA_LIB=${CUDA_LIB_DIR} \
#-DTENSORRT_DIR=${TENSORRT_DIR} \
make -j

问题一:

cc1plus: fatal error: CMakeFiles/ppocr.dir/src/ocr_rec.cpp.d: No such file or directory

错误原因在于编译时优化等级设置有误,将CMakeLists.txt中的 -o3 改为 -O3即可。

问题二:

libpaddle2onnx.so.1.0.0rc2, needed by /home/hi/work/paddle_inference/paddle/lib/libpaddle_inference.

paddle_inference 推理库需链接paddle2onnx、onnxruntime等库文件,在CMakeLists.txt中指定链接目录即可:

link_directories("${PADDLE_LIB}/third_party/install/paddle2onnx/lib")
link_directories("${PADDLE_LIB}/third_party/install/onnxruntime/lib")

至此,demo程序编译通过。

你可能感兴趣的:(paddleocr,paddle,c++,ubuntu)