VS2010编译使用Tesseract OCR 静态库

时间:2022-05-26 09:05:27

一、编译Tesseract OCR 库

1、去GooggleCode上面下载以下源代码:

tesseract-ocr-3.02.02.tar.gz   //tesseract源代码

tesseract-ocr-3.02-vs2008.zip     //vs2008工程文件

leptonica-1.68-win32-lib-include-dirs.zip   //tesseract依赖的leptonica的lib和dll文件

2.先解压tesseract-ocr-3.02-vs2008.zip,解压目录下会有一个tesseract-ocr文件夹。

再将leptonica-1.68-win32-lib-include-dirs.zip 直接解压到相同的目录下,此时目录结构类似于这样:

tesseractvs2010
├─include              //保存leptonica-1.68-win32-lib-include-dirs.zip解压后头文件
│  └─leptonica
├─lib   //保存leptonica-1.68-win32-lib-include-dirs.zip解压后库文件
├─tesseract-ocr    // 保存tesseract源代码以及vs2008工程文件

再将tesseract-ocr-3.02.02.tar.gz直接解压到tesseract-ocr文件夹下,此时注意有一个子文件夹vs2008\port冲突,

直接把前者port文件夹里面的文件复制进去就行了。

3.直接打开tesseract-ocr\tesseract.sln,按vs2010的提示自动转换工程。

完成后选择编译配置LIB_Debug,编译。

编译过程会出现以下错误:

1>  equationdetect.cpp
1>..\..\ccmain\equationdetect.cpp : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>..\..\ccmain\equationdetect.cpp(251): error C2146: 语法错误: 缺少“}”(在标识符“銆”的前面)
1>..\..\ccmain\equationdetect.cpp(251): error C2146: 语法错误: 缺少“;”(在标识符“銆”的前面)
1>..\..\ccmain\equationdetect.cpp(251): error C2065: “銆”: 未声明的标识符
1>..\..\ccmain\equationdetect.cpp(251): error C2146: 语法错误: 缺少“;”(在标识符“銆”的前面)
1>..\..\ccmain\equationdetect.cpp(251): error C2065: “銆”: 未声明的标识符
1>..\..\ccmain\equationdetect.cpp(251): error C2146: 语法错误: 缺少“;”(在标识符“銆”的前面)
1>..\..\ccmain\equationdetect.cpp(251): error C2065: “銆”: 未声明的标识符
1>..\..\ccmain\equationdetect.cpp(251): error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>..\..\ccmain\equationdetect.cpp(253): error C2065: “kCharsToEx”: 未声明的标识符
1>..\..\ccmain\equationdetect.cpp(253): fatal error C1903: 无法从以前的错误中恢复;正在停止编译

这是错误由于文件编码格式引起的。

解决方法:

  双击错误中的一行,打开文件equationdetect.cpp,选择菜单“文件 -- 高级保存选项”,

在窗口中选择“简体中文(gb2312)-代码页936”,保存后重新编译即可。


此时会报一个复制文件出错的编译错误,不过不影响,因为静态库文件已经生成成功了,

就在tesseract-ocr\LIB_DEBUG目录下。暂时不知道这个错误怎么消除。

如果选择LIB_RELEASE配置选项,就不会出现这个复制文件的错误。-_-


默认是动态链接到CRT运行库的,可以自己将其修改为静态链接CRT,重新编译即可。