文章目录
- Tesseract库下载
- Qt版本选择
- 安装步骤
 
- VS2017安装
- MSVC调试器安装
- 构建套件的导入
- 文字识别功能的检测
最近在给之前Qt医疗管理系统项目添加一个文字识别功能,但是在其中遇到非常多坑,花费了我比较多的时间(查阅了很多文章),这篇文章主要用来整理这些坑(非常详细)。
Qt版本:Qt5.13
 VS版本:VS2017
 编译器(构建套件):Desktop Qt 5.13.0 MSVC2017 64bit
 以上环境都必须保持一致,否则可能会出现意想不到的错误。
Tesseract库下载
我这里选择比较简单的获取库的方法,就是下载已经通过源码编译好的库,当然也可以在GitHub上找到Tesseract的开源项目下载源码自己编译。为什么不选择后者呢?容易出错!如果你是刚接触的小白,本人强烈推荐前者;如果你是大佬,那当我没说哈哈哈~

         这个库我已经放到主页的资源下,需要的自取。下载之后解压缩看到以下3个文件夹就说明下载成功。

Qt版本选择
        这里我Qt的版本选择的是Qt5.13,大家尽量保持一样,避免出现不必要的错误。
 
         这是之前在官网下载的,但是最近去看好像没有这个版本可以下载了,如果在官网中没有找到这个版本可以通过下面微信名片添加我,找我发安装包。
安装步骤
(1)打开安装包,点击Next。
 
 (2)登录自己的Qt账号,Next。(没有Qt账号的话注册一个即可)
 
 (3)这里最好修改路径,放到D盘,毕竟Qt还是比较大的。然后Next。
 
 (4)勾选以下选项,Next。
 
 
 (5)Next后开始安装。
 
VS2017安装
        实测VS2019和VS2022都运行不起来,只有VS2017,大家尽量选择VS2017安装,保持版本一致。最近在VS官网上好像也没有看到VS2017的安装包,有需要的可以到我的主页下的资源中选择下载。
 
 (1)点击打开社区版的安装包。
 
 
 (2)按照下面操作进行勾选。
 
 
 
 (3)这里最好修改路径到D盘,毕竟VS也是比较大的。
 
         至此,Tesseract、Qt以及VS2017都已经准备好了。
MSVC调试器安装

         虽然我们在安装Qt的时候,有选择MSVC版本,但是这里只会显示MinGW(也就是windows模拟器版本),这时候我们就需要安装一个MSVC调试器。
 
         可以在我的主页资源中找到这个工具下载。
 (1)解压后点击安装包,这里路径可以修改成D盘,Next。
 
 (2)选择No,Next。
 
 (3)只需要勾选这个,Install。
 
构建套件的导入
(1)安装完之后,打开Qt就可以发现MSVC版本的编译器就会自动加载进去。
 
 
 (2)此时只需要在构建套件中按照红色框中的选,Apply,OK即可。
 
         这样,就成功地将各种环境配置好了。
文字识别功能的检测
(1)新建一个工程,在.pro文件中添加这四个语句,+=后的路径是刚才下载Tesseract库存放的路径,按照我写的这个定位即可。
 
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)导入头文件(最重要的是最下面的两个<tesseract/baseapi.h> 和<tesseract/strngs.h>)。使用刚才下载的路径导入即可。
#include <QDebug>
#include <QFileDialog>
#include <QTextCodec>
#include <iostream>
#include <memory>
#include <allheaders.h>
#include <D:/QtProject/tesseracte_lib/tesseract_x64-windows/include/tesseract/baseapi.h>      // tesseract提供的关于C++的接口
#include <D:/QtProject/tesseracte_lib/tesseract_x64-windows/include/tesseract/strngs.h>
(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(图二)的同级目录下。
 
 
(5)运行。需要注意:这里必须使用release来运行。
 
 
         这里看到,识别的效果还是挺好的!
         按照这套流程安装操作下来(版本一致),很大概率都是没问题的(测试了几台机子了),如果还出现问题的话,可以私信或者在下方名片添加我讨论,也可以在评论区交流讨论。


















