android - 为什么每次扫描后结果差别不大?
问题描述
Android Studio 3.6,Firebase 机器学习套件。
我创建了需要扫描图像并从中提取文本的 Android 应用程序。为此,我使用 Firebase ML Kit。
在我的应用程序/build.gradle 中:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.google.android.material:material:1.2.0-alpha03'
implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation "com.otaliastudios:cameraview:2.5.0"
implementation('com.crashlytics.sdk.android:crashlytics:2.10.1@aar') { transitive = true; }
implementation 'com.google.firebase:firebase-ml-vision:24.0.1'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.synnapps:carouselview:0.1.4'
implementation 'androidx.appcompat:appcompat:1.1.0'
这是我的活动:
import android.Manifest
import android.content.DialogInterface
import android.content.Intent
import android.graphics.Bitmap
import android.os.Bundle
import android.widget.Toast
import androidx.databinding.DataBindingUtil
import com.google.firebase.ml.vision.FirebaseVision
import com.google.firebase.ml.vision.common.FirebaseVisionImage
import com.google.firebase.ml.vision.text.FirebaseVisionText
private fun runDetector(bitmap: Bitmap?) {
val image = FirebaseVisionImage.fromBitmap(bitmap!!)
val detector = FirebaseVision.getInstance().onDeviceTextRecognizer
val result = detector.processImage(image)
.addOnSuccessListener { firebaseVisionText ->
processTextResult(firebaseVisionText)
}
.addOnFailureListener { e ->
}
}
private fun processTextResult(firebaseVisionText: FirebaseVisionText) {
var detectedText = "\n"
firebaseVisionText.textBlocks.forEach {
detectedText += it.text + "\n"
}
Debug.d(TAG, "processTextResult: detectedText_start\n")
Debug.d(TAG, detectedText)
Debug.d(TAG, "processTextResult: detectedText_end")
这是扫描 3 次相同图像(带文本)后的结果:
“某些公司名称 CF O081 0operator U1 Latte 1111111111111 17.00 C 17.00 C 3.08 C 1.000 X 17,00 1.000 X 17.00 1.060 X 3.08 Latte dDte 37 .00 OAL TVA C 10.00% NUMERAR 3.08 37 !! ! 183654 23-12-2819 15:14 BON F ISCAL: 0131 ZKe0682347 Ser. N. Inr N F702822971"
2.
"some company name
C.F
C
F
9881
Latte
1111111111111
Operator 81
1.000 X 17.00
1,008 X 17.00
17.00 C
17.00 C
3.00 C
Latte
apte
1.060 X 3.08
31.86
UIAL
TVA C 10.00%
NUMERAR
B. .36
,00
ART
37
883
MUL TUMIM !
15:14
103654
BON FISCAL: 6131
23-12-2819
ZKO0682347
Ser.N
N.Inr
F782022971"
"一些公司名称
F
1111111111111 o01 操作员 81
Lotte
1.808 X 17.00
1.008 X 17.00
1.060 x 3,08
17.00 C
17.00 C
3.00 C
Latte
apte
0AL
NUME RAR
37.00- .36
.00
803 ART
VA C 10.00%
37
MUL TUMIM !!!
103654
23-12-2819
15:14
BON F ISCAL: 0131
ZKO0602347
Ser .N
N.
Inr F702022971"
正如您在每次扫描同一图像后看到的那样,我得到不同的结果。
问题:
每次扫描后是否有可能得到相同的结果?
如何达到最相同的结果?
解决方案
这是因为扫描时相机的角度不同,要检查大多数相同的结果,您必须编写复杂的代码
推荐阅读
- node.js - 从nodejs中的文件对象创建表单数据
- java - 在花药活动中将数据从 MySQL 传递到字幕文本视图
- java - Java骰子游戏项目:将骰子的值返回给main方法
- python - sha3 的构建轮子失败
- php - 如何在 Wordpress 网站上更改我的 functions.filter.php 以修复损坏的链接 [site_url_secure]
- database - 通过 IntelliJ IDEA 中的两个 ssh 隧道连接到数据库
- arrays - 如何递归地将维度添加到 MATLAB 数组?
- angular - 如何在 angular7 中使用 gmailapi
- amazon-web-services - 使用 YAML 文件配置 ECS 集群实例配置
- python - Python递归函数从dict中获取数据