1)安裝相關軟件:
下載ccpan,把路徑放到path(右擊電腦,選擇“屬性”,選擇左邊的“高級系統設置”,選擇“環境變量”,找到“系統變量”里面的“path”,點擊“編輯”,選擇右邊的“新建”,輸入如下圖1)。(我把cppan.exe放到c:\cppan\)
圖1
2)安裝cmake(我選擇類似自動安裝的方式)
3)下載tesseract和leptonica-1.74:
將下載后的tesseract解壓后在文件夾搜索框中搜索所有.h文件,新建一個文件夾命名為tesseract-vs2015並在該文件夾中新建一個文件夾命名為tesseract,將上述得到的.h文件復制到里面。
將下載的leptonica解壓后在文件夾搜索框中搜索所有.h文件,在文件夾tesseract-vs2015中新建一個文件夾命名為leptonica,將上述得到的.h文件復制到里面。
4)打開cmd窗口。
紅色框即為我在cmd中輸入的代碼。
圖2
圖3
5)編譯sln文件
打開tesseract/win64/,找到tesseract.sln,用vs2015打開,選擇release,x64,如下圖4.再選擇build,選擇build solution,如下圖5。
圖4
圖5
6)修改編碼錯誤:
在vs的錯誤列表里雙擊錯誤的文件后,單擊 文件-高級保存選項修改編碼方式為:簡體中文GB2312-代碼頁936
7)重新生成
通過第六步后單擊重新生成解決方案
8)保存生成的文件:
通過以上操作后在tesseract/win64/bin下可以看到如下圖的.dll文件。
將其中的.dll文件復制,在上述步驟所建tesseract-vs2015文件夾中新建一個文件夾並命名為bin並將剛剛復制的.dll文件粘貼到當中去。在從tesseract/win64的某個文件夾中找到tesseract400.lib並將其復制,在上述步驟所建tesseract-vs2015文件夾中新建一個文件夾並命名為lib,並將剛剛復制的lib文件粘貼在里面。然后從C:\Users\Administrator\.cppan\storage\lib\ddbdbe4c\Release中將pvt.cppan.demo.danbloomberg.leptonica-1.74.4.lib,復制到tesseract-vs2015\lib文件夾下。
9)在vs2015中配置tesseract4.0:
新建一個空的控制台程序。並找到下圖位置
雙擊.x64.user出現如下圖:
單擊VC++目錄,將tesseract-2015/include/tesseract和tesseract-2015/include/leptonica這兩個路勁包含在VC++目錄下的包含目錄下,如圖
再將tesseract-2015/lib路徑包含在VC++目錄下的庫目錄中。在單擊鏈接器-輸入,將tesseract-2015/lib中的兩個lib文件的名字添加到附加依賴項中。如圖;
最后把tesseract-2015/bin文件夾路徑放到系統的環境變量中的path值中即可。
注:將生成的所有dll文件放在Release目錄下,才編譯成功。
11)網絡上的測試代碼:
#include<iostream>
#include <baseapi.h>
#include<allheaders.h>
#include <cv.h>
#include <highgui.h>
using namespace std;
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("D:\\opencvlianxi\\la\\1.jpg");
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);
return 0;
}
api->SetPageSegMode(tesseract::PSM_SINGLE_BLOCK);
api.SetPageSegMode(tesseract::PSM_AUTO);//設置自動進行版面分析
api.SetAccuracyVSpeed(tesseract::AVS_FASTEST);//要求速度最快
api->SetRectangle(30, 86, 590, 100);
api->Init("/usr/src/tesseract-3.02/", "eng");
- #include "stdafx.h"
- #include "tesseract\baseapi.h"
- #include "tesseract\strngs.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- const char * image = "image.jpg";
- tesseract::TessBaseAPI api;
- api.Init(NULL, "eng", tesseract::OEM_DEFAULT);
- api.SetVariable( "tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" );
- STRING text_out;
- if (!api.ProcessPages(image, NULL, 0, &text_out))
- {
- return 0;
- }
- printf(text_out.string());
- return 0;
- }