最近刚开始接触识别库引擎方面的知识,由于项目中需要使用光学识别处理模块,在老师与朋友的推荐下,我开始接触tesseract光学识别库,在最开始从GitHub上下载的源代码进行编译的时候,出现了许多意想不到的问题,为了先完成项目,我借鉴相关博客上针对tesseract3.04以下版本在VS2013上的编译方法,先在VS2013上运行tesseract,然而无法在VS2015上成功编译源代码,这让我一直纠结着,终于在和我们公司的齐工的一次探讨中,我们尝试了一种新的编译方法,测试结果显示编译成功,tesseract成功运行。
对于tesseract4.0的编译我将它分为五个步骤:
1.预处理部分,下载编译工程所需要的cmkae与cppan软件,并设置相应的环境变量,从GitHub上下载tesseract的相应源代码;
2.在解压的tesseract目录下运行cppan,下载一些图片解压缩等需要的lib与dll;
3.mkdir build目录,即在tesseract目录下新建一个build文件夹;
4.进入build目录,运行cmake,等待10到20分钟,即可生成VS2015项目所需的工程文件;
5.在编译成功的环境下,进入build目录下后缀为sln的工程文件,利用VS2015打开;
6.编译工程目录下的libtesseract工程文件,这时会出现报错现象,这是由于编程语言编码问题造成的,我们需要修改相应的编码格式,使其生成相应的lib与dll;
7.将目录下生成的lib与库文件路径添加到tesseract工程文件下的链接器输入与VC++目录中,点击生成,即可生成相应的.exe文件;
8.在我的电脑高级属性环境变量中添加名为TESSDATA_PREFIX的变量,其值为tesseract文件夹下tessdata文件夹的地址。
好了到这里我们就算大功告成了。
接下来我会一步一步的进行操作:
1预处理部分,下载相应的软件与源代码:
由于编译过程中相应的支持库是由cppan下载的,我们需要下载cppan并设置其环境变量,cppan的下载地址为:
官网网址链接为https://cppan.org/client/
我下载的是cppan-master-Windows-client.zip文件,解压缩以后就是一个cppan.exe文件,如下图所示:
接下来是设置环境变量,右键点击“我的电脑”,点击属性,在弹出的系统属性对话框中,选择高级,点击进入环境变量,在系统变量里面选择PATH变量,将cppan.exe所在的文件路径作为环境变量的值,这里我们就算是配置好cppan了。
然后是下载最新的cmake,并进行配置环境变量:
cmake官网下载地址为https://cmake.org/download/
我的电脑是X64版本的,所以我下载的是Windows win64-x64下的下载链接,即cmake-3.8.0-win64-x64.zip文件,解压缩以后将cmake-3.8.0-rc2-win64-x64目录下的bin文件夹的目录地址加载至系统环境变量PATH中,与cppan设置环境变量的方法一致。
预处理的最后一步是从GitHub上下载tesseract4.0的源代码,下载的地址是
https://github.com/tesseract-ocr/tesseract
在该界面下选择clone or download,如下图所示
然后我们解压缩,将其中所有的文件复制到我们新建的文件夹tesseract下(我个人觉得tesseract名字短,使用方便)
2运行cppan,下载相应的支持库
我使用的win10系统,所以在左下角Windows图标下鼠标右键单击,在弹出的界面中选择WIndows PowerShell管理员(A)选项,在运行cppan过程中,有可能杀毒软件会报错,可以先关闭杀毒软件。
将盘符切换到tesseract文件夹所在的盘,即输入相应盘的名称即可,我的tesseract在G盘,我输入的是G:,回车键即进入了G盘,如下图所示:
由于我昨天在G盘下才创建了一个tesseract的工程,我们将测试的tesseract放置在E盘下,直接E:即可切换到E盘下,输入命令cd tesseract即可进入tesseract文件夹下,如下图所示:
在该目录下,我们继续在Windows PowerShell下运行命令cppan然后回车,等待cppan程序运行,(安装电脑管家的记得在运行此步骤之前关闭电脑管家,不然杀毒软件将cppan识别为病毒会自动退出命令行)如下图所示:
3 tesseract文件夹下新建build文件夹,并进入build文件夹
在命令行中输入mkdir build即可新建一个build文件夹,然后cd build进入该目录中,如下图所示
可以在文件夹中查看是否新建了build文件夹,如下图所示:
你看下面是不是已经有了,build文件夹,这个文件夹是用来存放生成的VS2015的项目工程文件
4 运行cmake进行编译生成工程文件
我们继续在刚才运行的Windows PowerShell下运行以下命令
cmake . .
!!!注意后面两个dot不能省略
运行情况如下图所示:
你看正在生成关于VS2015的工程文件,做到这里我们可以去喝杯咖啡或者茶休息会了,因为编译时间大概为10到20分钟,具体的情况要看各位的电脑了。
到这里我们已经成功生成VS2015的工程文件了,接下来的步骤就是进入VS2015中进行具体的操作啦!
进入工程文件,编译libtesseract
在build目录下找到tesseract.sln文件,用VS2015打开该文件;
在菜单中选择生成解决方案的生成选项,由于是第一次进行生成,未进行任何修改,应该会报错的
我们等待它进行生成,这个过程中对CPU的占用率差不多是100%,有可能在运行其他程序时出现卡顿,但这是正常的现象,编译过后就不会出现这种情况了
这时出现了错误
上图中第一个错误是由于编码原因造成的,我们点击错误,进入生成该错误的文件中
在第250到251行出现错误,我们在菜单栏中点击文件目录下的高级保存选项
进入之后,将编码由Unicode(UTF-8无签名)更换为简体中文(GB2312)-代码页936
然后再进行生成,这时显示已经成功生成
然后进入tesseract工程下,右键选择生成
等待片刻后即可成功生成
再回到该文件所在的目录中,查找生成的工程文件
你看所有的文件都在此文件夹下面啦,然后我们去配置TESSDATA_PREFIX环境变量
配置TESSDATA_PREFIX环境变量
在tesseract目录中的tessdata文件下应该要下载eng.traineddata文件,这是英文的训练文件,大家按照自己的需要下载需要的文件
下载地址是https://github.com/tesseract-ocr/tessdata
也可以在后期的项目需要中,训练自己的识别库
然后再我的电脑中系统变量中新建一个名为TESSDATA_PREFIX的变量,该变量的值为tessdata文件夹的路径,设置好以后,记得使环境变量生效(ps前面设置环境变量也是要记得使环境变量生效)
测试生成的目标文件
我们随便找了一张图片,命名为binary.tiff;
然后运行cmd命令tesseract.exe binary.tiff out
这时已成功生成out.txt
打开out.txt文件
这时编译的文件已可以开始进行识别工作,做到这里也算是大功告成了!