Screen OCR(光學字元辨識)

來源:互聯網
上載者:User

20100520-20100523

         一個針對螢幕的OCR(光學字元辨識)程式,它與印刷體和手寫輸入OCR的區別在於:螢幕OCR屬於精確識別,識別速度較快,演算法也較簡單,但它只能識別螢幕(或者無損BMP)上的文字,。

     該程式的預設字型庫採用索引+Hash表組織,檔案大小1.48M(未壓縮),內含2580個字(漢字2500個+數字10個+字母52個+標點18個)、5種字型、15種字型大小、2種樣式,共計387000個字型。

     經測試識別100個22號字約用時3s,100個8號字約用時0.7s,識別率一般。如果字型庫用純Hash表,那麼檔案大小將增大到32M,而識別速度最多可以提高6倍。另外,由於我還沒有搞清楚TrueType字型的產生演算法,所以暫時無法再提高識別速度。

     關於印刷體OCR我大概也有一點思路。段落的分割演算法與螢幕OCR基本一致,下面僅討論單字的識別演算法。

     首先將目標字的高度伸縮到標準字的大小(目標字的高度已經在段落分割中由行高得到),而目標字的寬度則按保持縱橫比伸縮。

     然後由尋徑演算法遍曆目標字的筆畫,得到一個標準筆畫寬度(即粗細)的字。顯然,這一步比較困難。

     最後進行模糊比對:將目標字與標準字按左上方對齊,並對目標字的每一個像素點,看以它為中心的正方形(邊長較小)中是否含有標準字的像素點,如果有則相似性+1。按此方法迴圈對所有標準字計算相似性,取相似性最高的字為識別字。

     最後一步非常耗時。最佳化的方法是將標準字按使用頻率由高到低存放,在匹配過程中如果發現相似性大於某一個值,則認為找到了識別字,中止迴圈。

     可以看出這並不是一個很好的演算法。如果根據筆畫向量或者字型輪廓進行匹配可能會好很多,當然難度也大得多。

     最後再簡單說一說手寫輸入的識別,它與前兩種OCR相比又有不同。因為它可以在使用者手寫的過程中獲得筆畫的順序以及方向(如果使用者寫倒筆字將降低識別精度),所以從這一點上看識別起來相對更容易。但是一般來說,使用者手寫的字與標準字差別較大,前面提到的演算法將失效。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.