超簡單集成HMS ML Kit文字超分能力,一鍵提升文本分辨率

前言

大家有沒有遇到過這種情況,在瀏覽微博或者公眾號時看到一段有趣的文字,於是截圖發到朋友圈想和好友分享。但是在發佈圖片時,軟件會對圖片強制進行壓縮,導致圖片分辨率下降,文字變得模糊難以閱讀。那麼有沒有什麼辦法可以解決這種情況呢?當然有啦。華為HMS ML Kit提供了文字超分技術,可以突破圖像中文本分辨率的物理限制,對包含文字內容的圖像進行9倍放大(長寬各放大3倍),同時顯著增強圖像中文字的清晰度和可辨識度,輕鬆解決圖片中文字分辨率低的問題。

應用場景

文字超分技術在生活中有很多的應用場景,比如剛剛提到朋友圈發佈的截圖被壓縮時,文字超分技術可以把截圖還原到高清晰度。
在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述
或者是在文檔翻拍時,因為距離遠、未聚焦等原因,導致拍攝的文字不清晰。文字超分技術可以提高翻拍文檔的清晰度和可辨識度,讓文檔中的字變得清晰。

在這裡插入圖片描述在這裡插入圖片描述

怎麼樣,是不是很實用?下面給大家簡單介紹如何集成HMS ML Kit文字超分服務。

開發實戰

1. 配置Maven倉地址

1.1 打開Android Studio項目級「build.gradle」文件

在這裡插入圖片描述

1.2 添加HUAWEI agcp插件以及Maven代碼庫。
在allprojects ->repositories裏面配置HMS Core SDK的Maven倉地址。

allprojects {
    repositories {
        google()
        jcenter()
        maven {url '//developer.huawei.com/repo/'}
    }
 }

在buildscript->repositories裏面配置HMS Core SDK的Maven倉地址。

buildscript {
    repositories {
        google()
        jcenter()
        maven {url '//developer.huawei.com/repo/'}
    }
 }

2. 集成文字圖像超分辨率服務SDK

2.1 Full SDK方式集成(推薦使用)

dependencies{ 
    // 引入基礎SDK
    Implementation 'com.huawei.hms:ml-computer-vision-textimagesuperresolution:2.0.3.300'
    // 引入文字圖像超分辨率模型包
    implementation 'com.huawei.hms:ml-computer-vision-textimagesuperresolution-model:2.0.3.300'
}

2.2 文件頭添加配置

apply plugin: 'com.android.application'
apply plugin: 'com.huawei.agconnect'

2.3 更新機器學習模型

<meta-data            
        android:name="com.huawei.hms.ml.DEPENDENCY" 
        android:value= "tisr"/>

3. 代碼開發

3.1 創建文字圖像超分辨率分析器

MLTextImageSuperResolutionAnalyzer analyzer = MLTextImageSuperResolutionAnalyzerFactory.getInstance().getTextImageSuperResolutionAnalyzer();

3.2 通過android.graphics.Bitmap構造MLFrame(注意此處的bitmap類型必須為ARGB8888,請注意做必要的轉換)

// 通過bitmap創建MLFrame,bitmap為輸入的圖片數據。
MLFrame frame = new MLFrame.Creator().setBitmap(bitmap).create();

3.3 對包含文字的圖片進行超分辨率處理

Task<MLTextImageSuperResolutionResult> task = analyzer.asyncAnalyseFrame(frame);
task.addOnSuccessListener(new OnSuccessListener<MLTextImageSuperResolutionResult>() {
    public void onSuccess(MLTextImageSuperResolutionResult result) {
        // 超分成功的處理邏輯。
    }})
    .addOnFailureListener(new OnFailureListener() {
        public void onFailure(Exception e) {
            // 超分失敗的處理邏輯。
            if (e instanceof MLException) {
                MLException mlException = (MLException)e;
                // 獲取錯誤碼,開發者可以對錯誤碼進行處理,根據錯誤碼進行差異化的頁面提示。
                int errorCode = mlException.getErrCode();
                // 獲取報錯信息,開發者可以結合錯誤碼,快速定位問題。
                String errorMessage = mlException.getMessage();
            } else {
                // 其他異常。
        }
});

3.4 超分完成,停止分析器,釋放檢測資源

if (analyzer != null) {
    analyzer.stop();
}

Github地址

查看Demo源碼://github.com/HMS-Core/hms-ml-demo/tree/master/MLKit-Sample/module-vision/src/main/java/com/huawei/mlkit/sample/activity

更詳細的開發指南參考華為開發者聯盟官網

//developer.huawei.com/consumer/cn/hms/huawei-mlkit

欲了解更多詳情,請參閱:

華為開發者聯盟官網://developer.huawei.com/consumer/cn/hms

獲取開發指導文檔://developer.huawei.com/consumer/cn/doc/development

參與開發者討論請到Reddit社區://www.reddit.com/r/HMSCore/

下載demo和示例代碼請到Github://github.com/HMS-Core

解決集成問題請到Stack Overflow://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest


原文鏈接:
//developer.huawei.com/consumer/cn/forum/topicview?tid=0203349782674210504&fid=18
作者:留下落葉

Tags: