Tesseract-OCR引擎试用 rebuild on vs2012【testing】
来源:互联网 发布:企业文件管理系统源码 编辑:程序博客网 时间:2024/06/09 08:12
http://www.tuicool.com/articles/6ZRJzu
http://blog.csdn.net/zfdxx369/article/details/11540735
1,下载:http://code.google.com/p/tesseract-ocr/
tesseract-ocr-setup-3.02.02.exe: http://code.google.com/p/tesseract-ocr/downloads/detail?name=tesseract-ocr-setup-3.02.02.exe&can=2&q=
安装到目录:C:\Program Files\ Tesseract - OCR
2,默认安装时自动带有英文识别库,要识别简体中文,需要下载文件 tesseract-ocr-3.02.chi_sim.tar.gz: http://code.google.com/p/tesseract-ocr/downloads/detail?name=tesseract-ocr-3.02.chi_sim.tar.gz&can=2&q=
下载后解压,将文件chi_sim.traineddata拷贝到目录:C:\Program Files\Tesseract-OCR\tessdata
3,试试使用Tessract-OCR引擎识别文字:
由于在安装过程中已经自动把目录C:\Program Files\Tesseract-OCR加入到系统环境变量,所以打开cmd控制台,即可输入tesseract执行。
用画图工具弄一张图片试试(图中文字为宋体):
D:\>tesseract 1.jpg 1Tesseract Open Source OCR Engine v3.02 with Leptonica
识别结果为:gaoqunkai lanky
再弄个中文图片试试(图中文字为宋体):
D:\>tesseract 2.jpg 2 -l chi_sim -psm 7 nobatchToo many unichars in ambiguity on line 17497160Too many unichars in ambiguity on line 17497160Too many unichars in ambiguity on line 17517696Tesseract Open Source OCR Engine v3.02 with Leptonica
识别结果为:甲华入民其矛口国
4,备注:
D:\>tesseractUsage:tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]pagesegmode values are:0 = Orientation and script detection (OSD) only.1 = Automatic page segmentation with OSD.2 = Automatic page segmentation, but no OSD, or OCR3 = Fully automatic page segmentation, but no OSD. (Default)4 = Assume a single column of text of variable sizes.5 = Assume a single uniform block of vertically aligned text.6 = Assume a single uniform block of text.7 = Treat the image as a single text line.8 = Treat the image as a single word.9 = Treat the image as a single word in a circle.10 = Treat the image as a single character.-l lang and/or -psm pagesegmode must occur before anyconfigfile.Single options: -v --version: version info --list-langs: list available languages for tesseract engine
tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]
tesseract 图片名 输出文件名 -l 字库文件 -psm pagesegmode 配置文件
例如:
tesseract 2.jpg 2 -l chi_sim -psm 7 nobatch
-l chi_sim:表示用简体中文字库
-psm 7:表示告诉tesseract 2.bmp图片只有一行文本,从而可以减少识别错误率,默认为3。
configfile:参数值为tessdata\configs和tessdata\tessconfigs目录下的文件名。
//////////////////////////////////////////////////////////////////////////
/////////////////////以下为编译记录,乱七八糟,就这样了/////////////////////
//////////////////////////////////////////////////////////////////////////
编译leptonica依赖库
一,zlib-1.2.8,无其他依赖,源代码里提供有vs2012打开并编译:
1,解压到D:\leptonica\dep\zlib-1.2.8
2,打开“VS2012 x86 本机工具命令提示”,cd到D:\leptonica\dep\zlib-1.2.8\zlib-1.2.8\contrib\masmx86目录。
3,执行命令:D:\leptonica\dep\zlib-1.2.8\zlib-1.2.8\contrib\masmx86>bld_ml32.bat
4,用vs2012打开工程:D:\leptonica\dep\zlib-1.2.8\zlib-1.2.8\contrib\vstudio\vc11\zlibvc.sln
5,打开Release的配置,在配置属性 -> 常规,将配置类型改为静态库,MFC的使用改为使用标准 Windows 库,字符集改为使用 Unicode 字符集。C/C++ -> 代码生成,将运行库改为多线程(/MT)。
6,编译生成D:\leptonica\dep\zlib-1.2.8\zlib-1.2.8\contrib\vstudio\vc11\x86\ZlibStatRelease\zlibstat.lib
7,搞定,对应的zlib.h等头文件在D:\leptonica\dep\zlib-1.2.8\zlib-1.2.8目录下。
二,lpng143,依赖zlib,源代码里提供有vs2012打开并编译:
1,解压到D:\leptonica\dep\lpng143
2,打开D:\leptonica\dep\lpng143\lpng143\projects\visualc71\libpng.sln
3,将头文件zconf.h和zlib.h拷贝到D:\leptonica\dep\lpng143\lpng143
4,打开LIB Release的配置,在配置属性 -> 常规,将配置类型改为静态库,MFC的使用改为使用标准 Windows 库,字符集改为使用 Unicode 字符集。C/C++ -> 代码生成,将运行库改为多线程(/MT)。
5,根据编译错误提示:2>LINK : fatal error LNK1181: 无法打开输入文件“D:\leptonica\dep\lpng143\lpng143\projects\visualc71\Win32_LIB_Release\ZLib\zlib.lib”,把库文件zlibstat.lib拷贝到该目录并改名为zlib.lib
6,点击编译,生成文件:libpng.vcxproj -> D:\leptonica\dep\lpng143\lpng143\projects\visualc71\.\Win32_LIB_Release\libpng.lib
三,libjpeg,无其他依赖,源代码里提供有vs2012打开并编译:
1,解压到D:\leptonica\dep\jpegsr8c\jpeg-8c
2,打开“VS2012 x86 本机工具命令提示”,cd到D:\leptonica\dep\jpegsr8c\jpeg-8c目录。
3,执行命令:D:\leptonica\dep\jpegsr8c\jpeg-8c>NMAKE /f makefile.vc setup-v10
4,用vs2012打开工程:D:\leptonica\dep\jpegsr8c\jpeg-8c\jpeg.sln
5,打开Release的配置,在配置属性 -> 常规,将配置类型改为静态库,MFC的使用改为使用标准 Windows 库,字符集改为使用 Unicode 字符集。C/C++ -> 代码生成,将运行库改为多线程(/MT)。
6,编译生成jpeg.vcxproj -> D:\leptonica\dep\jpegsr8c\jpeg-8c\Release\jpeg.lib
四,libtiff,依赖libjpeg和zlib,提供nmake编译:
1,解压到D:\leptonica\dep\tiff-3.9.4\tiff-3.9.4
2,打开“VS2012 x86 本机工具命令提示”,cd到D:\leptonica\dep\tiff-3.9.4\tiff-3.9.4目录。
3,修改nmake.opt
## Uncomment and edit following lines to enable JPEG support.#JPEG_SUPPORT= 1JPEGDIR = D:/leptonica/dep/jpegsr8c/jpeg-8cJPEG_INCLUDE= -I$(JPEGDIR)JPEG_LIB = $(JPEGDIR)/Release/jpeg.lib## Uncomment and edit following lines to enable ZIP support# (required for Deflate compression and Pixar log-format)#ZIP_SUPPORT= 1ZLIBDIR = D:/leptonica/dep/zlib-1.2.8/zlib-1.2.8/ZLIB_INCLUDE= -I$(ZLIBDIR)ZLIB_LIB = $(ZLIBDIR)/contrib/vstudio/vc11/x86/ZlibStatRelease/zlibstat.lib## Uncomment and edit following lines to enable ISO JBIG support##JBIG_SUPPORT= 1#JBIGDIR = d:/projects/jbigkit#JBIG_INCLUDE= -I$(JBIGDIR)/libjbig#JBIG_LIB = $(JBIGDIR)/libjbig/jbig.lib## Uncomment following line to enable Pixar log-format algorithm# (Zlib required).#PIXARLOG_SUPPORT = 1...#下面的/MD改为MT#OPTFLAGS =/Ox /MD /EHsc /W3 /D_CRT_SECURE_NO_DEPRECATEOPTFLAGS =/Ox /MT /EHsc /W3 /D_CRT_SECURE_NO_DEPRECATE
4,打开“VS2012 x86 本机工具命令提示”,cd到D:\leptonica\dep\tiff-3.9.4\tiff-3.9.4目录。
5,执行D:\leptonica\dep\tiff-3.9.4\tiff-3.9.4>nmake /f makefile.vc
6,生成D:\leptonica\dep\tiff-3.9.4\tiff-3.9.4\libtiff\libtiff.lib
五,giflib,我不需要,而且又比较麻烦,不编译了,囧。
参考:http://www.leptonica.org/vs2008doc/building-image-libraries.html
编译leptonica库
1,构建好目录:
BuildFolder\
include\
jpegsr8c\
leptonica-1.68\
lib\
lpng143\
tiff-3.9.4\
zlib-1.2.8\
2,下载leptonica的Microsoft Visual Studio 2008编译包
http://tpgit.github.com/UnOfficialLeptDocs/leptonica/source-downloads.html#microsoft-visual-studio-2008,并解压到leptonica-1.68目录。
3,把D:\leptonica\BuildFolder\leptonica-1.68\src下的所有头文件拷贝到D:\leptonica\BuildFolder\include目录。
4,打开Release的配置,在配置属性 -> 常规,将配置类型改为静态库,MFC的使用改为使用标准 Windows 库,字符集改为使用 Unicode 字符集。C/C++ -> 代码生成,将运行库改为多线程(/MT)。
5,编译,根据出错信息把各个依赖包的头文件拷贝到D:\leptonica\BuildFolder\include目录。
还有一个类似如下出错提示:
..\src\parseprotos.c(552): error C2057: 应输入常量表达式
将对应的static const变量L_BUF_SIZE换为宏定义:
//static const l_int32 L_BUF_SIZE = 512; /* max token size */
#define L_BUF_SIZE 512
6,编译生成D:\leptonica\BuildFolder\leptonica-1.68\vs2008\LIB Release\liblept168-static-mtdll.lib。
参考:http://www.leptonica.org/vs2008doc/building-liblept.html
编译Tesseract-OCR库
1,下载源码:tesseract-ocr-3.02.02.tar.gz和tesseract-ocr-3.02-vs2008.zip
2,将两个包分别解压到
D:\tesseract-ocr-3.02.02
和
D:\tesseract-ocr-3.02.02\vs2008
注意vs2008在tesseract-ocr目录之下。
3,用vs2012打开vs2008里的tesseract.sln工程文件进行升级。
4,编辑libtesseract302项目属性,在VC++目录的包含目录里添加D:\leptonica\BuildFolder\include
在配置属性 -> 常规,将配置类型改为静态库,MFC的使用改为使用标准 Windows 库。C/C++ -> 代码生成,将运行库改为多线程(/MT)。
5,右键点击libtesseract302项目项目,选择生成。有个错误是源文件equationdetect.cpp里存在unicode字符,所以将该文件转换为unicode格式(用notepad ++的格式菜单,转换为UCS-2 Big Endian编码格式即可)。
正常编译生成:D:\tesseract-ocr-3.02.02\vs2008\LIB_Release\libtesseract302-static.lib
VC程序调用库Tesseract-OCR
5,vc调用库Tesseract-OCR
a,首先下载tesseract-3.02.02-win32-lib-include-dirs.zip:https://code.google.com/p/tesseract-ocr/downloads/detail?name=tesseract-3.02.02-win32-lib-include-dirs.zip&can=2&q=
b,将压缩包解压到vc工程对应的目录下(或其他任意目录,比如d:也可以),我这里是vs2012建立的一个mfc工程,也就是在D:\TexasPoker\TexasPoker\tesseract-3.02.02-win32-lib-include-dirs。
c,通过菜单:项目(P) -> 属性(P),打开test属性页。
选择:配置属性 -> VC ++目录,在右边的包含目录和引用目录分别加入tesseract的include目录(D:\tesseract-3.02.02-win32-lib-include-dirs\include)和lib目录(D:\tesseract-3.02.02-win32-lib-include-dirs\lib)。
再选择:配置属性 -> 连接器 -> 常规,在右边的附加库目录加入tesseract的lib目录(D:\tesseract-3.02.02-win32-lib-include-dirs\lib)
再选择:配置属性 -> 连接器 -> 输入,在右边的附加依赖项里加入tesseract的lib库文件,比如静态链接就加入libtesseract302-static.lib。
解决方案配置Debug和Release都需做以上配置操作。
//初始化,设置语言包,中文简体:chi_sim;英文:eng;也可以自己训练语言包 //int rst = m_TessBaseAPI.Init(NULL, "chi_sim", tesseract::OEM_DEFAULT); //api.SetVariable( "tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" ); char *str = "username.bmp"; STRING text_out; bool rst2 = m_TessBaseAPI.ProcessPages(str, NULL, 0, &text_out); if (!rst2) return; const char *rst3 = text_out.string(); return; m_TessBaseAPI.SetImage((unsigned char*)userNameImage->imageData, userNameImage->width, userNameImage->height, userNameImage->nChannels, userNameImage->widthStep); char *outText = m_TessBaseAPI.GetUTF8Text(); CString rstCString(outText); fprintf(stderr, "%s", outText); delete []outText; m_TessBaseAPI.Clear();
转载请保留地址: http://lenky.info/archives/2014/04/2396 或 http://lenky.info/?p=2396
备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来 信 讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从 CC创作共享协议,而一些私人性质较强的心情随笔,建议不要转载。
法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以 Email 或书面等方式告知,本站将及时删除相关内容或链接
- Tesseract-OCR引擎试用 rebuild on vs2012【testing】
- 文字识别引擎试用:tesseract-ocr
- Python_文字识别引擎试用:tesseract-ocr
- 开源OCR引擎Tesseract-OCR
- Tesseract-OCR引擎 入门
- Tesseract-OCR引擎 入门
- Tesseract-OCR引擎 入门
- Tesseract-OCR引擎 入门
- Tesseract-OCR引擎 入门
- 开源OCR引擎Tesseract
- 开源OCR引擎Tesseract
- 开源OCR引擎Tesseract
- Tesseract-OCR引擎 入门
- 开源OCR引擎Tesseract
- Tesseract-OCR引擎 入门
- Tesseract-OCR引擎安装
- Tesseract OCR 引擎-概述
- Tesseract OCR 引擎概述
- 南邮 OJ 1221 最少硬币问题
- Android之system_server与zygote之作用
- QT国际化
- HDU 2594 Simpsons’ Hidden Talents (KMP)
- 论 f.getModifiers() & Modifier.FINAL &Modifier.STATIC 如何成立
- Tesseract-OCR引擎试用 rebuild on vs2012【testing】
- iOS开发中的测试框架
- PIC常见错误-不定期更新
- 反射例子
- 根据前序遍历和中序遍历构建二叉树
- Android 图片闪烁的效果
- Helix server 使用说明
- 在vc6引入自己在VS编译生成的lib时出现 invalid or corrupt import object: unknown version的问题
- 南邮 OJ 1222 序关系计数问题