xdowns.com/view_soft/3/7/OCRwenzishibieruanjian Mini Ocr.html
件
本軟件是飛濤軟件工作室開發的壹款免費Ocr軟件,主要用於識別圖像文件之中,出現
的漢字顯示字體。Ocr的中文含意是光學字符識別。
為什麽叫Mini呢?因為現有的識別漢字的商業Ocr軟件,動輒二三十兆,而本軟件解
壓後,也不過三兆多,身材比較纖小,再加上本軟件主要用於識別字體比較小的漢字,所
以叫Mini,中文的發音是“迷妳”,中文含義是超小型。
既然有了商業Ocr軟件,為什麽還要開發這個軟件?
不同於商業Ocr軟件,本軟件是免費的,可以自由使用。第二個不同之處,本軟件的
識別對象是屏幕出現的“顯示漢字”,而不是針對掃描儀掃出來的“打印漢字”。二者有什
麽不同呢?最重要的壹點: 掃描出來的打印漢字的高度和寬度壹般都在30多個像素點之
上,這是我用畫圖軟件,打開某個商業Ocr的samples\sample1.tif,然後壹點壹點數出
來的。從文件名和目錄名的中文含意可以看出,這個點數應該是壹個典型值。那麽,如果
用商業Ocr識別屏幕上出現的小五號字,漢字的高度是12個像素點,會出現什麽情況呢?
測試方法:用記事本隨便寫幾行漢字,設置字體為小五號字。這大概是看著還算舒服
的最小號的漢字字體了(高度是12個像素點),如果再小,字體就很難看了。然後,按拷
屏鍵PrtSc,把屏幕的圖像拷貝、粘貼到畫圖軟件中,修剪尺寸後,保存為bmp的格式。
然後,我找了兩個國內最著名的Ocr軟件進行測試,結果讓人大吃壹驚,識別率幾乎為零。
把圖像放大兩倍,再測試,結果仍然很不理想,大概也只有百分之二三十的樣子。
開發Mini Ocr軟件的由來
我在開發護花使者反黃圖像識別軟件的時候,遇到有些圖像裏,嵌有某些文字,如果能
把文字識別出來,圖像的含義就很容易讓計算機理解了。預算有限,我連掃描儀都舍不得
買,就更別想買商業Ocr的開發包了,大概幾十萬,或者更多,或者別人壓根就不賣。況且
它們的識別率對小字體幾乎為零,不符合我的要求。看來,只好自力更生,重新寫壹個了。
開發Mini Ocr的歷程
經過三個多月的努力,終於誕生了這款Mini Ocr 軟件。第1個月做出了漢字識別的
核心模塊,第2個月做出了文章段落切分的算法,並加入了對英文,數字,標點的支持,
第三個月繼續調整英漢混排和漢字切分的算法,並用MFC 做了壹個界面。
Mini Ocr的軟件架構
為了讓更多的人能使用到這個軟件,我在windows系統下,采用VC進行編程,界面當
然只好用MFC寫了。軟件架構是壹個SDI框架下的多窗口切分界面,左上角的窗口是壹個
CFormView,用來顯示常用的按鈕;左下角是壹個CEditView,用來顯示幫助信息;右上角
是壹個CView,用來顯示要識別的圖像;右下角是壹個CEditView,用來存放識別出來的文
字。識別部分采用了工作者線程,以避免顯示界面的主線程僵掉。識別部分是整個軟件的
核心,與操作系統無關,可以單獨摘出來放在dos窗口裏跑,也可以移植到Linux系統中跑。
漢字識別軟件的難點所在:
英文識別有壹些開放源碼的軟件,我看過的軟件,主要采取兩種識別方法:基於規則
的方法,和采用神經網絡方法。而這兩種方法,在識別漢字時,都不宜采用。因為漢字數
目眾多,最常用的國標2312的壹級漢字就有3755個。如果借用基於規則的方法,需要對
三千多個漢字,逐壹人工寫出分類規則,工作量太大,我壹個人無法完成;如果采用神經
網絡的方法,這麽多漢字,我不敢想象,需要多少層網絡和神經節點呀!如果采用網格法,
抗位移的效果太差;而采用不變矩法,識別人和入,土和士,相似度又難於控制。除此之
外,漢字切分也是壹大難題。英文寬度大概只有漢字壹半,標點符號大概只有漢字三分之
壹寬,數字大概只有四分之壹的寬度。而漢字本身又有二分字,和三分字。某些字,如“啊”,
字體小時可能是獨體字,字體大些,變為二分字,字體再大,又變為三分字。加上漢字與
漢字之間的粘連、漢字與英文的混排,英文與英文的粘連,造成漢字切分模塊的算法,甚
至比漢字識別模塊的算法還要復雜得多。為了克服這些難點,並加快識別速度,我在算法
設計時,采用了壹些優化和簡化的策略。經過實踐檢驗,證明行之有效。
Mini Ocr進行漢字識別的策略:
1) 采用復合特征的分類方法。
2) 字符集選擇3755個壹級漢字。
3) 字體選擇最常用的宋體。
4) 字號選擇從小五號到壹號漢字,主要針對20個點之內的小字體。
5) 英漢混排時,漢語優先。
6) 漢字粘連時,進行動態優化切分。
展望與下壹步的開發計劃:
1) 重新優化英文識別的算法;
2) 對英文粘連的切分算法進行調整;
3) 移植進入Linux;
選擇Ocr軟件的建議:
如果您選擇Ocr軟件,目的是用來識別掃描儀出來打印字體,推薦還是選用知名的商業Ocr。
如果您要識別屏幕上顯示的漢字,Mini Ocr是壹個比較不錯的選擇。真誠地希望您在使用
中,能喜歡上它