標籤:
光學字元辨識(OCR,Optical Character Recognition)是指對文本資料進行掃描,然後對影像檔進行分析處理,擷取文字及版面資訊的過程。OCR技術非常專業,一般多是印刷、列印行業的從業人員使用,可以快速的將紙質資料轉換為電子資料。關於中文OCR,目前國內水平較高的有清華文通、漢王、尚書,其產品各有千秋,價格不菲。國外OCR發展較早,像一些大公司,如IBM、微軟、HP等,即使沒有推出單獨的OCR產品,但是他們的研發團隊早已掌握核心技術,將OCR功能植入了自身的軟體系統。對於我們程式員來說,一般用不到那麼進階的,主要在開發中能夠整合基本的OCR功能就可以了。這兩天我尋找了很多免費OCR軟體、類庫,特地整理一下,今天首先來談談Tesseract,下一次將討論下Onenote 2010中的OCR API實現。可以在這裡查看OCR技術的發展簡史。
測試代碼下載
轉載請註明出處:http://www.cnblogs.com/brooks-dotnet/archive/2010/10/05/1844203.html
1、Tesseract概述
Tesseract的OCR引擎最先由HP實驗室於1985年開始研發,至1995年時已經成為OCR業內最準確的三款識別引擎之一。然而,HP不久便決定放棄OCR業務,Tesseract也從此塵封。
數年以後,HP意識到,與其將Tesseract束之高閣,不如貢獻給開源軟體業,讓其重煥新生--2005年,Tesseract由美國內華達州資訊技術研究所獲得,並求諸於Google對Tesseract進行改進、消除Bug、最佳化工作。
Tesseract目前已作為開源項目發布在Google Project,其項目首頁在這裡查看,其最新版本3.0已經支援中文OCR,並提供了一個命令列工具。本次我們來測試一下Tesseract 3.0,由於命令列對終端使用者不太友好,我用WPF簡單封裝了一下,就可以方便的進行中文OCR了。
1.1、首先到Tesseract項目首頁下載命令列工具、原始碼、中文語言套件:
1.2、命令列工具解壓縮後如下(不含1.jpg、1.txt):
1.3、為了進行中文OCR,將簡體中文語言套件複製到【tessdata】目錄下:
1.4、在DOS下切換到Tesseract的命令列目錄,查看一下tesseract.exe的命令格式:
Imagename為待OCR的圖片,outputbase為OCR後的輸出檔案,預設是文字檔(.txt),lang為使用的語言套件,configfile為設定檔。
1.5、下面來測試一下,準備一張jpg格式的圖片,這裡我是放到了和Tesseract同一個目錄中:
輸入:tesseract.exe 1.jpg 1 -l chi_sim,然後斷行符號,幾秒鐘就OCR完成了:
這裡注意命令的格式:imagename要加上副檔名.jpg,輸出檔案和語言套件不需要加副檔名。
OCR結果:
可以看到結果不是很理想,中文識別還說的過去,但是英文、數字大都亂碼。不過作為老牌的OCR引擎,能做到這種程度已經相當不錯了,期待Google的後續升級吧,支援一下。
2、使用WPF封裝Tesseract命令列
2.1、鑒於命令列書寫容易出錯,且對終端使用者很不友好,我做了一個簡單的WPF小程式,將Tesseract的命令列封裝了一下:
左邊選擇圖片、預覽,右邊選擇輸出目錄,顯示OCR結果,支援本地及網狀圖片的預覽。
2.2、為了使得圖片預覽支援縮放、移動,原本打算使用微軟的Zoom It API,可惜不支援WPF,於是使用了一個第三方的類:
圖片縮放、移動工具類
2.3、除了使用滑鼠。還可以使用捲軸調節圖片預覽效果:
資料繫結
2.4、由於Tesseract命令列不支援直接OCR網狀圖片,故先下載:
圖片下載
2.5、使用Process來調用Tesseract命令列:
調用Tesseract命令列
2.6、測試本地圖片:
2.7、測試網狀圖片:
小結:
本次我們簡單討論了下Tesseract的用法,作為一款開源、免費的OCR引擎,能夠支援中文十分難得。雖然其識別效果不是很理想,但是對於要求不高的中小型項目來說,已經足夠用了。這裡有一份免費OCR工具列表,感興趣的朋友可以研究一下。下一次將測試一下Onenote 2010中OCR功能,以及如何調用其API,為項目所用。
[轉]Tesseract-OCR (Tesseract的OCR引擎最先由HP實驗室於1985年開始研發)