当前位置: 代码迷 >> 综合 >> OpenCV build with Tesseract on Win7 VS2017
  详细解决方案

OpenCV build with Tesseract on Win7 VS2017

热度:95   发布时间:2023-09-24 04:41:42.0

做一个作用涉及的计算机视觉,并且要求只能用C++或者MATLAB实现。考虑到至少C++还用过一段时间,OpenCV也接触过。于是准备使用C++实现。在寻找样例代码的过程中,发现网上的代码最适合新手的还是各类官方tutorial以及一些比较良心的入门书籍的代码。

参考代码来自《OpenCV 实例精解(OpenCV By Example)》的第11章,使用Tesseract识别文本。

但是在代码成功运行之前,笔者在解决这个问题的时候遇到不少因为知识不够的坑,现在做一个记录,以便后面的同学能够少走一些弯路。


目录

一、安装依赖

二、编译Tsseract

三、编译OpenCV+OpenCV_contrib

四、代码测试


一、安装依赖

1.VS2017

2.cmake(我用的是写本文时的最新版,3.12.4)

3.cppan(本时期GitHub上最新release版本)

4.Tesseract 3.05.01

5.OpenCV 3.4.2

6.OpenCV_contrib 3.4.2

 

确保1、2、3安装完成,

以及4、5、6源码下载完成后,再开展后续操作。


二、编译Tesseract

1.创建文件夹

在编译Tesseract之前,为方便后续快速找到编译好的文件,先创建一个名为Tesseract的文件夹(如下图,有一个tesseract-5的目录,尝试了不止5次)。

名为Tesseract的目录下方再创建三个小文件夹,分别为build(编译后输出的工程文件),install(工程文件生成的安装文件),sources(tesseract源代码)。

也就是说,tesseract里面存放的是由 tesseract-3.05.01.zip 解压出来的文件。

OpenCV build with Tesseract on Win7 VS2017

2.使用cppan下载依赖包

此时之前下载的cppan就派上用场了。打开cmd,进入sources文件,键入cppan,cppan会自动读取sources下方的cppan.yml,按照文件里面的规定下载依赖包。如果下载成功,进入下一步。

 

OpenCV build with Tesseract on Win7 VS2017

如果下载不成功,或者是后面怎么编译也不对,想重新来过,最好先将cppan的类似于缓存的东西删掉重新下载。我电脑上的位置在C盘的users下面,.cppan 文件就是了。C:\Users\Administrator\.cppan

OpenCV build with Tesseract on Win7 VS2017

 

3.使用 cmake-gui 对 Tesseract 进行编译

打开cmake-gui,进行路径配置

(1) where is the source code:D:/tesseract-5/soruces

(2) where to build the binaries:D:/tesseract-5/build

(3) 点击configure,弹出对话框设置生成器,选择 Visual Studio 15 2017 Win64,点击Finish,这时cmake开始在build目录下生成一些配置文件。

(4) 第一次配置完成后,cmake界面中间会出现一片红色的Name 以及 value,搜索 CAMKE_INSTALL_PREFIX ,将其设置成自己想要的安装路径,比如 D:/tesseract-5/install

(5) 再次点击configure,然后点击generate,此时build文件下就生成了名为tesseract.sln的VS工程文件。

下图为一个概览,因为我已经装好了,所以编译还是按照上面的步骤来。

OpenCV build with Tesseract on Win7 VS2017

 

 

4.用VS编译生成debug和release库

(1) 打开build下的tesseract.sln文件(点击cmake-gui中的Open Project也可)

(2) 编译生成debug版本库:选择vs菜单“”生成“”下方的debug模式,找到CMakeTargets下的ALL_BUILD,右键->生成解决方案.

OpenCV build with Tesseract on Win7 VS2017

在这里可能会遇到一些错误,而且错误主要集中在cppan-d-b-d。

OpenCV build with Tesseract on Win7 VS2017

在网上查了一下,这个错误的主要原因是

其实都是文件编码问题。下载得到的文件编码为UTF-8(不带签名),而Visual Studio (中文版)默认保存的文本文件是GB2312编码,对于UTF-8编码的某些字符,在中文版VS下就容易因解码错误导致乱码造成编译错误。

解决方法: 只需要双击对应的错误,跳转到对应的文件,然后点击左上角菜单 “文件选项" 下的"高级保存选项",将unicode(utf-8带签名),改成GB2312。保存后再“生成"即可。

还有一个错误是

OpenCV build with Tesseract on Win7 VS2017

锁定到错误发生位置,将其用下面的代码替换即可。

	  static const STRING kCharsToEx[] = { "'", "`", "\"", "\\", ",", ".","<", ">", "<<", ">>", "" };

(3) 生成安装文件:找到CMakeTargets下的INSTALL,右键,仅限于项目-》仅生成INSTALL。然后在D:/tesseract-5/install下就可以看到所需要的头文件和可执行文件等。

(4) release版本同上,只需要在编译时选择release即可。

此时tesseract就算是编译完成了。可以看到install文件夹下面的文件夹

OpenCV build with Tesseract on Win7 VS2017

5.测试环境

将sources里面的tessdata拷贝进D:/tesseract-5/install/bin文件夹下,并且设置好环境变量。

OpenCV build with Tesseract on Win7 VS2017

 

设置系统变量,变量名为 TESSDATA_PREFIX,变量值为tessdata文件夹的上层文件夹目录,这里的目录就是D:/tesseract-5/install/bin。

OpenCV build with Tesseract on Win7 VS2017

测试

打开cmd,进入D:/tesseract-5/install/bin,输入tessract eurotext.tif euro.txt

若文件夹下方生成了euro.txt文件,说明编译以及后续操作成功。

这是继续将D:/tesseract-5/install/bin也加入到环境变量PATH,方便后面跑程序。


三、编译OpenCV+OpenCV_contrib

1.编译OpenCV,设置好路径,点击configure

OpenCV build with Tesseract on Win7 VS2017

2.搜索OPENCV_EXTRA_MODULES_PATH,并设置其路径,指向opencv_contrib文件夹下的modules文件夹。再次点击configure。

OpenCV build with Tesseract on Win7 VS2017

3.2中configure结束之后,搜索tessract以及lept,设置其对应的包含目录和库路径。

Tesseract_LIBRARY: D:/tesseract-5/install/lib/tesseract305d.lib

Tesseract_INCLUDE_DIR: D:/tesseract-5/install/include

Lept_LIBRARY: D:/tesseract-5/install/lib/pvt.cppan.demo.danbloomberg.leptonica-1.74.4.lib

配置好后点击configure,再点击generate,再点击OpenCV project。(最好能fq,因为保不齐有些包获取不到)

OpenCV build with Tesseract on Win7 VS2017

4.打开opencv.sln之后,对整个解决方案进行生成, 再对INSTALL右键,仅限于项目-》仅生成INSTALL、自此OpenCV的编译结束。

5.环境配置,最后不要忘了把OpenCV的动态链接库目录加入到环境变量中。

E:\opencv3.4.2\opencv\newbuild-6\install\x64\vc15\bin加入PATH。


四、代码测试

使用的是《OpenCV 实例精解(OpenCV By Example)》的第11章的示例代码。可登录www.hzbook.com,下载该书代码。

在运行项目之前需要先配置项目属性。可以在菜单栏的项目的下拉栏中的属性进行配置(只对该项目有效),也可以在右边栏的属性管理器中进行配置,对后面所有的项目都有效。

1.如图进行包含目录和库目录的配置。

OpenCV build with Tesseract on Win7 VS2017

OpenCV build with Tesseract on Win7 VS2017

OpenCV build with Tesseract on Win7 VS2017

2.对附加依赖项进行配置。如果没有在用cmake-gui编译OpenCV时,勾选BUILD_opencv_world选项,则会生成一大堆lib文件。

为了方便配置附加依赖项,可以进行如下操作。

cmd进入E:\opencv3.4.2\opencv\newbuild-6\install\x64\vc15\lib,键入dir / b *d.lib > libs.txt 

即可在该文件夹下生成一个txt文件,里面所有以 “ d.lib ”结尾的文件的全称。

OpenCV build with Tesseract on Win7 VS2017

OpenCV build with Tesseract on Win7 VS2017

最终结果是OpenCV build with Tesseract on Win7 VS2017

特别鸣谢:

https://blog.csdn.net/xiaoluzjg/article/details/73472428

https://www.cnblogs.com/hupeng1234/p/8545371.html

https://blog.csdn.net/xiaoluzjg/article/details/74459291

https://blog.csdn.net/naidoudou/article/details/70225849

  相关解决方案