// 在项目 build.gradle 中添加 dependencies { implementation 'com.google.mlkit:text-recognition:17.0.2' }
// 添加 Tesseract 依赖(需自行编译或使用第三方封装库) implementation 'com.rmtheis:tess-two:2.3.2'
// 添加 PaddleOCR 依赖 dependencies { implementation 'com.baidu.paddle:paddle-ocr:1.0.0' }
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
// 在 Activity 中申请权限 private fun checkPermissions() { val permissions = arrayOf( android.Manifest.permission.CAMERA, android.Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE ) ActivityCompat.requestPermissions(this, permissions, REQUEST_CODE_PERMISSION) }
// 1. 初始化 ML Kit val firebaseVisionTextRecognizer = FirebaseVision.getInstance() .getOnDeviceTextRecognizer() // 2. 处理图片并识别文字 fun recognizeText(image: Bitmap) { val image = FirebaseVisionImage.fromBitmap(image) firebaseVisionTextRecognizer.processImage(image) .addOnSuccessListener { text -> // 处理识别结果 text.textBlocks.forEach { block -> Log.d("OCR", "${block.text}") } } .addOnFailureListener { e -> e.printStackTrace() } }
// 1. 初始化 Tesseract BaseAPI baseApi = new TessBaseAPI(); baseApi.init(context.getFilesDir().absolutePath, "chi_sim"); // 中文简体 // 2. 识别文字 public String recognizeImage(Bitmap bitmap) { baseApi.setImage(bitmap); return baseApi.getUTF8Text(); } // 3. 释放资源 baseApi.end();
// 1. 加载模型 OCRModel model = new OCRModel(context, "ch_PP-OCRv3"); // 中文模型 // 2. 识别文字 public String recognizeImage(Bitmap bitmap) { List<String> results = model.detectText(bitmap); return String.join(" ", results); }
方案 | 是否需要网络 | 支持语言 | 准确率 | 集成难度 |
---|---|---|---|---|
Google ML Kit | 离线优先 | 多语言(需下载) | 高 | 低 |
Tesseract | 完全离线 | 依赖训练数据包 | 中等 | 中 |
PaddleOCR | 离线优先 | 多语言(需配置) | 高 | 中 |
解答:
chi_sim
)。解答:
FirebaseVisionTextRecognizer
自动检测语言。eng+chi_sim
)。multi_language