Tessseract為一款開源、免費的OCR引擎,能夠支持中文十分難得。雖然其識別效果不是很理想,但是對於要求不高的中小型項目來說,已經足夠用了。
文字識別可應用於許多領域,如閱讀、翻譯、文獻資料的檢索、信件和包裹的分揀、稿件的編輯和校對、大量統計報表和卡片的匯總與分析、銀行支票的處理、商品發票的統計匯總、商品編碼的識別、商品倉庫的管理,以及水、電、煤氣、房租、人身保險等費用的征收業務中的大量信用卡片的自動處理和辦公室打字員工作的局部自動化等。以及文檔檢索,各類證件識別,方便用戶快速錄入信息,提高各行各業的工作效率。
Tesseract 是一款圖片識別工具,可以抓取圖片中的文字,可以支持多種語言(默認是英語),需要下載開源文件可以在github上下載。
源碼下載地址:https://github.com/tesseract-ocr/tesseract/tree/3.02.02
https://github.com/charlesw/tesseract/tree/3.0.1
Tesseract官網:https://code.google.com/p/tesseract-ocr/
C#測試程序中調用Tesseract主要代碼:
測試tesseract.dll 代碼:
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
var img = new Bitmap(openFileDialog1.FileName);
// var ocr = new TesseractEngine(@"C:\Program Files (x86)\Tesseract-OCR\tessdata", "eng", EngineMode.TesseractAndCube);
var ocr = new TesseractEngine("./tessdata", "chi_sim", EngineMode.TesseractOnly);
var page = ocr.Process(img);
txtResult.Text = page.GetText();
}
調用Tesseract.dll的兩種方法:
方法一:
import console;
import tesseract;
var ocr = tesseract.ocr();
if( 0 != ocr.init("eng","/") ){ //初始化樣本語言包
error("沒有找到樣本 \tessdata\eng.traineddata");
}
//預設字符集可提升識別率,注意要一定在加載樣本以后調用此函數
ocr.setVariable("tessedit_char_whitelist","0123456789")
//識別圖像
var text = ocr.processPages("\test.jpg" )
console.log(text)
console.pause()
方法二:
import console;
import tesseract;
import win;
var ocr = tesseract.ocr();
if( 0 != ocr.init("eng","/" ) ){ //初始化樣本語言包
var prefix = win.getenv("TESSDATA_PREFIX");
if(!#prefix) prefix = "~\lib\tesseract\.res"
error("沒有找到樣本 " + prefix + "eng.traineddata",2)
}
//預設字符集可提升識別率,注意要一定在加載樣本以后調用此函數
ocr.setVariable("tessedit_char_whitelist","0123456789")
//獲取圖像像素數據
var pix = liblept.pixRead( ..io.fullpath("\test.jpg") );
ocr.setImage2( pix )
//識別圖像
if( 0 != ocr.recognize() ){
console.pause(true,"識別圖像出錯");
return;
}
var text = ocr.getText()
console.log("識別結果",text )
liblept.pixDestroy({addr pix = pix})
console.pause();
C#測試截圖
開源的效果比商用的效果差不少,但是隨着開源技術的進步,相信這種不需要聯網的文字識別 准確率會越來越高。總有一天會讓我們滿意的。當然,准確率也需要通過不斷的訓練神經網絡來提高。
神經網絡訓練的中文數據庫
Tesseract —ocr安裝后文件夾
Tessdata:存放各種文字庫(chi_sim.traineddata:中文 等)
Tessseract.exe 即可以啟動文件開始調用Tesseract 可以通過cmd方式調用,先cd到對應的目錄,然后 輸入 tesseract.exe 圖片名 導出文件名(如:tesseract.exe 1.jpg 1) 就可以把和tesseract同目錄的 1.jpg文件識別結果存放在 1.txt文件中。當然如果需要支持中文,需要在tessdata中添加 chi_sim.traineddata 文件,
然后 調用例子:tesseract.exe 1.jpg 1 -L chi_sim 制定是根據什么文字庫進行識別。 當然圖片地址可以引用全路徑、輸出結果也可以全路徑如果只是想把Tesseract做為一個工具做文字解析,並不追求太高成功率使用者,這樣即可滿足需要了,直接通過CMD調用exe進行執行。
參考文獻:
http://www.cnblogs.com/CleanBoy/p/4617438.html
http://blog.csdn.net/carson2005/article/details/7246090
http://blog.csdn.net/kaka20080622/article/details/50662935
http://bbs.aardio.com/forum.php?mod=viewthread&tid=12601