轉載:
https://blog.csdn.net/wz22881916/article/details/51548475
一、配置
tesseract庫下載
想要在VS中使用Tesseract庫,必須使用經過相對應的VS版本編譯過的dll以及lib。比如在VS 2013中,就必須使用在VS 2013中編譯過的Tesseract庫。
這裏我給出經過VS 2013編譯的Tesseract庫, 下載地址: http://pan.baidu.com/s/1o7JqXmU
有了Tesseract庫之後,我們便在VS 2013中配置環境以及包含庫了。
引入頭文件
在“解決方案管理器”窗口–>右鍵“Tesseract Demo”工程–>“屬性®”–>“配置屬性”–>“C/C++”–>“常規”–>“附加包含目錄”: 在“Tesseract Demo”工程中所有“活動解決方案平臺”的所有“活動解決方案配置”中都添加如下內容:
D:\Tesseract 3.0\include
D:\Tesseract 3.0\include\leptonica
D:\Tesseract 3.0\include\tesseract
添加屬性表
首先將“D:\Tesseract 3.0\include”目錄拷貝到本地工程“Tesseract Demo”所在目錄。
然後進行以下設置:
在“解決方案管理器”所在區域,切換到“屬性管理器”窗口;
右鍵“Tesseract Demo”工程–>“添加現有屬性表(E)…”–>在“Tesseract Demo\include”目錄下找到“tesseract_versionnumbers.props”–>“打開”;
配置庫文件
在“解決方案管理器”窗口–>右鍵“Tesseract Demo”工程–>“屬性®”–>“配置屬性”–>“連接器”–>“常規”–>“附加庫目錄”: 在“Tesseract Demo”工程中所有“活動解決方案平臺”的所有“活動解決方案配置”中都添加如下內容:
D:\Tesseract 3.0\Lib
添加預定義
在“解決方案管理器”窗口–>右鍵“Tesseract Demo”工程–>“屬性®”–>“配置屬性”–>“C/C++”–>“預處理器”–>“預處理器定義”–>按“活動解決方案配置”類型“添加”如下列表中的“預定義”內容:
WIN32
_WINDOWS
NDEBUG
USE_STD_NAMESPACE
_DEBUG
_CONSOLE
_LIB
_CRT_SECURE_NO_DEPRECATE
添加附加庫
在“解決方案管理器”窗口–>右鍵“Tesseract Demo”工程–>“屬性®”–>“配置屬性”–>“連接器”–>“輸入”–>“附加依賴項”–>按“活動解決方案配置”類型“添加”如下列表中的“附加庫”內容:
ws2_32.lib
user32.lib
jpeg.lib
liblept168.lib
libpng.lib
libtesseract302.lib
libtiff.lib
zlibstat.lib
注意:
如果出現dll文件報錯的情況,可以將:“D:\Tesseract 3.0\dll”中的
libtesseract302.dll
liblept168.dll
拷貝到“C:\Users\admin\Documents\Visual Studio 2013\Projects\Tesseract Demo\Tesseract Demo”目錄下。
二、測試
代碼及路徑
將待識別圖片拷貝到“C:\Users\admin\Documents\Visual Studio 2013\Projects\Tesseract Demo\Tesseract Demo”目錄下。
main函數如下所示:
#include "baseapi.h"
#include "allheaders.h"
int main()
{
char *outText;
tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
// Initialize tesseract-ocr with English, without specifying tessdata path
if (api->Init(NULL, "eng"))
{
fprintf(stderr, "Could not initialize tesseract.\n");
exit(1);
}
// Open input image with leptonica library
Pix *image = pixRead("./2.png");
api->SetImage(image);
// Get OCR result
outText = api->GetUTF8Text();
printf("---- OCR output:---- \n%s", outText);
// Destroy used object and release memory
api->End();
delete[] outText;
pixDestroy(&image);
system("Pause");
return 0;
}
識別結果: