以下示例來自Ubuntu17.10
(1)安裝tesseract
sudo apt-get install tesseract-ocr
(2)如果想用 Tesseract 對圖像進行識別,還需要對應的語言文件。所謂的語言文件是 Tesseract 識別某種語言的文字圖像時需要的一些資源,這些東西也可以通過包管理器獲取。
sudo apt-get install tesseract-ocr-eng tesseract-ocr-chi-sim
這里就下了:eng是英語,chi_sim是中文
(3)安裝tesseract-ocr編譯必須的包。autoconf 可以幫助你寫出款平台編譯的程序,而automake則主要是幫你更好的完成跨 平台編譯這件事情。編譯需要用到各種編譯器命令,因為不想手動的執行這些命名出現了 Makefile,又因為不想手動的編寫Makefile出現了automake這類的工具,它讓你可以 只提供源文件的名稱便替你生成 Makefile,這也着實省下不少的麻煩。
程序庫的發展過程中首先出現的是靜態庫,實際上只是.o的打包而已。后來出現了更高級 的動態庫,可惜的是和之前一樣,這些動態庫在不同的系統上實現是不一樣的,為了能夠跨 平台的生成這些程序庫,也就有了libtool這類的工具。
sudo apt-get install autoconf automake libtool
(4)安裝libleptonica
您還需要安裝Leptonica。確保在編譯Tesseract之前安裝了Leptonica的開發頭文件
sudo apt-get install libleptonica-dev
安裝過程就告一段落了
下面介紹一下怎么使用
現在我的home下有兩張圖test.png
和test1.png
(1)命令行模式
lzj:~$ tesseract test.png out -l chi_sim
識別test.png 結果保存到out.txt文件
(2)c++代碼
#include
#include
int main()
{
char *outText;
tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
//使用中文初始化tesseract-ocr,而不指定tessdata路徑。
if (api->Init(NULL, "chi_sim"/*"eng"*/)) {
fprintf(stderr, "Could not initialize tesseract.\n");
exit(1);
}
// 使用leptonica庫打開輸入圖像。
Pix* image = pixRead("test.png");
api->SetImage(image);
// 得到光學字符識別結果
outText = api->GetUTF8Text();
printf("OCR output:\n%s", outText);
// 銷毀使用過的對象並釋放內存。
api->End();
delete [] outText;
pixDestroy(&image);
return 0;
}
編譯
g++ 1.cpp -llept -ltesseract
結果如下(命令行方式結果相同)
再貼一個英文的,圖片如下
結果為
我們可以看到,對英文的識別是優於中文的(中文這種象形文太復雜了…)
等我學完了如何提高識別度再回來總結一波