如何在Visual Studio 2010中实现Tesseract与项目一起运行

时间:2013-08-12 06:34:07

标签: c++ opencv ocr tesseract

我在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的任何好教程(首先是一步一步)?或者你自己的解决方案?

3 个答案:

答案 0 :(得分:18)

好的,我发现它但它仅适用于发布 Win32 配置(无调试或x64)。 Debug配置下有许多链接错误。

所以,

1. 首先,在此处下载准备好的库文件夹(Tesseract + Leptonica):

Mirror 1(Google Drive)

Mirror 2(MediaFire)


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)

自上次回复以来已经有很多,但它可能对其他人有所帮助;

  1. 我认为您还必须将“liblept168.lib”和“liblept168d.lib”添加到其他依赖项
  2. 将“liblept168.dll”和“liblept168d.dll”添加到您的exe目的地。
  3. 将#include添加到您的代码中。
  4. (这个答案必须是对布鲁斯答案的评论。抱歉混淆。)

答案 2 :(得分:0)

您需要通过API使用该库。

最有可能: