机缘巧合之下,得以自己把Tesseract4.0在VS2017下自己编译了一遍。
主要参考的是http://livezingy.com/compilation-tesseract4-in-vs2017-win10/。
由于小白没用过cmake,和cpan,因此按照这个配置起来有点吃力,主要是这两个东西使用的问题。
1.鉴于可能有朋友像我一样白到没用过cmake和cpan,首先说一下。
Cppan:CPPAN可以理解为C++的包管理器,包含了众多依赖包,只需要向CPPAN指定依赖包,CPPAN就会帮你下载好需要的依赖包和相关配置,放到某个源码中,假如源码中含有cppan.yml文件,即可在命令行中输入,自动下载相关依赖项。
Cmake:CMake的全称是“cross platform make”,简单来说CMake通过读取CMakeLists.txt配置文件,在Linux下就能生成Makefile,而在Windows下,就能生成Visual Studio项目和解决方案。
2.下载各种文件
2.1下载最新的CPPAN版本。解压缩后,将cppan.exe所在的路径添加到系统变量中;
https://cppan.org/client/cppan-master-Windows-client.zip
2.2下载cmake,本文用的是cmake-3.10.1-win64-x64,将cmake.exe所在的路径添加到系统变量中;
https://cmake.org/download/
2.3下载Tesseract源码,
https://github.com/tesseract-ocr/tesseract
3.执行代码
3.1首先将将cppan.exe放到Tesseract源码的文件中;
3.2 在命令行中进入到tesseract-master的解压目录下,本文路径为D:\Tesseract4\tesseract-master,依次执行如下命令:
Cppan
mkdir build && cd build
cmake .. -G "Visual Studio 15 2017 Win64"
假如cppan不是命令,应检查cppan.exe放到Tesseract源码的文件夹中,本文是放到"D:\Tesseract4\tesseract-master\”目录下。
假如cppan失败,把C:\Users\username\.cppan\,删除后继续执行cppan命令。
4上述命令执行完成后,在D:\Tesseract4\tesseract-master\build目录下会生成tesseract.sln,打开并编译。
一般这一步都会因为字符集的问题出错,我遇到的错误与pango-language-sample-table.h和equationdetect.cpp这两个文件有关, 解决方案:
打开pango-language-sample-table.h(文件路径 C:\Users\username\.cppan\storage\src\6d\18\4aef\pango),打开VS2017的“高级保存选项”选择”Unicode(UTF-8 带签名)”并保存;
打开equationdetect.cpp(文件路径 D:\Tesseract4\tesseract-master\ccmain),打开VS2017的“高级保存选项”选择”简体中文(GB2312-80)”并保存;
上述处理完成后,可以顺利完成编译。
3 编译完成后,在“解决方案资源管理器”中点选“解决方案 tesseract”–>“CMakeTargets”–>“INSTALL”,单击右键,在出现的菜单中选择“生成”。Debug和release模式下需要分别执行上述步骤,默认的安装内容和路径如下图:
2 上述命令执行完成后,在D:\Tesseract4\tesseract-master\build目录下会生成tesseract.sln,打开并编译。
一般这一步都会因为字符集的问题出错,我遇到的错误与pango-language-sample-table.h和equationdetect.cpp这两个文件有关, 解决方案:
打开pango-language-sample-table.h(文件路径 C:\Users\username\.cppan\storage\src\6d\18\4aef\pango),打开VS2017的“高级保存选项”选择”Unicode(UTF-8 带签名)”并保存;
打开equationdetect.cpp(文件路径 D:\Tesseract4\tesseract-master\ccmain),打开VS2017的“高级保存选项”选择”简体中文(GB2312-80)”并保存;
上述处理完成后,可以顺利完成编译。那么VS2017的”高级保存选项”在哪里呢?本文后面的踩坑记录中会有说明。
3 编译完成后,在“解决方案资源管理器”中点选“解决方案 tesseract”–>“CMakeTargets”–>“INSTALL”,单击右键,在出现的菜单中选择“生成”。Debug和release模式下需要分别执行上述步骤,默认的安装内容和路径如下图:
在VS2017 C++工程中调用Tesseract4.0
在VS中调用Tesseract4.0是一个十分复杂的过程,经过百折不挠的尝试,我终于在VS2017 C++工程中成功调用了Tesseract4.0,步骤如下:
1. 找到所有依赖lib文件并整理
编译tesseract.sln并安装之后,在C:/Program Files/tesseract/lib路径下仅有tesseract400.lib和tesseract400d.lib,但在工程中调用Tesseract4.0时,仅有这两个文件是不够的,为了方便调用,我们要找到其他的lib文件,它们在这里:C:\Users\username\.cppan\storage\lib,包含重要的pvt.cppan.demo.danbloomberg.leptonica-1.74.4.lib。
在C:/Program Files/tesseract/lib路径下分别创建Debug和Release文件夹,将编译得到的所有lib文件分别拷贝到新建的Debug和Release文件夹中。
2.找到所有依赖dll文件并整理
在C:/Program Files/tesseract/bin路径下仅有tesseract400.dll和tesseract400d.dll,其他的dll文件在这里:D:\Tesseract4\tesseract-master\build\bin。在C:/Program Files/tesseract/bin路径下分别创建Debug和Release文件夹,将编译得到的所有dll文件分别拷贝到新建的Debug和Release文件夹中。
3. 找到leptonica所需要的头文件并整理
在C:/Program Files/tesseract/include路径下仅有tesseract的头文件,而调用Tesseract4.0也需要leptonica的头文件,它们在这里:C:\Users\username\.cppan\storage\src\2a\b4\6dbf\src。在C:/Program Files/tesseract/include路径下新建leptonica文件夹,将leptonica相关的所有头文件都拷贝到新建的leptonica文件夹中。
另外将endianness.h也拷贝到新建的leptonica文件夹中,它在这里:C:\Users\username\.cppan\storage\obj\2a\b4\6dbf\build\08a5fd0d\cppan\2ab46dbf
4. 新建VS2017 C++工程,下载https://github.com/cppan/tesseract_example/blob/master/with_cppan/main.cpp并添加到该工程中。
4.1 项目属性—>配置属性–>C/C++–>常规,在“附加包含目录”中添加:
C:\Program Files\tesseract\include\leptonica;C:\Program Files\tesseract\include\tesseract;C:\Program Files\tesseract\include;
4.2 项目属性–>链接器–>常规,在”附加库目录”中添加C:\Program Files\tesseract\lib\Debug;C:\Program Files\tesseract\lib;C:\Program Files\tesseract\lib\Release
4.3 项目属性–>链接器–>输入,在“附加依赖项”中添加pvt.cppan.demo.danbloomberg.leptonica-1.74.4.lib;tesseract400d.lib;
4.4 在工程目录下新建文件夹tessdata,到tesseract下载相应的语言文件,copy到tessdata文件目录下。
注意:文件的路径可能不一样,假如没有该路径,在其他路径下必能找到。文件目录均在C:\Users\username\.cppan\storage\lib下。
注意:
Visual Studio 2017 的“高级保存选项”
Visual Studio提供高级保存选项功能,它能指定特定代码文件的编码规范和行尾所使用的换行符。在Visual Studio 2017中,该命令没有默认显示在“文件”菜单中。用户需要手工设置,才能显示该命令。操作方法如下:
1.1 单击“工具”|“自定义”命令,弹出“自定义”对话框。
1.2 单击“命令”标签,进入“命令”选项卡。
1.3 在“菜单栏”下拉列表中,选择“文件”选项。
1.4 单击“添加命令”按钮,弹出“添加命令”对话框。
1.5 在“类别”列表中,选择“文件”选项;在“命令”列表中,选择“高级保存选项”选项。
1.6 单击“确定”按钮,关闭“添加命令”对话框。
1.7 选中“控件”列表中的“高级保存选项”选项,单击“上移”或者“下移”按钮,调整该命令的位置。
1.8 单击“关闭”按钮,完成“高级保存选项”命令的添加操作。