从tesseractmain.cpp中精简出来的代码

从tesseract的 api/tesseractmain.cpp 中挑拣出以下代码,除了屏蔽了一些tesseract的参数选项,基本可以担当 tesseract 可执行程序的功能:

int Recognize(const string &tessdata, const string &lang, const string &image, string &text)
{
	tesseract::TessBaseAPI api;
	char* configs = NULL;
	api.Init(tessdata.c_str(), lang.c_str(), tesseract::OEM_DEFAULT,
                &configs, 0, NULL, NULL, false);
	tesseract::PageSegMode pagesegmode = tesseract::PSM_AUTO;
	if (api.GetPageSegMode() == tesseract::PSM_SINGLE_BLOCK)
		api.SetPageSegMode(pagesegmode);

	STRING text_out;
	if (!api.ProcessPages(image.c_str(), NULL, 0, &text_out)) {	// 注意,这里的image文件名还区分大小写,eng.png和eng.PNG是不一样的
		return -1;
	}
	else {
		text = text_out.string();
		return 0;
	}
}

下面是调用它的代码:
string text;
if(Recognize("/home/yasi/tessdata", "eng", "/home/yasi/eng.png", text) == 0) {
	cout << "Recognized text: " << endl << text << endl;
}
else {
	cout << "Recognition failed!" << endl;
}

注意,include路径要包含下面一些。其中,TESSERACT_DIR是tesseract源代码根目录

        -I/usr/local/include/leptonica \
        -I/usr/local/include/tesseract \
        -I$(TESSERACT_DIR)/classify \
        -I$(TESSERACT_DIR)/wordrec \
        -I$(TESSERACT_DIR)/textord \
        -I$(TESSERACT_DIR)/ccutil \
        -I$(TESSERACT_DIR)/ccstruct \
        -I$(TESSERACT_DIR)/viewer \
        -I$(TESSERACT_DIR)/dict \
        -I$(TESSERACT_DIR)/ccmain \
        -I$(TESSERACT_DIR)/image \
        -I$(TESSERACT_DIR)/cutil
link选项要包含:

-I/usr/local/lib -ltesseract

运行时,如果提示找不到libtesseract.so相关文件,可以在 /etc/ld.so.conf  末尾加入 /usr/local/lib

CentOS上安装tesseract方法见这里

你可能感兴趣的:(从tesseractmain.cpp中精简出来的代码)