Tesseract API 在 Visual Studio 2013中的配置以及调用
转载:
https://blog.****.net/wz22881916/article/details/51548475
一、配置
tesseract库下载
想要在VS中使用Tesseract库,必须使用经过相对应的VS版本编译过的dll以及lib。比如在VS 2013中,就必须使用在VS 2013中编译过的Tesseract库。
这里我给出经过VS 2013编译的Tesseract库, 下载地址: http://pan.baidu.com/s/1o7JqXmU
有了Tesseract库之后,我们便在VS 2013中配置环境以及包含库了。
引入头文件
在“解决方案管理器”窗口–>右键“Tesseract Demo”工程–>“属性®”–>“配置属性”–>“C/C++”–>“常规”–>“附加包含目录”: 在“Tesseract Demo”工程中所有“活动解决方案平台”的所有“活动解决方案配置”中都添加如下内容:
D:\Tesseract 3.0\include
D:\Tesseract 3.0\include\leptonica
D:\Tesseract 3.0\include\tesseract
添加属性表
首先将“D:\Tesseract 3.0\include”目录拷贝到本地工程“Tesseract Demo”所在目录。
然后进行以下设置:
在“解决方案管理器”所在区域,切换到“属性管理器”窗口;
右键“Tesseract Demo”工程–>“添加现有属性表(E)…”–>在“Tesseract Demo\include”目录下找到“tesseract_versionnumbers.props”–>“打开”;
配置库文件
在“解决方案管理器”窗口–>右键“Tesseract Demo”工程–>“属性®”–>“配置属性”–>“连接器”–>“常规”–>“附加库目录”: 在“Tesseract Demo”工程中所有“活动解决方案平台”的所有“活动解决方案配置”中都添加如下内容:
D:\Tesseract 3.0\Lib
添加预定义
在“解决方案管理器”窗口–>右键“Tesseract Demo”工程–>“属性®”–>“配置属性”–>“C/C++”–>“预处理器”–>“预处理器定义”–>按“活动解决方案配置”类型“添加”如下列表中的“预定义”内容:
WIN32
_WINDOWS
NDEBUG
USE_STD_NAMESPACE
_DEBUG
_CONSOLE
_LIB
_CRT_SECURE_NO_DEPRECATE
添加附加库
在“解决方案管理器”窗口–>右键“Tesseract Demo”工程–>“属性®”–>“配置属性”–>“连接器”–>“输入”–>“附加依赖项”–>按“活动解决方案配置”类型“添加”如下列表中的“附加库”内容:
ws2_32.lib
user32.lib
jpeg.lib
liblept168.lib
libpng.lib
libtesseract302.lib
libtiff.lib
zlibstat.lib
注意:
如果出现dll文件报错的情况,可以将:“D:\Tesseract 3.0\dll”中的
libtesseract302.dll
liblept168.dll
拷贝到“C:\Users\admin\Documents\Visual Studio 2013\Projects\Tesseract Demo\Tesseract Demo”目录下。
二、测试
代码及路径
将待识别图片拷贝到“C:\Users\admin\Documents\Visual Studio 2013\Projects\Tesseract Demo\Tesseract Demo”目录下。
main函数如下所示:
#include "baseapi.h"
#include "allheaders.h"
int main()
{
char *outText;
tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
// Initialize tesseract-ocr with English, without specifying tessdata path
if (api->Init(NULL, "eng"))
{
fprintf(stderr, "Could not initialize tesseract.\n");
exit(1);
}
// Open input image with leptonica library
Pix *image = pixRead("./2.png");
api->SetImage(image);
// Get OCR result
outText = api->GetUTF8Text();
printf("---- OCR output:---- \n%s", outText);
// Destroy used object and release memory
api->End();
delete[] outText;
pixDestroy(&image);
system("Pause");
return 0;
}
识别结果: