最近参加一个比赛需要在图片中识别文字,网上查找资料可以通过Tesseract实现,Tesseract-OCR是用HP公司团队开发Google团队维护的开源OCR引擎。这里主要说明Tesseract在OpenCV+VS下的环境配置和实现问题。
这里用到的工具(其他版本也类似):
OpenCV3.1.0+Visual Studio2015+Cmake+cppan+tesseract-master
一、下载相关工具
1、下载Cmake。https://cmake.org/download/
这里使用的是cmake-3.10.3-win64-x64版本,直接进行解压即可。将F:\cmake-3.10.3-win64-x64\bin(根据你解压的路径)文件路径加入到环境变量Path中,Cmake配置完成。
2、下载cppan。https://cppan.org/client/
这里下载的是cppan-master-Windows-client.zip。解压后是cppan.exe。将cppan.exe所在的文件路径加入到环境变量Path中,cppan就设置完成了。
3、下载tesseract-master。https://github.com/tesseract-ocr/tesseract
下载tesseract-master,解压到相应位置。
二、编译生成tesseract工程文件
1、运行cppan,下载支持库。
在搜索栏中键入PowerShell(一种命令行外壳程序和脚本环境),选择Windows PowerShell打开。
2、运行Cmake,编译生成相关工程。
在Windows PowerShell下运行cmake .. -G "Visual Studio 14 2015 Win64",注意这里-G "Visual Studio 14 2015 Win64"表示是运用VS2015进行编译,生成64位的工程,如果不加生成的是32位的,另外这里是由两个点。
这时在tebuild文件夹下生成了工程tesseract.sln。
三、使用Visual Studio2015对tesseract进行编译。
首先使用Visual Studio2015打开tesseract.sln,分别选择64位Debug和Release平台,然后在菜单栏生成目录下选择生成解决方案。这一过程一般需要花费几分钟时间,
第一次生成时一般会出现错误,是由于编码原因造成的,这是双击出错的位置,定位到出错的文件,在文件菜单中选择高级保存选项将其中的编码由Unicode(UTF-8无签名)-代码页65001更换为简体中文(GB2312-80)-代码页20936。重新进行生成。
然后选中解决方案管理器中INSTALL选项,右键选择仅用于项目—>仅生成INSTALL(B)。
注意观察生成窗口显示的信息,在 C:/Program Files/tesseract目录下生成了相应的文件(这里以Debug下为例),终于见到了bin、include、lib等熟悉的名字,其实就是生成的库文件,Release情况也类似。
四、在Visual Studio 2015中配置环境
上一步编译生成的文件C:/Program Files/tesseract下分别包括了Debug和Release的库,可以将C:/Program Files/tesseract文件从C盘中剪切到其他盘里面(强迫症呀),这里我放到了F盘。在步骤二中建立的F:\tesseract-master\tebuild文件夹下bin文件夹下查找所有的.dll文件,并复制到刚才从C盘复制的文件夹F:\tesseract\bin下。
打开一个VS工程,进行环境配置。
分别打开属性管理器的Debug|x64和Release|x64下的属性页
整个的配置是在原来的基础上添加这些内容,不删除之前配置的OpenCV的一些环境。
然后将F:\tesseract\bin;加入到环境变量中,否则会提示找不到相应的.dll文件,如果这里报错,可以重新打开工程。
还有一个非常重要的步骤,需要在F:\tesseract-master\tessdata目录下放入训练数据包,可在https://github.com/tesseract-ocr/tessdata进行下载,其中eng.traineddata用于识别英文,chi_sim.traineddata用于识别简体中文,当然也可以生成自己的训练数据库,这样更加贴合自己的实际任务。
至此整个的配置过程结束,下面通过一个例子进行测试。
Reference:
http://lib.csdn.net/article/deeplearning/67228