【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)

文章目录

  • Tesseract库下载
  • Qt版本选择
    • 安装步骤
  • VS2017安装
  • MSVC调试器安装
  • 构建套件的导入
  • 文字识别功能的检测

        最近在给之前Qt医疗管理系统项目添加一个文字识别功能,但是在其中遇到非常多坑,花费了我比较多的时间(查阅了很多文章),这篇文章主要用来整理这些坑(非常详细)。

Qt版本:Qt5.13
VS版本:VS2017
编译器(构建套件):Desktop Qt 5.13.0 MSVC2017 64bit
以上环境都必须保持一致,否则可能会出现意想不到的错误。

Tesseract库下载

        我这里选择比较简单的获取库的方法,就是下载已经通过源码编译好的库,当然也可以在GitHub上找到Tesseract的开源项目下载源码自己编译。为什么不选择后者呢?容易出错!如果你是刚接触的小白,本人强烈推荐前者;如果你是大佬,那当我没说哈哈哈~

【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第1张图片
        这个库我已经放到主页的资源下,需要的自取。下载之后解压缩看到以下3个文件夹就说明下载成功。

【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第2张图片

Qt版本选择

        这里我Qt的版本选择的是Qt5.13,大家尽量保持一样,避免出现不必要的错误。
在这里插入图片描述
        这是之前在官网下载的,但是最近去看好像没有这个版本可以下载了,如果在官网中没有找到这个版本可以通过下面微信名片添加我,找我发安装包。

安装步骤

(1)打开安装包,点击Next。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第3张图片
(2)登录自己的Qt账号,Next。(没有Qt账号的话注册一个即可)
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第4张图片
(3)这里最好修改路径,放到D盘,毕竟Qt还是比较大的。然后Next。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第5张图片
(4)勾选以下选项,Next。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第6张图片
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第7张图片
(5)Next后开始安装。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第8张图片

VS2017安装

        实测VS2019和VS2022都运行不起来,只有VS2017,大家尽量选择VS2017安装,保持版本一致。最近在VS官网上好像也没有看到VS2017的安装包,有需要的可以到我的主页下的资源中选择下载。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第9张图片
(1)点击打开社区版的安装包。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第10张图片
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第11张图片
(2)按照下面操作进行勾选。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第12张图片
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第13张图片
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第14张图片
(3)这里最好修改路径到D盘,毕竟VS也是比较大的。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第15张图片
        至此,Tesseract、Qt以及VS2017都已经准备好了。

MSVC调试器安装

在这里插入图片描述
        虽然我们在安装Qt的时候,有选择MSVC版本,但是这里只会显示MinGW(也就是windows模拟器版本),这时候我们就需要安装一个MSVC调试器。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第16张图片
        可以在我的主页资源中找到这个工具下载。
(1)解压后点击安装包,这里路径可以修改成D盘,Next。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第17张图片
(2)选择No,Next。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第18张图片
(3)只需要勾选这个,Install。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第19张图片

构建套件的导入

(1)安装完之后,打开Qt就可以发现MSVC版本的编译器就会自动加载进去。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第20张图片
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第21张图片
(2)此时只需要在构建套件中按照红色框中的选,Apply,OK即可。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第22张图片
        这样,就成功地将各种环境配置好了。

文字识别功能的检测

(1)新建一个工程,在.pro文件中添加这四个语句,+=后的路径是刚才下载Tesseract库存放的路径,按照我写的这个定位即可。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第23张图片

INCLUDEPATH += D:\QtProject\tesseracte_lib\tesseract_x64-windows\include\tesseract
LIBS+= D:\QtProject\tesseracte_lib\tesseract_x64-windows\lib\tesseract41.lib

INCLUDEPATH += D:\QtProject\tesseracte_lib\leptonica_x64-windows\include\leptonica
LIBS+= D:\QtProject\tesseracte_lib\leptonica_x64-windows\lib\leptonica-1.78.0.lib

(2)导入头文件(最重要的是最下面的两个 )。使用刚才下载的路径导入即可。

#include 
#include 
#include 
#include 
#include 

#include 
#include       // tesseract提供的关于C++的接口
#include 

(3)代码编写。简单实现一下文字识别功能,看看效果。

    // Basic example
      char *outText;

      tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
      // Initialize tesseract-ocr with English, without specifying tessdata path
      if (api->Init("D:/QtProject/tesseracte_lib/tessdata", "chi_sim"))
      {
          fprintf(stderr, "Could not initialize tesseract.\n");
          exit(1);
      }

      QString filename = QFileDialog::getOpenFileName(nullptr, tr("文件上传"), "", "");
      QTextCodec *code = QTextCodec::codecForName("GB2312");
      std::string str = code->fromUnicode(filename).data();

//      std::string str = path.toStdString();
      const char* ch = str.c_str();

      // Open input image with leptonica library
      Pix *image = pixRead(ch); //absolute path of file
      api->SetImage(image);

      // Get OCR result
      outText = api->GetUTF8Text();

      ui->textEdit->setText(outText);

      // Destroy used object and release memory
      api->End();
      delete [] outText;
      pixDestroy(&image);

(4)要记得将图一路径下的全部文件复制到可执行程序.exe(图二)的同级目录下。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第24张图片
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第25张图片

(5)运行。需要注意:这里必须使用release来运行。
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第26张图片
【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)_第27张图片
        这里看到,识别的效果还是挺好的!
        按照这套流程安装操作下来(版本一致),很大概率都是没问题的(测试了几台机子了),如果还出现问题的话,可以私信或者在下方名片添加我讨论,也可以在评论区交流讨论。

你可能感兴趣的:(QT开发学习系列,qt,c++,开发语言)