当前位置:   article > 正文

windows10配置paddleOCR的CPU版本总结_paddleocr硬件配置需求

paddleocr硬件配置需求

        paddleOCR的CPU版本依赖的库还是比较少的。如下

1.opencv库。 本人配置的版本是opencv4.5.0

2.paddle_inference 推理库。该库解压后有version.txt文件,版本信息如下:

  1. GIT COMMIT ID: a5cf2e305b744e3ebd2f2210341f88d349d4ec5e
  2. WITH_MKL: ON
  3. WITH_MKLDNN: ON
  4. WITH_GPU: ON
  5. WITH_ROCM: OFF
  6. CUDA version: 10.2
  7. CUDNN version: v7.6
  8. CXX compiler version: 19.16.27045.0
  9. WITH_TENSORRT: ON
  10. TensorRT version: v7.0.0.11

        上述就是全部依赖了。

一、用cmake构建Visual Studio项目

        构建项目,如同官网教程一样,我的配置最终效果如下:

         首先,打开cmake-gui填写上图中的1、2步骤,按cmake-gui中的configure按钮,出错。然后填写上图3、4、5步骤,注意填写自己安装的目录。然后再按configure。这一步,我出错了,错误如下(如果没有出错,直接按generate,项目应该能构建好,去所在的build目录打开vs项目进行下一步):

Could NOT find Git

        主要是我安装了git,但是没有把git的bin目录加入系统目录中(用户目录也行)。完成添加后,再configure,然后按generate,构建项目成功。

二、vs2017编译

        上一步成功后,这一步编译比较简单,直接按照官网教程就可运行。

        但是,运行、二次开发是比较麻烦的。首先需要用vs编译好,然后在对应目录使用终端运行。不能直接使用vs2017运行、调试,非常不方便。所以为了方便开发,稍微折腾了下。

三、使用vs2017构建项目

        首先新建一个vs2017空白项目,新建一个main.cpp文件,内容如下:

  1. #include "opencv2/core.hpp"
  2. #include "opencv2/imgcodecs.hpp"
  3. #include "opencv2/imgproc.hpp"
  4. #include <iostream>
  5. #include <vector>
  6. #include "args.h" // 原来的是: #include <include/args.h> 其他文件也有类似问题,直接去掉include即可,
  7. #include "paddleocr.h" // 原来的是: #include <include/paddleocr.h>
  8. #include <numeric>
  9. using namespace PaddleOCR;
  10. int main(int argc, char **argv) {
  11. // Parsing command-line
  12. std::vector<std::string> imgs;
  13. imgs.push_back("./images/1.png");
  14. PPOCR ocr = PPOCR();
  15. std::vector<std::vector<OCRPredictResult>> ocr_results =
  16. ocr.ocr(imgs, FLAGS_det, FLAGS_rec, FLAGS_cls);
  17. for (int i = 0; i < imgs.size(); ++i) {
  18. if (FLAGS_benchmark) {
  19. cout << imgs[i] << '\t';
  20. for (int n = 0; n < ocr_results[i].size(); n++) {
  21. for (int m = 0; m < ocr_results[i][n].box.size(); m++) {
  22. cout << ocr_results[i][n].box[m][0] << ' '
  23. << ocr_results[i][n].box[m][1] << ' ';
  24. }
  25. }
  26. cout << endl;
  27. }
  28. else {
  29. cout << imgs[i] << "\n";
  30. Utility::print_result(ocr_results[i]);
  31. if (FLAGS_visualize && FLAGS_det) {
  32. cv::Mat srcimg = cv::imread(imgs[i], cv::IMREAD_COLOR);
  33. if (!srcimg.data) {
  34. std::cerr << "[ERROR] image read failed! image path: "
  35. << imgs[i] << endl;
  36. exit(1);
  37. }
  38. std::string file_name = Utility::basename(imgs[i]);
  39. Utility::VisualizeBboxes(srcimg, ocr_results[i],
  40. FLAGS_output + "/" + file_name);
  41. }
  42. cout << "***************************" << endl;
  43. }
  44. }
  45. int i;
  46. cin >> i;
  47. }

构建上述项目后,肯定会出现很多语法错误。主要是库没有添加进去。

        上面错误是没有添加paddle_inference和opencv库。首先添加opencv库,这不是重点,不赘述,可参考。添加paddle_inference依赖库和第三方库,这里直接贴出添加的路径了(可以在新建项目属性表上,执行如下操作)。

添加include,如下:

 添加库依赖,如下:

 添加附加依赖项,如下(最后一个shlwapi.lib库,是用于解决"无法解析的外部符号 __imp__PathMatchSpec"问题的):

         至此,依赖方面的就弄好了。现在应该还有paddleOCR源文件没有加入进来。即,将paddleOCR源文件和main.cpp文件同一路径,效果如下:

        然后编译,会出现很多错误,大概是报

错误 LNK2001 无法解析的外部符号 “__declspec(dllimport) public: __cdecl google::LogMessage::~LogMessage(void)”

什么之类的错误。这是谷歌glog库预定义宏,添加如下:

  1. GLOG_NO_ABBREVIATED_SEVERITIES
  2. GOOGLE_GLOG_DLL_DECL=

         还有如下错误:

error LNK2038: 检测到“RuntimeLibrary”的不匹配项 解决方法

解决方法如下:

  1. 多线程调试Dll (/MDd) 对应的是MD_DynamicDebug
  2. 多线程Dll (/MD) 对应的是MD_DynamicRelease
  3. 多线程(/MT) 对应的是MD_StaticRelease
  4. 多线程(/MTd)对应的是MD_StaticDebug

 

        (注意呀,项目的文件结构改变了,有些include路径是错误的,需要改正,上面也提到了)右键项目点击生成,应该能生成成功,但是运行估计不行,应该报什么 LNK2007 无法链接什么外部符号的错误。最后需要添加dll文件所在目录到系统(用户目录也行)。如下(添加了路径最好是重启或注销一下电脑):

        最后准备下载好模型文件运行,(注意,运行前paddleocr.cpp文件我也修改了,修改的部分如下)

         最后的运行效果如下(开启了文字检测和识别)。

        最开始的时候终端输出是乱码。这是因为中文识别的时候需要一个字典,字典的格式和系统的编码格式不同。用notepad将字典修的格式改成对应的中格式即可。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号