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/