1. 程式人生 > >一文搞懂文字識別、銀行卡識別、通用卡證識別、身份證識別

一文搞懂文字識別、銀行卡識別、通用卡證識別、身份證識別

# 1 前言   檢視華為開發者聯盟網站的機器學習服務業務介紹([https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-introduction-4](https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-introduction-4))   可以看到華為HMS把機器學習服務分成了文字類、語言類、圖片類、人臉人體類四大服務,後面新特性也在不斷增加中,其中有一類是文字類服務,文字類服務裡面又含了文字識別、文件識別、身份證識別、銀行卡識別、通用卡證識別,這些子服務之間都有哪些差異和關聯呢,可能很多小夥伴會傻傻分不清,今天小編重點剖析下文字類服務,來看下這幾個子服務間的差異和關聯。 --- # 2 應用場景差異 首先看下文字類服務包含的子服務內容和對應的場景差異 | 服務 | 場景差異 |說明 | |--|--|--| | 文字識別 | 稀疏的文字,收據、名片 | 支援的識別範圍和場景"廣",啥都能識別,只要是拉丁字元、日韓、中英的文字都可以識別。 | | 文件識別 | 含有文件的密集文字圖片,比如文章、合同等 | 需要識別出帶段落格式的文字資訊,此處需要藉助雲端的運算能力,有更加廣泛的語言種類支援能力。 | | 身份證識別 | 中國大陸二代身份證識別 | 支援的識別範圍和場景很”專“,只識別大陸身份證,準確率高。 | | 銀行卡識別 | 全球常見的銀行卡(銀聯、運通、萬事達、Visa、JCB)卡號等關鍵資訊識別 | 支援的識別範圍和場景很”專“,只識別銀行卡,準確率高。 | | 通用卡證識別 | 任意固定板式的卡證,比如會員卡、通行證、工卡等 | 支援和識別範圍和場景介於文字識別和身份證、銀行卡識別之間,只要是卡證都可以進行識別。 | 文字類服務SDK有裝置端API和雲側API介面兩種, > 裝置端的API只在裝置端進行處理和分析,使用的是裝置自身CPU、GPU等器件的算力,雲端的API則需要把資料送到雲端,利用雲端的伺服器資源進行處理和分析,以上服務除了文件識別由於計算量較大需要在雲端進行處理外,其他服務均有裝置端API,本次為了簡化分析的範圍,我們只講裝置端API服務部分。 ## 2.1 場景對比總結 通過以上對比表格我們可以看到,不同能力對應的應用場景是有所不同的: - 2.1.1 文字識別:更像是一個全科考生,上知天文下知地理,只要是文字,都可以識別。 ![文字識別使用場景 ](https://img-blog.csdnimg.cn/20200509093749308.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDcwODI0MA==,size_16,color_FFFFFF,t_70#pic_center) ![文字識別服務本身不提供介面,介面由開發者實現](https://img-blog.csdnimg.cn/20200509094209326.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDcwODI0MA==,size_16,color_FFFFFF,t_70#pic_center) - 2.1.2 身份證識別、銀行卡識別:更像是一個偏科生,其它不會,只會某一科,但這一科學的極好。   針對身份證、銀行卡提供了預設的定製框,直接對準框就可以快速進行身份證、銀行卡號的提取和識別。 ![ 銀行卡識別校準介面](https://img-blog.csdnimg.cn/20200509101710152.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDcwODI0MA==,size_16,color_FFFFFF,t_70#pic_center) ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200509101747598.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDcwODI0MA==,size_16,color_FFFFFF,t_70#pic_center) - 2.1.3 通用卡證:則介於以上兩類中間,在某一領域有一定的造詣,橫向廣度和縱向深度都處於中間位置。   可以對所有的卡證進行文字類識別,同時提供了卡證類的對準框,提示使用者對準待識別的卡證。 ![通用卡證識別校準介面](https://img-blog.csdnimg.cn/20200509101908795.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDcwODI0MA==,size_16,color_FFFFFF,t_70#pic_center) ## 2.2 該怎麼選   很簡單,身份證、銀行卡識別肯定選身份證識別服務、銀行卡識別服務啦,其他卡證類的識別就用通用卡證識別,剩下的場景就用文字識別服務。 --- # 3 服務整合差異 ## 3.1 編譯依賴差異   為了便於大家理解,先解釋下如下幾個概念: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200509102120321.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDcwODI0MA==,size_16,color_FFFFFF,t_70#pic_center) 基礎SDK   相關服務對開發者呈現的介面,所有的API通過基礎SDK對外開放。 外掛   就是前面場景對比總結中講到的校準框,提供介面用於對影象幀的輸入質量做校驗,不滿足要求的可以提示使用者重新擺放。 模型包   這個是華為HMS ML Kit各服務的核心所在,它包含通過機器學習平臺輸入大量樣本進行學習並生成的推理模型檔案,以及執行這些推理模型所依賴的輕量化推理框架,承載了所有的影象檢測與分析,我面我會在技術差異一節展開分析。 下面小編通過一張表來總結下不同服務對應的編譯依賴: | 服務 | 編譯依賴 |示例程式碼(版本號以官方最新發布為準) | |--|--|--| | 文字識別 | 基礎SDK+通用模型包(可選拉丁、日韓、中英) |// 引入基礎SDK implementation 'com.huawei.hms:ml-computer-vision-ocr:1.0.3.300' // 引入拉丁語文字識別模型包 implementation 'com.huawei.hms:ml-computer-vision-ocr-latin-model:1.0.3.315' // 引入日韓語文字識別模型包 implementation 'com.huawei.hms:ml-computer-vision-ocr-jk-model:1.0.3.300' // 引入中英文文字識別模型包implementation 'com.huawei.hms:ml-computer-vision-ocr-cn-model:1.0.3.300' | | 身份證識別 | 基礎SDK+外掛(身份證)+專有模型包(身份證) |// 引入基礎SDK implementation 'com.huawei.hms:ml-computer-vision-icr:1.0.3.300' // 引入身份證識別plugin包 implementation 'com.huawei.hms:ml-computer-card-icr-cn-plugin:1.0.3.315' // 引入身份證識別模型包 implementation 'com.huawei.hms:ml-computer-card-icr-cn-model:1.0.3.315'| | 銀行卡識別 | 基礎SDK+外掛(銀行卡)+專有模型包(銀行卡) |// 引入基礎SDK implementation 'com.huawei.hms:ml-computer-vision-bcr:1.0.3.303' // 引入銀行卡識別plugin包 implementation 'com.huawei.hms:ml-computer-card-bcr-plugin:1.0.3.300' // 引入銀行卡識別模型包 implementation 'com.huawei.hms:ml-computer-card-bcr-model:1.0.3.300'| | 通用卡證識別 | 基礎SDK+外掛(通用卡證)+通用模型包(拉丁) |// 引入基礎SDK implementation 'com.huawei.hms:ml-computer-vision-ocr:1.0.3.300' // 引入拉丁語文字識別模型包 implementation 'com.huawei.hms:ml-computer-vision-ocr-latin-model:1.0.3.315' // 引入銀行卡識別plugin包 implementation 'com.huawei.hms:ml-computer-card-gcr-plugin:1.0.3.300'| ## 3.2 編譯依賴總結   通過以上編譯依賴可以看出,所有的服務均需要整合對應基礎SDK和模型包,但身份證識別、銀行卡識別以及通用卡證識別都有對應的外掛,也就是前面講到的校準框。模型方面,身份證識別和銀行卡識別都使用了專有的模型包,而通用卡證識別則使用了通用模型包。 ## 3.3 開發差異   先分別看下都是怎麼整合的,詳細步驟就不在細數了,大家可以直接到開發者聯盟上檢視對應服務的開發步驟 [https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-introduction-4](https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-introduction-4) 在這裡簡單總結下對應服務的開發步驟: ### 文字識別 1. 建立識別器 MLTextAnalyzer analyzer = MLAnalyzerFactory.getInstance().getLocalTextAnalyzer(setting); 2. 建立fram物件,傳入影象bitmap MLFrame frame = MLFrame.fromBitmap(bitmap); 3. 把frame物件傳給識別器進行識