자금 관리 Android 앱(Kotlin)에서 Huawei ML Kit를 사용하여 청구서 캡처 - 4부
소개
이 기사에서는 이 Money Management 앱을 사용하여 텍스트 이미지를 캡처하는 방법을 배울 수 있습니다. 이 앱은 확대/축소를 통해 이미지를 고품질 가시성으로 변환합니다. 따라서 사용자가 쇼핑이나 지출을 구매할 때마다 이 애플리케이션을 사용하여 청구서를 캡처하고 메모리에 저장할 수 있습니다.
그래서 저는 이 자금 관리 앱에 대한 일련의 기사를 제공할 것이며, 다음 기사에서는 다른 Huawei 키트를 통합할 것입니다.
이 응용 프로그램을 처음 사용하는 경우 이전 기사를 따르십시오.
Beginner: Find the introduction Sliders and Huawei Account Kit Integration in Money Management Android app (Kotlin) - Part 1
Beginner: Integration of Huawei Ads Kit and Analytics Kit in Money Management Android app (Kotlin) – Part 2
Beginner: Manage the Budget using Room Database in Money Management Android app (Kotlin) – Part 3
ML Kit - 텍스트 이미지 초고해상도
ML Kit - Huawei ML Kit의 텍스트 이미지 초해상도 기능. 이미지에서 오래되고 흐릿한 텍스트의 더 나은 품질과 가시성을 제공합니다. 멀리서 문서를 촬영하거나 초점이 제대로 조정되지 않으면 텍스트가 선명하지 않을 수 있습니다. 이 경우 텍스트가 포함된 이미지를 최대 3배까지 확대하여 텍스트의 선명도를 크게 향상시킬 수 있습니다.
요구 사항
HMS 종속성을 통합하는 방법
참고: 프로젝트 이름은 사용자가 만든 이름에 따라 다릅니다.
maven { url 'http://developer.huawei.com/repo/' }
classpath 'com.huawei.agconnect:agcp:1.4.1.300'
apply plugin: 'com.huawei.agconnect'
// Huawei AGC
implementation 'com.huawei.agconnect:agconnect-core:1.5.0.300'
// Import the text image super-resolution base SDK.
implementation 'com.huawei.hms:ml-computer-vision-textimagesuperresolution:2.0.4.300'
// Import the text image super-resolution model package.
implementation 'com.huawei.hms:ml-computer-vision-textimagesuperresolution-model:2.0.4.300'
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
개발로 이동하자
빈 활동으로 Android 스튜디오에서 프로젝트를 생성하여 코딩을 시작하겠습니다.
CaptureActivity.kt에서 비즈니스 로직을 찾을 수 있습니다.
class CaptureActivity : AppCompatActivity(), View.OnClickListener {
private var analyzer: MLTextImageSuperResolutionAnalyzer? = null
private val QUALITY = 1
private val ORIGINAL = 2
private var imageView: ImageView? = null
private var srcBitmap: Bitmap? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_capture)
imageView = findViewById(R.id.bill)
srcBitmap = BitmapFactory.decodeResource(resources, R.drawable.bill_1)
findViewById<View>(R.id.btn_quality).setOnClickListener(this)
findViewById<View>(R.id.btn_original).setOnClickListener(this)
createAnalyzer()
}
// Find the on click listeners
override fun onClick(v: View?) {
if (v!!.id == R.id.btn_quality) {
detectImage(QUALITY)
} else if (v.id == R.id.btn_original) {
detectImage(ORIGINAL)
}
}
private fun release() {
if (analyzer == null) {
return
}
analyzer!!.stop()
}
// Find the method to detect bills or text images
private fun detectImage(type: Int) {
if (type == ORIGINAL) {
setImage(srcBitmap!!)
return
}
if (analyzer == null) {
return
}
// Create an MLFrame by using the bitmap.
val frame = MLFrame.Creator().setBitmap(srcBitmap).create()
val task = analyzer!!.asyncAnalyseFrame(frame)
task.addOnSuccessListener { result -> // success.
Toast.makeText(applicationContext, "Success", Toast.LENGTH_LONG).show()
setImage(result.bitmap)
}.addOnFailureListener { e ->
// Failure
if (e is MLException) {
val mlException = e
// Get the error code, developers can give different page prompts according to the error code.
val errorCode = mlException.errCode
// Get the error message, developers can combine the error code to quickly locate the problem.
val errorMessage = mlException.message
Toast.makeText(applicationContext,"Error:$errorCode Message:$errorMessage", Toast.LENGTH_LONG).show()
// Log.e(TAG, "Error:$errorCode Message:$errorMessage")
} else {
// Other exception
Toast.makeText(applicationContext, "Failed:" + e.message, Toast.LENGTH_LONG).show()
// Log.e(TAG, e.message!!)
}
}
}
private fun setImage(bitmap: Bitmap) {
[email protected](Runnable {
imageView!!.setImageBitmap(
bitmap
)
})
}
private fun createAnalyzer() {
analyzer = MLTextImageSuperResolutionAnalyzerFactory.getInstance().textImageSuperResolutionAnalyzer
}
override fun onDestroy() {
super.onDestroy()
if (srcBitmap != null) {
srcBitmap!!.recycle()
}
release()
}
}
activity_capture.xml에서 UI 화면을 만들 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".mlkit.CaptureActivity">
<LinearLayout
android:id="@+id/buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="vertical"
tools:ignore="MissingConstraints">
<Button
android:id="@+id/btn_quality"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_margin="15dp"
android:gravity="center"
android:textSize="19sp"
android:text="Quality"
android:textAllCaps="false"
android:textColor="@color/Red"
tools:ignore="HardcodedText" />
<Button
android:id="@+id/btn_original"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_margin="15dp"
android:gravity="center"
android:text="Original"
android:textSize="19sp"
android:textAllCaps="false"
android:textColor="@color/Red"
tools:ignore="HardcodedText" />
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/buttons"
android:layout_marginBottom="15dp">
<ImageView
android:id="@+id/bill"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
tools:ignore="ObsoleteLayoutParam" />
</ScrollView>
</RelativeLayout>
데모
팁과 요령
결론
이 기사에서는 Huawei ML Kit의 Text Image Super-Resolution 기능과 그 기능에 대해 알아보았습니다. 이미지에서 오래되고 흐릿한 텍스트의 더 나은 품질과 가시성을 제공합니다. 텍스트가 포함된 이미지를 최대 3배까지 확대할 수 있으며 텍스트의 선명도를 크게 향상시킵니다.
참조
ML 키트 – Documentation
ML 키트 – Training Video
Reference
이 문제에 관하여(자금 관리 Android 앱(Kotlin)에서 Huawei ML Kit를 사용하여 청구서 캡처 - 4부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hmscommunity/capture-the-bills-using-huawei-ml-kit-in-money-management-android-app-kotlin-part-4-1p8g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)