tesseract 编译与使用(windows)
tesseract是google的一个开源OCR项目,项目地址已经迁移到github(现在 2016/09),地址 https://github.com/tesseract-ocr/tesseract
首先使用git将代码clone到本地。使用最新的commit, SHA-1: c943fc1a339d6378f34cccf4ff96949adb2f37ec
编译步骤参考 https://github.com/tesseract-ocr/tesseract/wiki/Compiling
下面是详细步骤和相关问题解决方法
我使用的VS2010
1.安装cmake 并添加到环境变量.下载地址 https://cmake.org/download/
2.安装cppan 并添加到环境变量,下载地址 https://cppan.org/client/cppan-master-win32-client.zip
3.在你本地的源码目录tesseract下执行下列命令
cppan
mkdir build && cd build
cmake .. -DSTATIC=1
注意:cppan执行过程中可能需要FANQIANG。
4.在tesseract\build目录下生成了项目文件,使用VS打开tesseract.sln,如下

启动项目是ALL_BUILD,解决方案配置我使用的是 Release。开始编译,当然这过程中会出现一大堆错误和警告,不用理会静静等待编译完成
1.使用可以转换编码格式的工具,将 tesseract\ccmain\equationdetect.cpp 的格式转化下。 我使用的是 Notepad ++ ,格式->转为 ANSI 编码格式
原因:tesseract的源文件的编码格式是UTF-8的,但是中文系统下VS里的代码页编码格式是GB2312
2.bool相关,根据错误信息定位到pvt.cppan.demo.gif这个项目,我的是 pvt.cppan.demo.gif-5.1.4.vcxproj ,双击打开之,然后在项目中找到 stdbool.h,然后将
#define bool _bool
更换为
#define bool int
3. snprintf相关,根据错误信息定位到pvt.cppan.demo.tiff这个项目,我的是 pvt.cppan.demo.tiff-4.0.6,双击打开之,然后在项目中找到 tiffiop.h ,定位到
#if !defined(HAVE_SNPRINTF) && !defined(HAVE__SNPRINTF)
#undef snprintf
将下面的3行换成
#define snprintf _snprintf
//extern int snprintf(char* str, size_t size, const char* format, ...);
#endif
然后切换到 tesseract.sln ,清理解决方案重新编译一遍。
然后将 tesseractmain 设为启动项目,编译。
编译步骤到此结束,可执行文件在 tesseract\build\bin\Release 下,但是现在还不能直接用,没有语言包。
语言包下载地址
英文 https://github.com/tesseract-ocr/tessdata/raw/master/eng.traineddata
简中 https://github.com/tesseract-ocr/tessdata/raw/master/chi_sim.traineddata
繁中 https://github.com/tesseract-ocr/tessdata/raw/master/chi_tra.traineddata
创建一个tessdata目录,和tesseract.exe同级,将下载的语言包复制到tessdata目录下。然后打开cmd,执行命令就可以看到结果
tesseract.exe test.png -l eng+chi_sim result
test.png 是待识别的图片
-l eng+chi_sim 指定识别语言为英文和简体中文,多语言使用+连接
result 指定输出的文本文件
更多的命令请参考 https://github.com/tesseract-ocr/tesseract/wiki/Command-Line-Usage
tesseract 编译与使用(windows)的更多相关文章
- QWT编译与配置-Windows/Linux环境
QWT编译与配置-Windows/Linux环境 QWT和FFTW两种开源组件是常用的工程软件支持组件,QWT可以提供丰富的绘图组件功能,FFTW是优秀数字波形分析软件.本文使用基于LGPL版权协议的 ...
- coturn编译运行在Windows平台
turn 编译安装到Windows平台 https://www.webrtc-experiment.com/docs/TURN-server-installation-guide.html#windo ...
- 3DSlicer源代码编译过程vs2008+windows xp [转]
一 下载QT源代码编译 1. 简述 在 Windows2000/xp/vista 下,安装 VS2008, QT 4.7.2 :并在 VS2008上建立 QT 的集成开发环境,利用 VS2008 ...
- VIM大作战之C++简易集成编译环境(Windows篇)
一切都要从这篇文章说起 Vim 实在是精致独特得有点像个林妹妹.但谁要是希望家里也有个林妹妹,光把自家丫头照着绣像打扮打扮是不行的,必须从零开始养成一个.而且就算真能养出来个“天上掉下来”一般的可人儿 ...
- python2.7 串口操作方式 编译 .py为windows可运行exe文件
一 python操作串口 首先下载安装串口模块pyserial . 代码实现: import serial ser = serial.Serial('/dev/ttyUSB2', 115200) pr ...
- Win10上编译CoreCLR的Windows和Linux版本
一.编译环境 首先,不管是Windows还是Linux版本CoreCLR的编译,都是在Windows10上进行的. 二.CoreCLR for Windows 在Windows上做编译怎么能少得了Vi ...
- VS源码编译QuaZip(Windows下)
最近写个Qt demo,想要使用压缩和解压多个文件的功能,并不使用额外进程.网上参考了很多资料,发现只有QuaZip比较适合我的需求.但是QuaZip只提供源码,因此需要自己来编译. QuaZip简介 ...
- Sublime Test 3 搭建C++11编译环境(Windows)
0. 我的环境: Windows 8.1,Sublime Test 3 - Build 3126,CodeBlocks 16.01. 1. 下载Sublime Test 3,以及安装Package和各 ...
- 编译libevent源代码(Windows)
学习笔记,只是记录本次成功用libevent源代码进行编译.环境为MinGW+VS2008+Msys. 0.下载libevent库 http://libevent.org/ 下载stable稳定版的库 ...
随机推荐
- log4jWARN Please initialize the log4j system properly解决办法
原因是没有对log4j这个jar进行文件配置. 要解决这个问题非常简单,建立LOG4J 的配置文件即可.在src 目录下创建配置文件,选择菜单File > New > File,文件名输入 ...
- NPOI的使用Excel模板导出
private string ExportScMeeting(DataTable source) { string templateFile = Server.MapPath(@"Excel ...
- HBase 的表结构
HBase 的表结构 2016-10-13 杜亦舒 HBase 是一个NoSQL数据库,用于处理海量数据,可以支持10亿行百万列的大表,下面就了解一下数据是如何存放在HBase表中的 关系型数据库的表 ...
- iOS开发 iOS9横屏后状态栏隐藏处理
- (BOOL)prefersStatusBarHidden { return NO; }
- js 刷新窗口
在js 方法里面 1.window.opener.location.reload() 刷新父窗口 2.window.location.reload() 该方法强迫浏览器刷新当前 ...
- Oracle之常见问题诊断方法
Oracle认证:常见问题诊断方法如下: 1.TNS-12154 Error 或ORA-12154 特征:SQL*NET没有找到连接串或别名 原因1:(1)没有找到TNSNAMES.ORA文件,该文件 ...
- [sqoop1.99.6] 基于1.99.6版本的一个小例子
1.创建mysql数据库.表.以及测试数据mysql> desc test;+-------+-------------+------+-----+---------+------------- ...
- js--内容判断(依赖于jq)
/** * 判断是否为空 * @param {Object} $element */ function nullVerify($element) { if(!$element.val() && ...
- 课程作业01:模仿JavaAppArguments.java示例,编写一个程序,此程序从命令行接收多个数字,求和之后输出结果。
1.设计思想: 首先是从JavaAppArguments.java示例开始,此示例已打印参数,定义数字 之和和作为存储单位的整型,然后将输入参数的字符串转化为整型,之后求和即可. 2.程序流程图: 3 ...
- log4j输出日志到文件
输出端Appender Appender用来指定日志信息输出到哪个地方,可以同时指定多个输出目的地.Log4j允许将信息输出到许多不同的输出设备中,一个log信息输出目的地就叫做一个Appender. ...