在VS2013 C++工程中运行Tesseract APIExample
Tesseract在Github中有一项名为APIExample的wiki,该wiki的作用是提供在C++中使用tesseract-ocr API的范例。若这些范例可以正常运行,那么可以认为tesseract-ocr以及相关依赖项已正确安装。本文介绍Tesseract APIExample其中一个范例的正确的打开方式(该方法适用于在opencv工程中使用Tesseract)。
1. 运行Tesseract APIExample的前序工作
1.1 在正式尝试本文记录的方案之前,请您确认tesseract-ocr以及相关依赖项已正确安装,安装方法请参考Visual studio 2013中编译Tesseract3.04源码记录
1.2 本文提及示例的运行环境 win10+VS2013(64)+Tesseract-ocr 3.04.
1.3 本文假设Tesseract-ocr 3.04的安装路径为D:\ tesseract-build
1.4 我在尝试编译Tesseract APIExample的过程中参考的内容,感谢原作者:
http://stackoverflow.com/questions/8153569/tesseract-ocr-how-to-includ-baseapi-h
2. 部署Tesseract源码编译得到的.h和lib文件
Tesseract编译安装完成后,在D:\ tesseract-build路径下文件夹结构如下:
为了能在VS2013的C++工程中正确的使用tesseract-ocr,我们现在开始对上述文件夹的内容进行一些调整:
1. 在D:\ tesseract-build\inlcude文件夹下新建tesseract文件夹,该文件夹路径为D:\ tesseract-build\inlcude\tesseract。在D:\ tesseract-build\itesseract源码文件夹中使用搜索功能,找到所有的.h文件,将所有的.h文件copy到D:\ tesseract-build\inlcude\tesseract目录下。
2. 将D:\Tesseract-Build\tesseract\vs2013\tesseract.sln 编译生成的lib,dll文件拷贝到D:\Tesseract-Build\lib\x64下。编译生成内容所在路径为D:\Tesseract-Build\tesseract\vs2013\bin\x64,生成目录有DLL_Release/DLL_Debug/LIB_Release/LIB_DEBUG,这是个目录下的libTesseract304.lib等等文件。
3. 部署Tesseract APIExample示例
3.1 新建一个C++ windows console工程,将范例的源码拷贝到main.cpp中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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("/usr/src/tesseract/testing/phototest.tif"); 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); return 0; } |
3.2 项目属性—>配置属性–>C/C++–>常规,在“附加包含目录”中添加:
D:\Tesseract-Build\include;D:\Tesseract-Build\include\leptonica;
3.3 项目属性–>链接器–>常规,在”附加库目录”中添加D:\Tesseract-Build\lib;D:\Tesseract-Build\lib\x64;
3.4 项目属性–>链接器–>输入,在“附加依赖项”中添加liblept171.lib;libtesseract304.lib;
3.5 在工程目录下新建文件夹tessdata,到tesseract下载相应的语言文件,copy到tessdata文件目录下。
3.6 将liblept171.dll, liblept171d.dll, libtesseract304.dll, libtesseract304d.dll文件拷贝至.project同路径的目录下。
3.7 选取待测试图像,放在工程目录下。将源代码中测试图像的路径更换为此路径。
若tesseract-ocr以及相关依赖项已正确安装,那此时程序就可以正常运行啦,运行结果如下图所示:
识别结果中还是有一些很明显的错误。
4. opencv和Tesseract的应用结合
Github中opencv和opencv_contrib关于Tesseract的issues中有很多人问到如何在opencv工程中使用Tesseract。绝大部分回答都说需要通过Cmake-gui编译Tesseract。经过验证,我在填写Tesseract_INCLUDE_DIR和Tesseract_LIBRARY的值后,configure,始终出现Tesseract:No。opencv在Github的仓库中关于使用Tesseract的issue中只说明了必须要实现configure为“Tesseract:Yes”,但并未说明方法,我也没有找到在configure时实现“Tesseract:Yes”的方法。有了解缘由的同学还请不吝赐教,非常感谢!
经过实验验证,按照上述方案配置Tesseract,在opencv工程中即可成功使用Tesseract,下一篇文章我会跟大家一起分享一个opencv和Tesseract联合使用的工程。当然我所说的成功使用可能和issue上说的范例并不是同一件事,有待进一步验证。