我在Visual Studio 2010中有一个C ++项目,并希望使用OCR。我遇到了很多"教程"对于Tesseract,但遗憾的是,我得到的只是头痛和浪费时间。
在我的项目中,我将图像存储为 Mat 。我的问题的一个解决方案是将此Mat保存为图像(例如image.jpg),然后像这样调用Tesseract可执行文件:
system("tesseract.exe image.jpg out");
哪个输出 out.txt 然后我调用
infile.open ("out.txt");
读取Tesseract的输出。
这一切都很好,就像椅子一样,但它不是最佳解决方案。在我的项目中,我正在处理一个视频,所以保存/调用.exe / write / read 10+ FPS并不是我真正想要的。我想将Tesseract实现为现有代码,以便能够将Mat作为参数传递并立即以字符串形式获得结果。
您是否知道使用Visual Studio 2010实施Tesseract OCR的任何好教程(首先是一步一步)?或者你自己的解决方案?
答案 0 :(得分:18)
好的,我发现它但它仅适用于发布和 Win32 配置(无调试或x64)。 Debug配置下有许多链接错误。
所以,
1. 首先,在此处下载准备好的库文件夹(Tesseract + Leptonica):
2。将tesseract.zip
提取为C:\
3. 在Visual Studio中,转到C/C++ > General > Additional Include Directories
插入C:\tesseract\include
4。在Linker > General > Additional Library Directories
下
插入C:\tesseract\lib
5。在Linker > Input > Additional Dependencies
下
添加:
liblept168.lib
libtesseract302.lib
示例代码应如下所示:
#include <tesseract\baseapi.h>
#include <leptonica\allheaders.h>
#include <iostream>
using namespace std;
int main(void){
tesseract::TessBaseAPI api;
api.Init("", "eng", tesseract::OEM_DEFAULT);
api.SetPageSegMode(static_cast<tesseract::PageSegMode>(7));
api.SetOutputName("out");
cout<<"File name:";
char image[256];
cin>>image;
PIX *pixs = pixRead(image);
STRING text_out;
api.ProcessPages(image, NULL, 0, &text_out);
cout<<text_out.string();
system("pause");
}
要与OpenCV和 Mat 类型图片进行互动,请查看HERE
答案 1 :(得分:2)
自上次回复以来已经有很多,但它可能对其他人有所帮助;
(这个答案必须是对布鲁斯答案的评论。抱歉混淆。)
答案 2 :(得分:0)
您需要通过API使用该库。
最有可能:
首先将libs(https://code.google.com/p/tesseract-ocr/downloads/detail?name=tesseract-3.02.02-win32-lib-include-dirs.zip&can=2&q=)下载。它们是用Visual 2008编译的,但它应该足够了
直接使用API(例如,查看使用它的开源项目:https://code.google.com/p/qtesseract/source/browse/#svn%2Ftrunk%2Ftessdata)并阅读此答案中的链接:How can i use tesseract ocr(or any other free ocr) in small c++ project?