Visual studio 2013中编译Tesseract3.04源码记录

      我曾在VS2013的C#工程中试用过Tesseract3.04,但是要在C++工程中使用Tesseract3.04,就需要自行编译Tesseract3.04源码。本文记录在Visual studio 2013中编译Tesseract3.04源码的过程和注意事项。

1. 编译Tesseract3.04源码的前序工作

1.1 安装visual studio 2013  

1.2 安装Github windows

1.3 假定编译Tesseract3.04源码的工作在D盘执行,在D盘根目录新建文件夹D:\ tesseract-build

1.4 打开编译Tesseract3.04源码的参考文献

我参考的是在win7/8 64位操作系统下使用vs2013编译tesseract, 感谢原作者!TesseractGithub的仓库中windows下编译Tesseract 3.03rc-1的编译说明中推荐的是How to build Tesseract 3.03
with Visual Studio 2013
。这一篇中需要使用我不熟悉的SVN,故并未参考。

 2. 编译Leptonica1.71

新版本的Tesseract依赖新版的Leptonica, 我们需要把新版的Leptonica编译成需要的lib文件及dll提供给Tesseract调用。版本依赖关系如下:

Tesseract versions and the minimum version of Leptonica required

幸好Github上已有大牛替大家完成这件事,可以使用的有:

https://github.com/charlesw/tesseract-vs2012(charleswNuGet中扩展程序A .Net wrapper for tesseract-ocr的作者,我编译Tesseract3.04源码的参考文献中用的是该程序包)

https://github.com/tesseract4java/tesseract-vs2013 (此仓库的作者是Tesseract官方在windows下编译源码Tesseract3.03时推荐博客的作者,本文使用的是该程序包)

2.1启动Git Shell,进入tesseract-build文件夹,输入以下命令 

       git clone git://github.com/tesseract4java/tesseract-vs2013

      2.2 tesseract-vs2013 clone完成后,打开VS 2013 Developer Command Prompt,点击开始”–>”所有程序”–>”Visual Studio
2013”–>”Visual Studio Tools”–>”VS2013 x64
本机工具命令提示,如果你用的的是英文版,请输入相应的英文选项,然后输入命令:

       msbuild D:\tesseract-build\tesseract-vs2013\build.proj

       完成后结果如下图:

VS2013-Tesseract Build result

      2.3 编译完成后,D:\tesseract-build\tesseract-vs2012\release目录下的includelib文件夹拷贝到D:\tesseract-build目录下。

3. 编译Tesseract3.04源码

3.1 启动Git Shell,进入tesseract-build文件夹,输入以下命令。clone完成后, Tesseract3.04的源码会在D:\tesseract-build\tesseract目录下。

git clone git://github.com/tesseract-ocr/tesseract.git

      3.2 tesseract-vs2013中的vs2013+64bit_support.patch 文件copy D:\tesseract-build\目录下,在git shell中转到D:\tesseract-build\tesseract文件夹下,执行下面命令:

git checkout -b 3.04-vs2013 3.04.00

git am –signoff ../vs2013+64bit_support.patch 

git checkout 3.04-vs2013

执行完上面的命令以后,就可以在下面的路径中看到熟悉的sln文件了:d:\tesseract-build\tesseract\vs2013\tesseract.sln

        3.3此时打开tesseract.sln编译,会出现如下错误: error when compile Tesseract3.04

    “语法错误”

      需要解决字符集问题,找到下面两个文件:

d:\tesseract-build\tesseract-ocr\ccmain\equationdetect.cpp

d:\tesseract-build\tesseract-ocr\ccstruct\linlsq.cpp

      用记事本打开它们,然后另存为同名文件,注意编码选择utf-8,然后替换原有文件

    “无法打开源文件”

       我没有在网络上找到解决方案,我查看了GithubTesseract的源码中确实没有上述文件,因此个人认为可能Tesseract在更新过程中移除或者重命名了上述文件,但是Tesseract-VS2013并未同步更新,所以我的处理方式比较暴力,在Tesseract解决方案资源管理器中移除上述不存在的cpp文件。

     “无法打开包括文件”

      该头文件存在于tesseract/vs2010/port文件夹中,将该头文件拷贝到tesseract/vs2013/port中,或者在现有解决方案中注释掉该头文件均可。

     3.4 tesseract.sln中包含libtesseract304tesseract两个项目。两个项目均需要编译,我选择在x64下编译DLL_Release/DLL_Debug/ LIB_Release/LIB_DEBUG。以DLL_Release为例,编译完成后,在D:\Tesseract-Build\tesseract\vs2013\bin\x64\DLL_Release路径下会出现如下四个文件。

Tesseract build result

4. Tesseract3.04编译结果验证

编译完成后,我们来初步验证一下编译成果。

4.1 将D:\Tesseract-Build\tesseract\vs2013\bin\x64\DLL_Release上面的四个文件copyd:\tesseract-build\lib\x64文件夹下,在cmd命令窗口中确认tesseract及其依赖项的版本:

Tesseract Version

4.2 在d:\tesseract-build\lib\x64文件夹下新建文件夹tessdata,到https://github.com/tesseract-ocr/tessdata下载用于测试的语言文件,我下载的是eng.traineddata将测试图片也放到该文件夹cmd中调用tesseract命令行程序,执行完成后我们会在同一个文件夹下发现一个result.txt文件,结果如下图所示,结果不是特别准确,但是至少证明我们的Tesseract安装成功啦。

Tesseract Result

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Fork me on GitHub