1.安装软件

安装完毕后,需要将cmake.exe和cppan.exe加入环境变量PATH中

cmake简介

CMake全称为“cross platform make”,是一个开源的跨平台自动化构建系统。使用指定名为CMakeLists.txt的配置文件可以控制软件的构建、测试和打包等流程。同时,通过编写平台无关的CMakeLists.txt文件进行简单的配置,CMake就能生成对应目标平台的构建文件。例如:linux系统的makefile文件、Windows的项目和解决方案(.sln)。

配置包括: 创建哪些项目、项目间的依赖关系、include哪些头文件、编译时生成静态库,动态库还是可执行文件、以及生成的版本: (x86,x64)等。

cppan简介

CPPAN是建立在CMake之上具有构建系统功能的跨平台C / C ++依赖管理器。 它支持快速的脚本式编码和原型制作以及处理大型项目。 可以很方便的查找、共享和重用库以及发布您的项目。你只需要将时间花在代码上,而不需要管理依赖关系。 CPPAN帮您将包装时间降低至几秒钟!它支持简单的交叉编译,继承并且把你自己的设置、标志推送到每个依赖。

CPPAN之于C++就像Maven之于Java。CPPAN可以理解为C++的包管理器,包含了众多依赖包,只需要向CPPAN指定依赖包,CPPAN就会帮你下载好需要的依赖包和相关配置。

CPPAN通过cppan.yml文件配置相关依赖项目。

通过dependencies指令说明依赖项,这里依赖leptoncia,对应的版本为1,这里1表示1.*.*,也就是主版本为1的都可以。

cppan简单使用

2.  生成解决方案(.sln)

下载tesseract源码:

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

生成x64版本的解决方案

cd tesseract   # 进入源代码目录
cppan # 下载相关的的依赖,【下载时间可能很长,需要耐心等待】
mkdir win64 && cd win64
cmake .. -G "Visual Studio 14 2015 Win64"

生成x86版本的解决方案

cd tesseract
cppan
mkdir build && cd build
cmake ..

3. 编译

这里选择x64版本, 打开win64目录下的tesseract.sln,这里选择release模式。选择”生成" -> "生成解决方案"

编译过程中会遇到很多错误,如C2001和C3668,如图:

g_set_error (error, G_KEY_FILE_ERROR,
G_KEY_FILE_ERROR_UNKNOWN_ENCODING,
_("Key file contains unsupported "
"encoding “%s”"), value_utf8); # 上面代码中出现了中文双引号

错误的原因:

其实都是文件编码问题。下载得到的文件编码为UTF-8(不带签名),而Visual Studio (中文版)默认保存的文本文件是GB2312编码,对于UTF-8编码的某些字符,在中文版VS下就容易因解码错误导致乱码造成编译错误。

解决方法: 只需要双击对应的错误,跳转到对应的文件,然后点击左上角菜单 “文件选项" 下的"高级保存选项",选择unicode(utf-8带签名).保存后再“生成"即可。

需要修改的文件:

UTF-8 带签名或者UTF-8 无签名区别:

带签名比无签名开头多了BOM 信息,UTF-8 的 BOM 是 0xEFBBBF,带签名的将更容易被解析器以正确的编码方式进行解析。

建议:

先"生成”项目"cppan-d-b-d", 再“生成"整个解决方案

遇到错误,双击错误,进入错误提示行后,点击左上角菜单 “文件"下的"高级保存选项",选择unicode(utf-8带签名).保存后右击项目选择"生成",逐个解决错误。

效果:

4.安装

找到CMakeTargets中的INSTALL,然后右键选择仅限于项目–>仅生成INSTALL

此外, 还需要将win64\bin\Release目录下的dll拷贝到install\bin目录下

64位默认安装位置为C:/Program Files/tesseract,因此安装需要管理员权限

错误提示如下:

修改程序安装位置

# 通过指定CMAKE_INSTALL_PREFIX设置安装目录
cmake -D CMAKE_INSTALL_PREFIX=D:/tesseract/install -G "Visual Studio 14 2015 Win64" ..

打开解决方案所在目录下的CMakeCache.txt, 查看CMAKE_INSTALL_PREFIX 配置修改是否生效。

5. 环境变量配置

  • 将tesseract.exe所在路径加入环境变量PATH中
  • 添加环境变量TESSDATA_PREFIX,其值为tessdata目录所在路径

训练文件下载下载地址:  https://github.com/tesseract-ocr/tessdata

没有设置TESSDATA_PREFIX,在命令行使用tesseract会出现如下提示:

参考: https://github.com/tesseract-ocr/tesseract/wiki/Compiling#windows

win10 vs2015源码编译tesseract4.0的更多相关文章

  1. win10 vs2015源码编译opencv、opencv_contrib、Tesseract

    1.软件包准备 opencv源码包地址:                官网  github opencv_contrib源码包地址:   github Tesseract源码包地址:        ...

  2. 解决从源码编译ncurses6.0编译lib_gen.c报错的问题

    直接从官网的源码编译时,会提示报错: gcc -DHAVE_CONFIG_H -I. -I../include -D_GNU_SOURCE -DNDEBUG -O2 --param max-inlin ...

  3. Win10 使用MinGW-w64编译Tesseract4.0

    一开始尝试使用mingw+msys编译tesseract, 但是苦于mingw-get安装的软件版本都太旧,要安装新版本只能下载源码编译安装. 在编译过程中遇到了很多麻烦,最后还遇到了包直接循环依赖问 ...

  4. hadoop-1.2.0源码编译

    以下为在CentOS-6.4下hadoop-1.2.0源码编译步骤. 1. 安装并且配置ant 下载ant,将ant目录下的bin文件夹加入到PATH变量中. 2. 安装git,安装autoconf, ...

  5. hadoop-2.0.0-mr1-cdh4.2.0源码编译总结

    准备编译hadoop-2.0.0-mr1-cdh4.2.0的同学们要谨慎了.首先看一下这篇文章: Hadoop作业提交多种方案 http://www.blogjava.net/dragonHadoop ...

  6. 英蓓特Mars board的android4.0.3源码编译过程

    英蓓特Mars board的android4.0.3源码编译过程 作者:StephenZhu(大桥++) 2013年8月22日 若要转载,请注明出处 一.编译环境搭建及要点: 1. 虚拟机软件virt ...

  7. 源码编译安装 PHP5.5.0,解决curl_exec访问HTTPS返回502错误的问题(修改PATH路径)

    最近碰到一个奇怪的问题, PHP使用 curl_exec 访问 HTTPS 网页时, 返回502错误, 访问HTTP网页时没有问题,  用   echo   phpinfo() ;  查看, 支持op ...

  8. hadoop-2.6.0源码编译问题汇总

    在上一篇文章中,介绍了hadoop-2.6.0源码编译的一般流程,因个人计算机环境的不同, 编译过程中难免会出现一些错误,下面是我编译过程中遇到的错误. 列举出来并附上我解决此错误的方法,希望对大家有 ...

  9. Ubantu16.04进行Android 8.0源码编译

    参考这篇博客 经过测试,8.0源码下载及编译之后,占用100多G的硬盘空间,尽量给ubantu系统多留一些硬盘空间,如果后续需要在编译好的源码上进行开发,需要预留更多的控件,为了防止后续出现文件权限问 ...

随机推荐

  1. LGOJ P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

    今天我来给大家带来一片蒟蒻题解 ~~真香 LGOJ P2921  [USACO08DEC]在农场万圣节Trick or Treat on the Farm 题目描述 每年,在威斯康星州,奶牛们都会穿上 ...

  2. linux 安装 ftp 实现文件共享

    转载:http://blog.sina.com.cn/s/blog_165e646820102xe1q.html 参考:1.http://www.cnblogs.com/mrcln/p/6179673 ...

  3. React Native 获取组件(Component)在屏幕上的位置

    年后主客户端的需求以及老的业务迁移RN,现在疯狂的在学RN.在迁移需求的时候遇到需要获取组件在屏幕上的绝对位置.页面如下: 就需要展开的时候获取sectionHeader(默认排序)在屏幕上的具体位置 ...

  4. leetcode 687.Longest Univalue Path

    寻找最长的路径,那么会在左边或者右边或者是从左到跟然后再到右方的路径的. /** * Definition for a binary tree node. * struct TreeNode { * ...

  5. ios 当margin-left margin-right 超过设备宽度

    ios 当margin-left  margin-right过长,相加超过  超过设备宽度时,导致页面不能上下滚动,目前尚未找到解决办法,记录一下

  6. es6里面的arr方法

    es6里面,关于arr的遍历以及查找,新增了很多的方法,对于不同的应用场景,运用合适的方法,可以达到事半功倍的效果: 一, arr.find():用于查找到符合条件的第一个成员,如果没有查找到的话,则 ...

  7. Java基础知识学习思维导图

  8. @EnableScheduling注解

    @EnableScheduling 开启对定时任务的支持       其中Scheduled注解中有以下几个参数: 1.cron是设置定时执行的表达式,如 0 0/5 * * * ?每隔五分钟执行一次 ...

  9. CentOS 7安全加固

    本次实验使用的centos 7 版本 一.查找系统中是否存在空密码账户 1.使用命令: awk -F: '($2==""){print $1}' /etc/shadow 直接查看. ...

  10. Linux之prink原理

    我的分析是基于Linux4.15.1 1.看看kernel是如何调用到console初始化函数的: 分两条线: a.start_kernel  -->  console_init   --> ...