C#:圖像處理- 文字識別OCR及物體識別

最近想到做個文字識別的模塊,其實文字識別例如車牌識別已經非常成熟的技術,學過圖像處理的自己都可以寫個算法來處理圖像,不過懶人也有懶辦法,一是用第三方專業做OCR的sdk,比如Tesseract和Asprise,其中前者用google的國內不好訪問,雖然開源的如果自己足夠專業可以做很好的配置,不過對中文的支持欠佳,難度也大。
還有辦法就是用api,那就要用大公司的了,Azure的認知服務就提供,不過收費不便宜,每1000次調用要11塊,如果一個電商應用有百萬級數量的圖片要處理費用還是不能忽視的。還有個免費的級別,每分鐘調用上限20次,月上限5K次,一般測試足夠了。百度也提供了api,還在測試期需要申請,筆者後面放上試用感覺哈。
還有就是office也自帶的圖像識別,這個精度會比上面的都差一些,不過能用。首先在VS引用Microsoft Office Document Imageing(OCR),視你安裝的office版本這裏版本也會不一樣。遺憾的是,MODI最後一個獨立版本就是Office 2007裏面的,在2010及以後的版本里面可以在安裝選項的工具裏面裏面找到OCR,但是裝好以後在開始菜單並找不到,因爲這個被整合進了Onenote,雖然在Word裏面識別Pdf文字也是用的這個但是已經不是獨立模塊了。

  MODI.Document doc = new MODI.Document();
            doc.Create("D:\\Share\\a1.jpg");
            MODI.Image image;
            MODI.Layout layout;
            doc.OCR(MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED, true, true);
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < doc.Images.Count; i++)
            {
                image = (MODI.Image)doc.Images[i];
                layout = image.Layout;
                sb.Append(layout.Text+"\n\n");
            }


            this.richTextBox1.Text = sb.ToString();

以上爲使用MODI識別圖片的代碼,執行的時候需要把Any CPU改成X86不然會報錯。說實話識別率不高,白底黑字的還可以,黑底白字的就識別不了了,什麼如果對格式有要求,比如是一個表格的圖片,那得到的結果參考價值不高。

筆者在玩Hololens,看到有另一個物體識別引擎Vuforia,應該是攝像頭捕獲的物體可以智能識別,大家可以自己玩一下https://developer.vuforia.com/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章