Windows下Qt与Tesseract4.1的使用

前言

最近准备利用Tesseract来识别文字,算是踩了很多的坑,从编译源代码到工程示例差不多花了4天。到了利用Qt使用Tesseract时,发现网上都是利用ubuntu来使用的,而在windows下大多数都是利用Visual Studio来使用,所以这篇文章就来告诉你怎么在windows下用Qt使用Tesseract。

需要的工具

  1. Qt Creator;
  2. 编译好、并测试成功(利用命令行测试)的Tesseract源码;

Qt 软件这些我就不在这里说了,自行解决。Tesseract源码的编译与测试自行解决,本文只解决如何在Qt中使用。
若嫌麻烦可前往下载我的工程与所有库、头文件:https://download.csdn.net/download/qq_42401265/12028015

找到所有.h、lib、dll文件

首先创建一个tesseract文件夹(我是放在桌面的),里面在创建3个文件夹分别是lib、include、dll。
在这里插入图片描述
总的目录结构是这样的。
-tesseract4.1
—dll
-------Debug
-------Release
—include
-------leptonica
-------tesseract
—lib
-------Debug
-------Release

找到所有.h文件

找到源码编译成功的目录我的是build,把api文件夹里面的tess_version.h复制到tesseract4.1\include\tesseract里面。
在这里插入图片描述
然后找到源码路径里面的src文件夹,把里面所有的.h复制到tesseract4.1\include\tesseract里面。
在这里插入图片描述
然后进入C:\Users\chuan.cppan\storage\src这个目录(每个电脑的用户不一样,所以此路径只能参考)
在这里插入图片描述
因为每个人用的cppan用的版本可能不一样,所以这里面的目录也肯定不一样,进入到这个目录后用windows搜索allheaders.h
在这里插入图片描述
打开此路径,把此路径下所有的.h都拷贝到tesseract4.1\include\leptonica里面
在这里插入图片描述
接着进入C:\Users\chuan.cppan\storage\obj(每个电脑的用户不一样,所以此路径只能参考),用同样的方法搜索endianness.h,将endianness.h拷贝至tesseract4.1\include\leptonica里面。到此为止,所有的.h都找完了。接下来是.lib文件
在这里插入图片描述

找到所有.lib文件

进入源码目录(我的是bulid)。分别进入ReleaseDebug目录里面,把里面的tesseract41.lib(因版本后缀可能不相同)文件分别拷贝至tesseract4.1\lib\Release与tesseract4.1\lib\Debug下
在这里插入图片描述
接着进入C:\Users\chuan.cppan\storage\lib\1500381c(此路径会根据电脑的用户名与cppan的版本发生变化,所以此路径只做参考)分别进入Release与Debug目录里面,把里面的pvt.cppan.demo.danbloomberg.leptonica-1.78.0.lib(因版本后缀可能不相同)文件分别拷贝至tesseract4.1\lib\Release与tesseract4.1\lib\Debug下。所以的lib就找完了,接下来是dll。
在这里插入图片描述

找到所有dll文件

进入源码目录(我的是build)里面的bin文件夹。
在这里插入图片描述
简单方法:分别把所有的dll文件文本放在tesseract4.1\dll\Debug与tesseract4.1\dll\Release里面,简单省事。
麻烦一点的方法:分别进目录找到相对应的9个文件(后缀可能因版本而不同) ,分别放在tesseract4.1\dll\Debug与tesseract4.1\dll\Release里面。
在这里插入图片描述
到此为止所以的文件都找齐了,接下来是写一个程序来验证。

Qt+tesseract测试环节

测试之前些一个tesseract.pri方便以后调用。代码如下

INCLUDEPATH += C:/Users/chuan/Desktop/tesseract4.1/include/tesseract \
               C:/Users/chuan/Desktop/tesseract4.1/include/leptonica

Debug: {
LIBS += -lC:/Users/chuan/Desktop/tesseract4.1/lib/Debug/*								#Debug模式下所需的库
}
Release: {
LIBS += -lC:/Users/chuan/Desktop/tesseract4.1/lib/Release/*							#Release模式下所需的库
}

创建一个工程,在工程文件里面添加tesseract.pri的路径。
在这里插入图片描述
在这里插入图片描述
接着在mainwindow.cpp里面这么写

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

#include <allheaders.h>
#include <baseapi.h>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    char *outText=new char();
    tesseract::TessBaseAPI *api=new tesseract::TessBaseAPI();
    api->Init(((QCoreApplication::applicationDirPath()+"\\tessdata").toLatin1()).data(), "chi_sim");//第一个参数是指明“chi_sim”包的路径,我是放在与.exe同目录中的tessdata下。若此处为空,会从环境变量里面找
    Pix *image = pixRead("C:/Users/chuan/Desktop/picture/t.png");
    api->SetImage(image);
    outText = api->GetUTF8Text();
    api->End();
    qDebug()<<outText;
    delete [] outText;
    pixDestroy(&image);

}
MainWindow::~MainWindow()
{
    delete ui;
}

运行前准备

程序写好了后,需要先构造项目,在生成对应路径的Release与Debug下,把之前对应的dll放在此目录。根据我的程序,还需要在此目录下创建了个tessdata,里面放入chi_sim.traineddata(语言包自行去下载)
在这里插入图片描述
接着运行程序,成功!
在这里插入图片描述
若嫌麻烦可前往下载我的工程与所有库、头文件:https://download.csdn.net/download/qq_42401265/12028015

猜你喜欢

转载自blog.csdn.net/qq_42401265/article/details/103504870
今日推荐