在vs2013上的编译tesseract-ocr
在vs2013上的编译tesseract-ocr
OCR(Optical Character Recognition):光学字符识别,是指对图片文件中的文字进行分析识别,获取的过程。
Tesseract:开源的OCR识别引擎,初期Tesseract引擎由HP实验室研发,后来贡献给了开源软件业,后经由Google进行改进,消除bug,优化,重新发布。当前版本为3.04.
1 准备工作
1.1 首先是安装vs2013 ultimate
需要注意的是用光盘镜像安装, 首先是用UltraISO将VS2013_RTM_ULT_CHS.iso mount到某个驱动器盘符,例如E:\下. (我采用rar直接解压ISO,发现安装失败,而采用mount ISO安装成功), 然后运行vs_ultimate.exe 安装即可.
1.2 下载tesseract-vs-master.zip和tesseract-vs2013-master.zip
到网站上直接下载zip:
https://github.com/charlesw/tesseract-vs
https://github.com/tesseract4java/tesseract-vs2013
也可以采用git clone方式:
$ git clone https://github.com/charlesw/tesseract-vs.git
$ git clone https://github.com/tesseract4java/tesseract-vs2013.git
至此准备工作完成.
1.3 将上面的包解压到任意目录
本文采用c:\DEVPACK\tesseract-build-vs2013, 最后的目录结构如下:
c/DEVPACK/tesseract-build-vs2013/
+---- tesseract-vs-master/
+---- tesseract-vs2013-master/
2 编译 leptonica
leptonica是一个图像处理和图像分析的开源软件(如libpng, libtiff, libjpeg, zlib等)合集. 是C语言的库. tesseract的库依赖leptonica. 例如:
DEBUG: libtesseract304d.dll=>liblept171d.dll
RELEASE: libtesseract304.dll=>liblept171.dll
2.1 命令批处理编译
编译leptonica很简单, 首先通过 "开始菜单->所有程序->Visual Studio 2013->Visual Studio Tools->VS2013 开发人员命令提示", 进入命令行窗口, cd 到c:\DEVPACK\tesseract-build-vs2013\tesseract-vs2013-master目录下:
c:\DEVPACK\tesseract-build-vs2013\tesseract-vs2013-master>msbuild build.proj
......
142 个警告
0 个错误
已用时间 00:03:39.36
c:\DEVPACK\tesseract-build-vs2013\tesseract-vs2013-master>
如果没有错误, 则编译好了leptonica. 上面的过程或者采用VS2013 IDE编译.
2.2 VS2013 IDE编译
vs2013打开tesseract-vs2013-master/tesseract.sln, 然后就直接编译. 如果需要修改项目配置, 建议采用这种方式编译.
------------------------------
采用以上任何一种方法,编译成功之后,把 tesseract-vs2013-master/release 下面的include, lib目录整体复制到: c:\DEVPACK\tesseract-build-vs2013\. 复制好的目录结构如下:
.../tesseract-build-vs2013/
+---include/
+---lib/
+---tesseract-vs-master/
+---tesseract-vs2013-master/
3 编译 tesseract
用vs2013打开tesseract-build-vs2013/tesseract-vs-master/vs2010/tesseract.sln, 修改下面2个文件的编码:
ccmain\equationdetect.cpp Save As Unicode codepage 1200
ccstruct\linlsq.cpp Save As Unicode codepage 1200
适当修改库目录, 指向 .../tesseract-build-vs2013/lib/Win32 或 .../tesseract-build-vs2013/lib/x64
编译全部. 编译好之后, 用户创建的可执行程序只需要下面2个动态库即可:
libtesseract304.dll
liblept171.dll
4 总结
上面整个过程我花了1天时间摸索整理出来:
开始安装vs2015失败(估计原因是没采用mount ISO的方式), 卸载掉vs2015后, vs2013编译报ws_32.lib找不到.
于是卸载vs2013. 重新安装vs2013.iso失败(rar解压iso安装). 采用mount ISO的方式安装成功. 深刻教训.
tesseract-vs2013-master编译报错,修改部分语法成功.
我的编译偏好是采用:
多线程: /MT (而不是 多线程DLL: /MD). 用户可以根据自己的偏好调整.
如果读者重复我整个过程, 是非常折腾人的, 于是我把本文涉及到的全部内容放到ftp上供大家下载使用:
tesseract-build-vs2013_build20161228#a831db20648f97a1bcd89e99097c1af2.zip
在vs2013上的编译tesseract-ocr的更多相关文章
- OpenBLAS简介及在Windows7 VS2013上源码的编译过程
OpenBLAS(Open Basic Linear Algebra Subprograms)是开源的基本线性代数子程序库,是一个优化的高性能多核BLAS库,主要包括矩阵与矩阵.矩阵与向量.向量与向量 ...
- Tesseract-OCR4.0版本在VS2015上的编译与运行(转)
最近刚开始接触识别库引擎方面的知识,由于项目中需要使用光学识别处理模块,在老师与朋友的推荐下,我开始接触tesseract光学识别库,在最开始从GitHub上下载的源代码进行编译的时候,出现了许多意想 ...
- Visual Studio 2013编译Tesseract 3.04
文章目录 去年时候使用了VS2008编译了Tesseract 3.02版本,主要是参考了一份官方文档,但是对于目前的最新版本并没有给出说明. 本文主要参考了Paul Vorbach的How to bu ...
- Windows上成功编译CoreCLR源代码
昨天得知微软在GitHub上发布CoreCLR的源代码之后,立马从GitHub上签出代码,并尝试在Windows Server 2012上进行编译. 参考CoreCLR的开发者指南(Developer ...
- Tesseract——OCR图像识别 入门篇
Tesseract——OCR图像识别 入门篇 最近给了我一个任务,让我研究图像识别,从我们项目的screenshot中识别文字信息,so我开始了学习,与大家分享下. 我看到目前OCR技术有很多,最主要 ...
- Win7和VS2013上使用Intel的TBB
源地址:http://www.th7.cn/system/win/201505/103966.shtml http://wenku.baidu.com/link?url=zH7vwmWltWF5R-9 ...
- 开源图片文字识别引擎——Tesseract OCR
Tessseract为一款开源.免费的OCR引擎,能够支持中文十分难得.虽然其识别效果不是很理想,但是对于要求不高的中小型项目来说,已经足够用了. 文字识别可应用于许多领域,如阅读.翻译.文献资料的检 ...
- Tesseract–OCR 库原理探索
一,简介: Tesseract is probably the most accurate open source OCR engine available. Combined with the Le ...
- tesseract ocr文字识别Android实例程序和训练工具全部源代码
tesseract ocr是一个开源的文字识别引擎,Android系统中也可以使用.可以识别50多种语言,通过自己训练识别库的方式,可以大大提高识别的准确率. 为了节省大家的学习时间,现将自己近期的学 ...
随机推荐
- hdu1249 三角形分割平面---递推
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1249 题目大意: 用N个三角形最多可以把平面分成几个区域? 思路: 知道了直线和折线分割平面的情况这 ...
- www的构建技术
www的构建技术分别是: html超文本标记语言,页面的文本显示 http超文本传输协议,信息传输转移的约定 url统一资源定位符,客户端浏览超文本的地址集合
- SQL基础----DCL
在之前的文章已经讲到SQL基础DDL(数据库定义语句 http://www.cnblogs.com/cxq0017/p/6433938.html)和 DML(数据库操作语句 http://www.cn ...
- C++ 类模板与模板类详解
在C++的Template中很多地方都用到了typename与class这两个关键字,有时候这两者可以替换,那么这两个关键字是否完全一样呢? 事实上class用于定义类,在模板引入c++后,最初定义模 ...
- JEECG中出现Java.sql.SQLException: Value 'xxxx' can not be represented as java.sql.Timestamp的解决办法
出现`Java.sql.SQLException: Value 'xxxx' can not be represented as java.sql.Timestamp',其中xxxx部分对应包含一个看 ...
- 学习flexible.js
flexible是手淘团队总结的一套移动端适配方案,这篇文章是自己对flexible学习历程的记录,也算是一个备忘. https://github.com/amfe/article/issues/17 ...
- 【BZOJ3233】【tyvj1729】文艺平衡树
原题传送门 解题思路:裸平衡树操作,支持区间翻转即可,这里写了无旋treap. 其实平衡树的区间操作就和线段树差不多,你用个标记搞一下就好了,,,,, #include <stdio.h> ...
- 洛谷P2050 [NOI2012]美食节
动态加边网络流 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring ...
- [ Java学习基础 ] Java构造函数
构造方法是类中特殊方法,用来初始化类的实例变量,它在创建对象(new运算符)之后自动调用. Java构造方法的特点如下: 构造方法名必须与类名相同. 构造方法没有任何返回值,包括void. 构造方法只 ...
- 《cocos2d-x游戏开发之旅》问题2016-10-7
今天按书上做,遇到问题卡住了 书P115 项目是 littlerunner