前言
現現在,人際交往成爲生活中必不可少的一部分,之間互相傳遞名片,記錄聯繫信息,是必要的一步,名片承擔着對方的各類信息,姓名、公司、地址等等,通常狀況下,咱們會比對着錄入名片上的各類信息,一個個地敲擊手機鍵盤。若是有了名片識別,就能夠扭轉這種現象,輕鬆完成名片識別,錄入名片信息。html
名片識別技術介紹
名片識別採用OCR技術,將名片上的文字轉化識別爲可進行編輯處理的相應文字,並可對識別後的名片信息進行分類管理。它支持經過拍照識別、二維碼識別、導入識別方式對名片信息進行採集,用戶只需將名片放在手機拍攝的預覽框內,即可自動完成對名片識別的一系列操做,很是方便。java
開發前準備步驟
在開始API開發工做以前,您須要完成必要的開發準備工做,同時請確保您的工程中已經配置HMS Core SDK的Maven倉地址,而且完成了本服務的SDK集成。android
android studio 安裝
很簡單,下載安裝便可。具體下載連接:app
Android studio 官網下載連接:https://developer.android.com/studio
Android studio安裝流程參考連接:http://www.javashuo.com/article/p-wamzpmfl-bo.html
async
在項目級gradle裏添加華爲maven倉maven
打開AndroidStudio項目級build.gradle文件ide
maven地址
在buildscript->repositories裏面配置HMS SDK的maven倉地址 buildscript { repositories { maven { url 'https://developer.huawei.com/repo/' } } }
在allprojects ->repositories裏面配置HMS SDK的maven倉地址gradle
allprojects { repositories { maven { url 'https://developer.huawei.com/repo/' } } }
引入SDK
dependencies { // Text recognition SDK. implementation 'com.huawei.hms:ml-computer-vision-ocr:2.0.1.300' // Text recognition model. implementation 'com.huawei.hms:ml-computer-vision-ocr-cn-model:2.0.1.300' implementation 'com.huawei.hms:ml-computer-vision-ocr-jk-model:2.0.1.300' implementation 'com.huawei.hms:ml-computer-vision-ocr-latin-model:2.0.1.300' } }
清單文件
<manifest ... <meta-data android:name="com.huawei.hms.ml.DEPENDENCY" android:value="ocr" /> ... </manifest>
權限
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.hardware.camera.autofocus" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.autofocus" />
動態權限申請
if (!(ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED)) { requestCameraPermission(); }
開發重點步驟
1. 建立文本分析器MLTextAnalyzer用於識別圖片中的文字,使用自定義參數MLLocalTextSetting配置端側文本分析器。ui
MLLocalTextSetting setting = new MLLocalTextSetting.Factory() .setOCRMode(MLLocalTextSetting.OCR_DETECT_MODE) .setLanguage("zh") .create(); MLTextAnalyzer analyzer = MLAnalyzerFactory.getInstance() .getLocalTextAnalyzer(setting);
2. 經過android.graphics.Bitmap建立MLFrame,支持的圖片格式包括:jpg/jpeg/png/bmp,建議輸入圖片長寬比範圍:1:2到2:1。this
MLFrame frame = MLFrame.fromBitmap(bitmap);
3. 將生成的MLFrame對象傳遞給「asyncAnalyseFrame」方法進行文字識別。
Task<MLText> task = analyzer.asyncAnalyseFrame(frame); task.addOnSuccessListener(new OnSuccessListener<MLText>() { @Override public void onSuccess(MLText text) { // Recognition success. } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(Exception e) { // Recognition failure. } });
4. 識別完成,中止分析器,釋放識別資源。
try { if (analyzer != null) { analyzer.stop(); } } catch (IOException e) { // IOException } catch (Exception e) { // Exception }
Demo效果
爲了便於開發者更好的理解此場景,咱們也作了一個demo app,展現名片識別的功能效果
若是你對實現方式感興趣,能夠在Github上下載源碼:https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides-V5/text-recognition-0000001050040053-V5#ZH-CN_TOPIC_0000001050750207__section16220018134717
原文連接:
https://developer.huawei.com/consumer/cn/forum/topic/0204399685438720133?fid=18做者:timer