郑州移动端网站建设企业培训内容包括哪些内容
Google ML Kit 是一个现代、功能强大、跨平台的机器学习 SDK。在这篇文章中,我们将使用 ML Kit 在 Android 应用中识别图片文字,以提取美国驾照上的关键信息:DL(驾照号) 和 EXP(有效日期)。
🛠️ 步骤一:项目配置
1. 添加依赖
打开 app/build.gradle
,添加以下 ML Kit 的文字识别依赖:
dependencies { implementation 'com.google.mlkit:text-recognition:16.0.0' }
2. 添加权限(可选)
如果你需要从相册或相机中读取图片,还需要添加读取权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
🧾 示例功能说明
我们将:
-
加载一张美国驾照图片(假设叫
license.jpg
) -
使用 ML Kit 提取图片上的文字
-
使用正则表达式提取出驾驶证号(
DL ABC1234567
)和出生日期(DOB 05/01/1990
)
📄 布局文件:activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/main"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><ImageViewandroid:id="@+id/imageView"android:layout_width="303dp"android:layout_height="189dp"android:layout_marginStart="54dp"android:layout_marginTop="62dp"android:layout_marginEnd="54dp"android:layout_marginBottom="105dp"app:layout_constraintBottom_toTopOf="@+id/textView"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"tools:src="@tools:sample/backgrounds/scenic" /><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="165dp"android:layout_marginTop="264dp"android:layout_marginEnd="156dp"android:layout_marginBottom="43dp"android:text="Loading"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/textView" /></androidx.constraintlayout.widget.ConstraintLayout>
🔧 主逻辑:MainActivity.kt
package com.example.mlimport android.graphics.BitmapFactory
import android.os.Bundle
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.google.mlkit.vision.common.InputImage
import com.google.mlkit.vision.text.TextRecognition
import java.io.InputStream
import com.google.mlkit.vision.text.latin.TextRecognizerOptionsclass MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)val imageView = findViewById<ImageView>(R.id.imageView)val button = findViewById<Button>(R.id.button)// 加载图片(assets 文件夹中的 jiazhao.webp)val inputStream: InputStream = assets.open("license.jpg")val bitmap = BitmapFactory.decodeStream(inputStream)imageView.setImageBitmap(bitmap)button.setOnClickListener {extractTextFromBitmap(bitmap)}}private fun extractTextFromBitmap(bitmap: android.graphics.Bitmap) {val image = InputImage.fromBitmap(bitmap, 0)val textView = findViewById<TextView>(R.id.textView)val recognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)recognizer.process(image).addOnSuccessListener { visionText ->val fullText = visionText.text// 提取 DOB 和 DLval expRegex = Regex("""EXP\s+\d{2}/\d{2}/\d{4}""")val dlRegex = Regex("""DL\s+[A-Z0-9]+""")val exp = expRegex.find(fullText)?.value ?: "未识别到有效日期"val dl = dlRegex.find(fullText)?.value ?: "未识别到驾驶证号"textView.text = "有效日期: $exp" + "\n" + "驾驶证号: $dl"}.addOnFailureListener { e ->textView.text = "识别失败:${e.message}"}}
}
🧪 测试效果
确保你将美国驾照样本命名为 license.jpg
并放入 res/drawable/
目录。点击按钮后,在日志中可以看到类似如下输出:
有效日期: EXP 08/31/2026
驾驶证号: DL I1234568