主頁 > 軟體工程 > 【全代碼攻略】用百度大腦手寫文字識別助力企業降本增效

【全代碼攻略】用百度大腦手寫文字識別助力企業降本增效

2020-09-11 11:34:48 軟體工程

一、需求描述:

資訊智能化時代,大部分中小企業都用上了ERP等辦公軟體,數字化紙質內容,軟體化管理資料,做到無紙化辦公,但仔細觀察,中小企業還是有一些作業流程可以進行改進的,

例如,公司進行人員應聘時,都是先列印應聘表格,然后讓應聘人員填寫內容,最后由文員將應聘表格的內容輸入到ERP系統內,其中,文員將應聘內容輸入到ERP系統內,這個步驟是相當耗時費力的,如果當天應聘人員比較多,那將花費文員大量的時間去輸入應聘資訊,

如果能夠利用百度的手寫文字識別功能,結合【IOCR自定義模板文字識別】,智能識別應聘表格內容,并將識別結果填入對應的軟體、或是生成相應的EXCEL等電子檔案,那么文員只需要校對一下識別的內容是否正確,就能一鍵保存/匯入,很快的做好應聘資訊錄入作業,大量減輕文員的錄入作業,

以此類推,像請假條、辦公采購單,員工日工資明細等一些表格都可以通過百度手寫文字識別的方法來進行智能識別,極大降低文員的作業量,提高文員的作業效率,

此外,在個人應用方面,可以將個人的會議紀要,演講稿等使用【手寫文字識別】功能,數字化內容存盤起來,可以結合【百度網盤】實作永久保存,像文字作業者,有些習慣用筆記錄的、不習慣用電腦打字的,到時候都可以采用【手寫文字識別】功能,將文字資料化,稍微整理再上傳到相應的平臺上去,

另外,在學校應用方面,教師批改學生作文,是一件耗時耗力的事情,學生的筆跡各不相同,有時候單單識別學生文字內容就很耗心力,這樣的話,教師往往花費了很大的精力在識別學生文字上去,如果采用【手寫文字識別】功能,將作文數字化,統一成標準文字,再用采取一些【護眼模式】等方法顯示,就大大方便教師閱讀修改,減輕教師的閱讀作文所消耗精力,更加專注于作文思想內容、發現好文章,如果可行,甚至可以嘗試將這個方法運用到全國的高考作文改卷中去,


二、應用價值:

1、利用百度【手寫文字識別】功能,結合【IOCR自定義模板文字識別】,AI前后文判斷智能糾錯等功能,可大大降低文員文字錄入作業量,提高文員作業效率,適合大部分中小企業,

2、如果能將【手寫文字識別】功能離線化,或者可以單獨部署到企業自己的服務器上去,那將具有更大的應用前景,

3、利于百度【手寫文字識別】功能,數字化個人/專業文字作業者的演講稿、筆記等,并結合【百度網盤】等實作永久保存,

4、可以嘗試將【手寫文字識別】運用到學生的作文批改中去,讓教師更加專注于作文的思想內容、發現好文章,甚至推廣到全國的高考作文改卷中去,這樣不僅減輕了教師的作文批改作業壓力,同時也能發現更多有思想、有內涵的好文章,


三、使用攻略

說明:本文采用C# 語言,開發環境為.Net Core 2.1,

1、平臺接入

具體接入方式比較簡單,可以參考度友愛小妞寶的帖子,可參考到【創建應用程式】這一步驟(主要獲取APPID等資訊,呼叫時會用的),后面的使用由于我是采用.Net Core 平臺的C#、SDK方案,故有些不同,有時間的話,我會另寫一個教程出來:https://ai.baidu.com/forum/topic/show/867951   (感謝度友愛小妞寶)

2、介面呼叫說明

文字識別接入官方說明檔案(C#,SDK方案):https://ai.baidu.com/docs#/OCR-Csharp-SDK/top

(1)介面描述

對手寫中文漢字、數字進行識別,

 

(2)安裝文字識別 C# SDK

方法一:使用Nuget管理依賴 (推薦)

在NuGet中搜索 Baidu.AI,安裝最新版即可,

packet地址 https://www.nuget.org/packages/Baidu.AI/


方法二:下載安裝 

文字識別 C# SDK目錄結構

Baidu.Aip
├── net35
│   ├── AipSdk.dll // 百度AI服務 windows 動態庫
│   ├── AipSdk.xml // 注釋檔案
│   └── Newtonsoft.Json.dll // 第三方依賴
├── net40
├── net45
└── netstandard2.0
├── AipSdk.deps.json
└── AipSdk.dll
1.在官方網站下載C# SDK壓縮工具包:http://ai.baidu.com/sdk#ocr

2.解壓后,將 AipSdk.dll 和 Newtonsoft.Json.dll 中添加為參考,


(3)新建互動類

// 設定APPID/AK/SK
var APP_ID = "你的 App ID";
var API_KEY = "你的 Api Key";
var SECRET_KEY = "你的 Secret Key";

var client = new Baidu.Aip.Ocr.Ocr(API_KEY, SECRET_KEY);
client.Timeout = 60000;  // 修改超時時間


(4)呼叫代碼

public void HandwritingDemo() {
    var image = File.ReadAllBytes("圖片檔案路徑");
    // 呼叫手寫文字識別,可能會拋出網路等例外,請使用try/catch捕獲
    var result = client.Handwriting(image);
    Console.WriteLine(result);
    // 如果有可選引數
    var options = new Dictionary{
        {"recognize_granularity", "big"}
    };
    // 帶引數呼叫手寫文字識別
    result = client.Handwriting(image, options);
    Console.WriteLine(result);
}


(5)回傳示例


{
"log_id": 620759800,
"words_result": [
{
"location": {
"left": 56,
"top": 0,
"width": 21,
"height": 210
},
"words": "3"
}
],
"words_result_num": 1
}


四、示例關鍵代碼

1、前臺.cshtml 頁面布局關鍵代碼

由于html代碼無法原生顯示,只能簡單說明一下:

主要是一個form表單,需要設定屬性enctype="multipart/form-data",否則無法上傳圖片;

form表單里面有兩個控制元件:

一個Input,type="file",上傳圖片用;

一個Input,type="submit",提交并回傳識別結果,


2、后臺.cshtml.cs呼叫關鍵代碼

      [BindProperty]
      [Required]
        public IFormFile FileUpload { get; set; }
        private readonly IHostingEnvironment HostingEnvironment;
        public List msg = new List();
        public string curPath { get; set; }

        public async Task OnPostHandwritingAsync()
        {
            msg = new List();
            // Perform an initial check to catch FileUpload class attribute violations.
            if (!ModelState.IsValid)
            {
                return Page();
            }

            string webRootPath = HostingEnvironment.WebRootPath;//wwwroot目錄
           var fileDir = Path.Combine(webRootPath, "服務器圖片保存相對位置,如://BaiduPicture//");
            if (!Directory.Exists(fileDir))
            {
                Directory.CreateDirectory(fileDir);
            }
           string extension = Path.GetExtension(FileUpload.FileName);
           string imgName = Guid.NewGuid().ToString("N") + extension;
           var filePath = Path.Combine(webRootPath, "服務器圖片保存相對位置,如://BaiduPicture//", imgName);

           curPath = Path.Combine("服務器圖片相對位置(需要在 Startup.cs 檔案中的 Configure()中先進行設定,開啟虛擬目錄映射功能),如:/BaiduPicture/", imgName);

            using (var fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
            {
                await FileUpload.CopyToAsync(fileStream);
            }

            // 設定APPID/AK/SK
           var client = new Baidu.Aip.Ocr.Ocr("你的 Api Key", "你的 SECRET Key");
            var image = System.IO.File.ReadAllBytes(filePath);
            // 呼叫手寫文字識別, 圖片引數為本地圖片,可能會拋出網路等例外,請使用try/catch捕獲
            var result = client.Handwriting(image);//手寫文字識別

            List msgList = result["words_result"].ToList();
            msg.Add("手寫文字識別結果:\n");
            foreach (JToken ms in msgList)
            {
                msg.Add(ms["words"].ToString());
            }
            return Page();
        }
五、效果測驗

1、頁面:

2、識別結果:

(1)

(2)

說明:因為攻略主要介紹如何使用手寫文字識別功能,所以對文字處理這塊不進行深入操作,如果想進一步提高識別結果,可以采取將識別結果輸出為字串,然后使用正則運算式提取相應的文字內容,或者進一步匯出為EXCEL檔案等,

六、改進建議

1、存在的問題:

(1)部分內容,正常情況下,應該將其識別為兩條記錄的,結果最后變成了一條記錄,特別是【文字-數字-文字-數字】這樣的行資訊組合的時候,如果文字、數字的距離較近,很容易將數字和文字識別在一起了,需要改進,

(2)再如像“娘”這樣偏旁部首是單獨的字組成的字時,會識識別成“女良”兩個字,這點也需要改進,(感謝度友134******14的提醒)

(3)目前對稍微潦草的字跡識別率還不是很高,需要改進,

由于計算機、手機等電子設備的普及,大部分人都習慣了打字,手寫情況大大減少,由此導致很大一部分人寫的字龍飛鳳舞,比較難以識別(我寫的字就很潦草,有時候連自己都無法認出來,,,),而且目前來說,中小企業應聘人員的綜合教育水平普遍較低(普工招的比較多),有的甚至不會寫字,所以導致手寫文字各種各樣,經過測驗,百度手寫文字識別能力雖然比較優秀了,但是離真正應用到實際作業中去還是有一定的距離的,

2、改進建議

(1)結合【IOCR自定義模板文字識別】功能,智能識別模板內容,格式化提取內容,方便開發人員呼叫(目前好像已支持手寫數字識別,希望能更快增加支持手寫文字識別),

(2)如果能格式化輸出內容,或一鍵匯出EXCEL電子檔案等功能,則更加方便跟EPR等軟體的對接,

(3)可以運用AI技術,結合前后文智能識別錯別字,修正錯誤或陳述句問題,提高識別結果,

(4)若能將【手寫文字識別】功能離線話,或可以部署到企業自己的服務器上去,會有更多的企業愿意嘗試,也能將【手寫文字識別】功能運用到【財務報表】等保密性要求較強的方向中去,

(5)將【手寫文字識別】和【百度網盤】、【護眼模式】等工具結合起來,實作個人/專業文字作業者的筆記、演講稿、作文等內容的數字化存盤,方便觀看閱讀,

作者: 讓天涯

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/5476.html

標籤:其他

上一篇:如何用百度大腦文字識別技術,快速集成實用小工具

下一篇:用百度大腦人體分析技術,幫你監督規范健身

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more