文章目录

去年时候使用了VS2008编译了Tesseract 3.02版本,主要是参考了一份官方文档,但是对于目前的最新版本并没有给出说明。

本文主要参考了Paul Vorbach的How to build Tesseract 3.03 with Visual Studio 2013,在翻译的同时,加上自己的一些经验总结。

编译新版本最大问题在于新版本的Tesseract依赖新版的Leptonica库,后者是一个开源的C语言图像处理包。新版本的Leptonica需要新版的zlib,libpng,libtiff,libjepg和giflib这些库。在Leptonica的官网上只给出了Leptonica 1.68版本的VS2008编译工程(果然还是要掌握点Linux下的开发技巧:D)。那么你需要做的就是需要把新版的Leptonica编译成需要的lib文件及dll提供Tesseract调用,这无疑是一份枯燥繁琐的事。

很幸运的是在GitHub上已经有一个Visual Studio的工程文件包含了所有Tesseract 3.03依赖的文件。charlesw/tesseract-vs2012。这个工程Paul编译后发现了一些错误,然后又fork了一份:tesseract-vs2013

下面是使用Visual Studio 2013编译Tesseract 3.04的所有步骤。

前序工作

1.安装Git。(实际上你可以根据自己习惯直接从GitHub网页上下载源码)。
2.安装SVN,比如SlickSVN
3.安装Visual Studio 2013 for Windows Desktop

编译Leptonica 1.71

1.创建用来编译Tesseract的目录。这里我们假设是C:Tesseract-Build 大专栏  Visual Studio 2013编译Tesseract 3.04.

2.打开cmd命令,改变路径:
cd Tesseract-Build

3.从GitHub上拷贝依赖文件到当前目录:
git clone git://github.com/pvorb/tesseract-vs2013.git

4.打开tesseract-vs2013目录下的工程文件进行编译,注意需要在DLL_Ddebug, DLL_Release, LIB_Debug, LIB_Release每个Solution Configuration下都Build一次。这样编译后得到的lib和dll就是Tesseract所依赖的文件了。

编译Tesseract

1.确保当前路径仍然是C:Tesseract-Build

2.从SVN上获取最新版Tesseract源码:
svn checkout http://tesseract-ocr.googlecode.com/svn/trunk/ tesseract-ocr

3.把路径改成新检出的源码下:
cd tesseract-ocr

4.利用tesseract-vs2013目录下的patch文件:
svn patch ..tesseract-vs2013vs2013+64bit_support.patch

到这里如果都没有问题,那真的要恭喜你!事实上你极有可能在步骤2利用svn导入源码时候就出错了,这时候你首先要感谢下政府,然后你可以从GitHub上直接下载源码包(Tesseract工程已经转移到GitHub上了),得到源码把它拷贝在tesseract-ocr目录下。由于你不是从SVN上导入,所以步骤4就会报错。这时候你就需要手动配置依赖文件,具体过程是这样的:

1)在Tesseract-Build目录下创建includelib文件夹,在include文件夹拷贝C:Tesseract-Buildtesseract-vs2013目录下的一些头文件,包括所有Leptonica的头文件及部分其他库的头文件:

2)将上面步骤编译得到的lib文件及dll文件拷贝到lib目录下:

3)用VS2013打开C:Tesseract-Buildtesseractvs2010目录下的工程,就能够成功编译。如果出现error C2146的错误,需要选择vs2013的菜单“File – Advanced Save Options”中设置Encoding为Chinese Simplified,保存后重新编译。

End

这个月啥都没写,姑且拿这个凑个数吧。

Visual Studio 2013编译Tesseract 3.04的更多相关文章

  1. 关于Visual Studio 2013 编译 multi-byte character set MFC程序出现 MSB8031 错误的解决办法

    转自:http://blog.csdn.net/xiaochunzao/article/details/16987703 Visual Studio 2013 编译旧的 multi-byte char ...

  2. Visual Studio 2013 编译 64 位 Python 的 C 扩展 (使用 PyObject 包装)

    对于 32 位 Python 的 C 扩展,以前用过 mingW32 编译, 但是 mingW32 不支持 64 位 Python 的 C 扩展编译,详情可见 stackoverflow,这位前辈的大 ...

  3. Windows下Visual Studio 2013编译Lua 5.2.3

    1.创建一个Visual C++的Empty Project,如果需要支持Windows XP将Platform Toolset设置为Visual Studio 2013 - Windows XP ( ...

  4. Visual Studio 2013 编译CEF步骤

    If you'd like to build the Chromium Embedded Framework (a wrapper for Chromium, for creating browser ...

  5. Visual Studio 2013编译Mozilla NPAPI 示例注意事项

    1.Platform Toolset设置Visual Studio 2013 - Windows XP (v120_xp). 2.Character Set设置Use Multi-Byte Chara ...

  6. Windows下Visual studio 2013 编译 Audacity

    编译的Audacity版本为2.1.2,由于实在windows下编译,其源代码可以从Github上取得 git clone https://github.com/audacity/audacity. ...

  7. 解决visual studio 2013编译过程中存在的无法打开kernel.lib问题

    1. 出现此类问题的原因 由于原visual studio文件中的安装中出现问题,所以原有的SDK(soft development kits)文件出现缺失: 2. 解决方法1 重新下载SDK工具,安 ...

  8. isual Studio 2013编译ImageMagick---转

    “该文引用自 CruiseYoung的:Visual Studio 2013编译ImageMagick http://blog.csdn.net/fksec/article/details/36008 ...

  9. Visual Studio 2013环境下操作vc6/vc7/vc8等低版本平台项目【编译|生成|调试】

    现代化的开发环境,微软一直在推出更新换代,我们所处的技术环境在日新月异的变化:不过在中国多数人们一边疲惫的追赶着时代的步伐,一边坚守着自己所获悉所掌握的那些紧吧吧的知本.对技术工具的掌握并非他们所想要 ...

随机推荐

  1. look and say 外观数列的python实现

    #look_and_say 外观数列 如果我们把 1 作为Look-and-say 数列的第一项,那么,它的前几项是这样的: 1, 11, 21, 1211, 111221, 312211, 1311 ...

  2. 记录一次追踪@AutoWired的过程

    目录 记录一次追踪@AutoWired的过程 前言 疑惑:依赖究竟是怎么自动注入的 AutoWiredAnnotationBeanPostProcessor中探究 自动注入debug流程追踪 dete ...

  3. jedis异常Broken pipe (Write failed)

    异常:java.net.SocketException: Broken pipe (Write failed); nested exception is redis.clients.jedis.exc ...

  4. Django与AJAX-choice字段-MTV和MVC模型-sweetalert搭建页面

    Django中的choice字段 应用的场景: 用户信息举列:如用户性别.婚否.学历.工作状态等可以列举出来供选择的信息 书写models创建表模型: 数据的获取和查询: 总结: "&quo ...

  5. MTSP问题

    问题描述:m个旅行商去旅游 n个城市,规定都必须从同一个出发点出发,而且返回原出发点,需要将所有的城市遍历完毕,每个城市只能游历一次,但是为了路径最短可以路过这个城市多次.这个就是多旅行商问题.是在T ...

  6. linux进程(二)

    信号管理进程使用kill命令发送信号与进程通信定义守护进程的角色结束用户会话的进程 kill,killall,pgrep,pkill 对于进程的正常关闭的理解正常关闭程序的方法systemctl st ...

  7. JS创建数组的三种方法

    1     常规方式 创建数组并给数组元素赋值 var myCars = new Array(); myCars[0] = "Saab"; myCars[1] = "Vo ...

  8. java中BigDecimal的四舍五入小记

    static class test{ public static void main(String[] args) { BigDecimal b=new BigDecimal(45); BigDeci ...

  9. arduino basic issue

    1.    string char Str1[15]; char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'}; char Str3[8] = {'a', ...

  10. linux 有了源码创建git版本库(coding)

    进入目录,比如ewei_shop 执行 git init 瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),当前目录下多了一个.git的目录,如果没有看到 ...