由於一些客戶的內部系統需要提取一些記錄信息,如果手工錄入會變得比較麻煩,因此考慮使用百度雲的OCR進行圖片文字的提取處理,綜合比較了一下開源免費的Tesseract 類庫進行處理,不過識別效果不太理想,因此轉為了百度的OCR雲介面處理方式,測試的效果比較理想,基本上較少出現錯別字。本篇隨筆介紹如何利... ...
由於一些客戶的內部系統需要提取一些記錄信息,如果手工錄入會變得比較麻煩,因此考慮使用百度雲的OCR進行圖片文字的提取處理,綜合比較了一下開源免費的Tesseract 類庫進行處理,不過識別效果不太理想,因此轉為了百度的OCR雲介面處理方式,測試的效果比較理想,基本上較少出現錯別字。本篇隨筆介紹如何利用百度OCR進行圖片文字的提取處理,以便從別的系統中批量化獲得響應的系統數據,然後進行相應的格式化處理。
1、百度OCR服務申請
百度的OCR介面調用是收費的介面,不過一般是在超過一定量的情況後進行收費,我們可以申請獲得每月免費的額度。
百度智能雲地址:https://login.bce.baidu.com/
首先我們去到百度智能雲里,在左邊菜單欄的產品服務中搜索"文字識別",點擊【領取免費資源】,將所有的免費資源領取,領取之後要半個小時之後才能生效。
回到主面板,我們要進行創建應用,填寫相關的信息即可創建成功,應用創建好之後會生成AppID、API Key和Secret Key,使用百度AI的SDK,使用API Key和Secret Key參數介面調用處理!
2、項目測試/介面調用
創建一個Winform的測試項目及性能介面的調用測試,在Nuget上添加對應的Baidu.AI的SDK包,以及Json.NET的類庫,如下所示。
設計一個界面,對圖片文件的內容進行識別處理。
具體測試的代碼如下所示。
private void btnLoadImage_Click(object sender, EventArgs e) { var imageFile = FileDialogHelper.OpenImage(false, ""); if(imageFile != null) { var str = BaiduOcr(imageFile); //var str = TesseractOcr(imageFile); this.txtResuilt.Text = str; } } private static string BaiduOcr(string imageFile) { var APIKey = "**********"; var SecretKey = "********"; var ocr = new Baidu.Aip.Ocr.Ocr(APIKey, SecretKey); var currentImage = FileUtil.FileToBytes(imageFile); var result = ocr.Accurate(currentImage); string str = string.Empty; var txts = (from obj in (JArray)result.Root["words_result"] select (string)obj["words"]).ToList(); string startString = "手術助手"; int startIndex = 0; for (int i = 0; i < txts.Count(); i++) { if (txts[i] == startString) { startIndex = i; //記錄二維表的開始位置 } } var newList = txts.Skip(startIndex + 1).ToList(); str = string.Join("\r\n", newList); return str; }
如系統界面的圖片如下所示。
使用百度OCR介面進行測試,可以看到具體的測試結果即可,然後根據結果進行格式化的轉換就可以輸出對應Excel格式或者其他格式了
能夠獲取列表的記錄,進行相應的處理即可,這樣可以減少數據提取或者錄入的時間,通過OCR的自動化處理,可以極大的提高數據的處理效率。
專註於代碼生成工具、.Net/.NetCore 框架架構及軟體開發,以及各種Vue.js的前端技術應用。著有Winform開發框架/混合式開發框架、微信開發框架、Bootstrap開發框架、ABP開發框架、SqlSugar開發框架等框架產品。
轉載請註明出處:撰寫人:伍華聰 http://www.iqidi.com