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

How to implement Tesseract to run with project in Visual Studio 2010

本文关键字:Tesseract 项目 一起 运行 实现 Visual Studio 2010      更新时间:2023-10-16

我在Visual Studio 2010中有一个C++项目,希望使用OCR。我遇到了很多Tesseract的"教程",但遗憾的是,我得到的只是头痛和浪费时间。

在我的项目中,我有一个图像存储为Mat。我的问题的一个解决方案是将这个Mat保存为图像(例如image.jpg),然后调用Tesseract可执行文件,如下所示:

system("tesseract.exe image.jpg out");

这让我得到一个输出out.txt,然后我调用

infile.open ("out.txt");

以读取Tesseract的输出。

这一切都很好,就像椅子一样工作,但这不是一个最佳解决方案。在我的项目中,我正在处理一个视频,所以以10+FPS保存/调用.exe/写入/读取并不是我真正想要的。我想对现有代码实现Tesseract,以便能够将Mat作为参数传递,并立即获得字符串形式的结果。

你知道用Visual Studio 2010实现Tesseract OCR的好教程吗?还是你自己的解决方案?

好的,我想好了,但它只适用于ReleaseWin32配置(无调试或x64)。"调试"配置下有许多链接错误。

所以,

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

镜像1(Google Drive)

镜像2(MediaFire)


2.提取tesseract.zipC:


3.在Visual Studio中,转到C/C++ > General > Additional Include Directories

插入C:tesseractinclude


4.Linker > General > Additional Library Directories

插入C:tesseractlib


5.Linker > Input > Additional Dependencies

添加:

liblept168.lib
libtesseract302.lib

示例代码应该如下所示:

#include <tesseractbaseapi.h>
#include <leptonicaallheaders.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类型图像的交互,请查看此处

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

  1. 我认为您还必须将"liblept168.lib"answers"liblep168d.lib"添加到Additional Dependencies
  2. 将"liblep168.dll"answers"liblet168d.dll"添加到exe的目标位置
  3. 将#include添加到代码中

(这个答案必须是对Bruce答案的评论。很抱歉造成混淆。)

您需要通过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)并阅读以下答案中的链接:如何在小型c++项目中使用tesseract ocr(或任何其他免费ocr)?