今天心血來潮做了個識別圖片文字的demo,現在文字識別技術已經比較成熟了,而且還有可以調用的公共接口。
今天做的demo主要簡單對比了Tesseract-OCR和BAIDU.AI 這兩種方法,感覺百度的中文識別准確率更高,Tesseract-OCR中文別准確率較差,需要自己訓練詞庫,這個比較麻煩。所以demo主要介紹調用百度AI接口實現文字提取。
那就開始吧。
首先,你得去官網(https://ai.baidu.com/)申請調用所需要的AppID以及API Key,這是調用憑證。
創建你的應用,按需填寫(隨便填就行),提交后系統會給你生成所需要的調用憑證。
之后就是創建Demo項目了,這里就不再贅述了,現在做的demo是winform項目。項目新建好了就可以增加接口的SKD了,在項目-->管理Nuget程序包,在瀏覽頁上搜索 baidu.ai,安裝這個
安裝完后,你會發現在項目的引用下已經引用了 AipSdk 這個dll。
新建一個窗體吧,並加入些需要的控件
我們通過【選擇圖片】來選擇要識別的圖片,然后點擊【提取】按鈕,識別圖片上的文字。
首先附上【選擇圖片】按鈕的代碼:
就是這么簡單,這時會把圖片的完整路徑放在一個textbox里,接下來看看【提取】功能的實現,識別到的結果會保存在richTextBox里。
就是這么簡單了。其實別看我們調用接口實現功能這么簡單,識別文字的接口開發可不是這么簡單。程序跑起來看看效果吧。
畫圖工具制作的圖片,識別出來了,完美。再手寫體看看
寫好點還是可以識別出來的
這種寫得潦草一點的通用文字識別接口(ocr.GeneralBasic(bt, ops) 就是這個方法)可能就會識別不准確了,還是要訓練字庫。
對於識別不出來或是識別不准確的可以試一下高精度的接口方法(就是把上面的方法ocr.GeneralBasic(bt, ops) 換成ocr.AccurateBasic(bt,ops)),API上說提供了好幾種方法,根據需要調用不同的方法吧。
各種證件圖片都是可以識別出來的,大家可以試試就不一一貼圖了。
就寫到這里吧,我也是菜鳥一個,有幸和大家共同學習進步。