1. 程式人生 > 實用技巧 >c#開發文字識別軟體

c#開發文字識別軟體

本文主要討論C#開發使用百度文字識別OCR來識別文字,本文最後會提供本安全原始碼以及執行軟體包,如有需要可自行下載

1.建立應用:

  詳見:https://console.bce.baidu.com/ai/#/ai/ocr/overview/index

  建立應用之後就能看到建立完的應用和API KEY以及Secret KEY了,在呼叫API時需傳入這些配置值

2.引用SDK

  C# SDK 現已開源,快速接入文件參考:https://ai.baidu.com/ai-doc/OCR/ok3h7y6zw

3.呼叫API,

  這裡僅展示通用及高精度識別示例,特殊場景識別,詳見官方文件:https://ai.baidu.com/ai-doc/OCR/Mk3h7y6j8

        /// <summary>
        /// 呼叫百度 API 識別文字
        /// </summary>
        /// <param name="imgPath">圖片路徑</param>
        /// <param name="accurate">是否高精度</param>
        /// <returns></returns>
        public BaiduRetOcr Recognize(string imgPath, bool accurate)
        {
            
try { // 百度應用配置 var appId = ConfigUtil.GetConfigStr(EnumConfigKey.OcrAPP_ID); var apiKey = ConfigUtil.GetConfigStr(EnumConfigKey.OcrAPI_Key); var secretKey = ConfigUtil.GetConfigStr(EnumConfigKey.OcrSECRET_KEY);
//if (!RiverAuth.Instant.CheckOcr(appId, apiKey, secretKey)) //{ // return new BaiduRetOcr(); //} var client = new Baidu.Aip.Ocr.Ocr(apiKey, secretKey); client.Timeout = (int)ConfigUtil.GetConfig(EnumConfigKey.ClientTimeOut, 60 * 1000); var image = File.ReadAllBytes(imgPath); // 呼叫通用文字識別, 圖片引數為本地圖片,可能會丟擲網路等異常,請使用try/catch捕獲 var result = client.GeneralBasic(image); // 如果有可選引數 var options = new Dictionary<string, object>{ {"language_type", "CHN_ENG"}, {"detect_direction", "true"}, {"detect_language", "true"}, {"probability", "true"} }; // 帶引數呼叫通用文字識別, 圖片引數為本地圖片 if (accurate) { result = client.AccurateBasic(image, options); } else result = client.GeneralBasic(image, options); RiverAuth.Instant.EndCallEvent(); return result.ToObject<BaiduRetOcr>(); } catch (Exception ex) { MsgUtil.Error("識別錯誤:"+ex.Message); return new BaiduRetOcr(); } finally { } }

4.識別結果

原圖片:

圖片識別結果:

5.原始碼及軟體包下載

軟體開原始碼地址(整合專案):https://gitee.com/bidev_admin/river-int-ai.git

執行軟體包下載地址(.Net Framework 4.5):https://pan.baidu.com/s/1z-WFDGHhEP8tqLqwp9I0Mw 提取碼:r3sk