从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)/cutillink选项要包含:
-I/usr/local/lib -ltesseract
运行时,如果提示找不到libtesseract.so相关文件,可以在 /etc/ld.so.conf 末尾加入 /usr/local/lib
CentOS上安装tesseract方法见这里