欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Windows下Qt与Tesseract4.1的使用

程序员文章站 2023-12-27 09:29:15
...

前言

最近准备利用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。
Windows下Qt与Tesseract4.1的使用
总的目录结构是这样的。
-tesseract4.1
—dll
-------Debug
-------Release
—include
-------leptonica
-------tesseract
—lib
-------Debug
-------Release

找到所有.h文件

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

找到所有.lib文件

进入源码目录(我的是bulid)。分别进入ReleaseDebug目录里面,把里面的tesseract41.lib(因版本后缀可能不相同)文件分别拷贝至tesseract4.1\lib\Release与tesseract4.1\lib\Debug下
Windows下Qt与Tesseract4.1的使用
接着进入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。
Windows下Qt与Tesseract4.1的使用

找到所有dll文件

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

Qt+tesseract测试环节

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

INCLUDEPATH += C:\Users\chuan\Desktop\tesseract4.1\include\tesseract \          #tesseract的头文件
               C:\Users\chuan\Desktop\tesseract4.1\include\leptonica                            #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的路径。
Windows下Qt与Tesseract4.1的使用
Windows下Qt与Tesseract4.1的使用
接着在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(语言包自行去下载)
Windows下Qt与Tesseract4.1的使用
接着运行程序,成功!
Windows下Qt与Tesseract4.1的使用
若嫌麻烦可前往下载我的工程与所有库、头文件:https://download.csdn.net/download/qq_42401265/12028015

相关标签: Tesseract Qt

上一篇:

下一篇: