# MLKit
**Repository Path**: lxwzsh123/MLKit
## Basic Information
- **Project Name**: MLKit
- **Description**: ML Kit是一个强大易用的工具包。通过ML Kit您可以很轻松的实现文字识别、条码识别、图像标记、人脸检测、对象检测等功能。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 126
- **Created**: 2025-03-18
- **Last Updated**: 2025-03-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# MLKit
[](https://raw.githubusercontent.com/jenly1314/MLKit/master/app/release/app-release.apk)
[](https://repo1.maven.org/maven2/com/github/jenly1314/MLKit)
[](https://jitpack.io/#jenly1314/MLKit)
[](https://circleci.com/gh/jenly1314/MLKit)
[](https://android-arsenal.com/api?level=21)
[](http://www.apache.org/licenses/LICENSE-2.0)
ML Kit是一个能够将谷歌专业的机器学习知识带到应用中的极其简单易用的封装包。无论您是否有机器学习的经验,您都可以在几行代码中实现您想要的功能。甚至,您无需对神经网络或者模型优化有多深入的了解,也能完成您想要做的事情。
基于现有的API您可以很轻松的实现文字识别、条码识别、图像标签、人脸检测、对象检测等功能;另一方面,如果您是一位经验丰富的ML开发人员,ML Kit甚至提供了便利的API,可帮助您在移动应用中使用自定义的TensorFlow Lit模型。
## GIF 展示

因为功能太多,所以仅录制演示了部分功能
> 你可以直接下载 [演示App](https://raw.githubusercontent.com/jenly1314/MLKit/master/app/release/app-release.apk) 体验效果
## 各Module相关说明
### [app](app)
示例App:主要用于提供MLKit各个子库的演示效果
### ~mlkit-camera-core~ 已移除(从2.0.0版本开始改用 [CameraScan](https://github.com/jenly1314/CameraScan))
Camera:为各个子库提供相机预览分析的核心库
> 参见[CameraX](https://developer.android.google.cn/training/camerax)
### [mlkit-common](mlkit-common)
公共库:介于Camera与各个子库之间,为各个字库提供公共业务,从而简化各子库的实现
### [mlkit-barcode-scanning](mlkit-barcode-scanning)
条码扫描:通过分析图像能够识别条码的内容信息
> 参见[barcode-scanning](https://developers.google.cn/ml-kit/vision/barcode-scanning)
### [mlkit-face-detection](mlkit-face-detection)
人脸检测:通过分析图像能够检测到人脸和分析面部轮廓关键点信息
> 参见[face-detection](https://developers.google.cn/ml-kit/vision/face-detection)
人脸网格检测:通过分析图像能够检测到人脸网格信息
> 参见[face-mesh-detection](https://developers.google.cn/ml-kit/vision/face-mesh-detection)
### [mlkit-image-labeling](mlkit-image-labeling)
图像标签:通过分析图像能够标记一般对象、场所、动物种类、产品等
> 参见[image-labeling](https://developers.google.cn/ml-kit/vision/image-labeling)
### [mlkit-object-detection](mlkit-object-detection)
对象检测:通过分析图像能够检测出图像中的对象的位置信息(一张图最多可以检测五个对象)
> 参见[object-detection](https://developers.google.cn/ml-kit/vision/object-detection)
### [mlkit-pose-detection](mlkit-pose-detection)
姿势检测:通过分析图像能够检测人物摆姿势的关键点信息
> 参见[pose-detection](https://developers.google.cn/ml-kit/vision/pose-detection)
### [mlkit-pose-detection-accurate](mlkit-pose-detection-accurate)
姿势检测(精确版):通过分析图像能够检测人物摆姿势的关键点信息(精确版的依赖库也略大一点)
> 参见[pose-detection](https://developers.google.cn/ml-kit/vision/pose-detection)
### [mlkit-segmentation-selfie](mlkit-segmentation-selfie)
自拍分割:通过分析图像能够将自拍照的人物特征进行分割
> 参见[selfie-segmentation](https://developers.google.cn/ml-kit/vision/selfie-segmentation)
### [mlkit-text-recognition](mlkit-text-recognition)
文字识别:识别图像中的文字信息
> 参见[text-recognition](https://developers.google.cn/ml-kit/vision/text-recognition/v2)
## 引入
### Gradle:
1. 在Project的 **build.gradle** 或 **setting.gradle** 中添加远程仓库
```gradle
repositories {
//...
mavenCentral()
}
```
2. 在Module的 **build.gradle** 里面添加引入依赖项
```gradle
//公共库 (*必须)
implementation 'com.github.jenly1314.MLKit:mlkit-common:2.3.0'
//--------------------------
//条码识别 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-barcode-scanning:2.3.0'
//人脸检测 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-face-detection:2.3.0'
//人脸网格检测 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-face-mesh-detection:2.3.0'
//图像标签 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-image-labeling:2.3.0'
//对象检测 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-object-detection:2.3.0'
//姿势检测 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-pose-detection:2.3.0'
//姿势检测精确版 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-pose-detection-accurate:2.3.0'
//自拍分割 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-segmentation-selfie:2.3.0'
//文字识别 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-text-recognition:2.3.0'
```
### 温馨提示
#### 关于MLKit版本与编译的SDK版本要求
> 使用 **v2.1.x** 以上版本时,要求 **compileSdkVersion >= 34**
> 使用 **v2.0.x** 以上版本时,要求 **compileSdkVersion >= 33**
> 如果 **compileSdkVersion < 33** 请使用 [**v1.x版本**](https://github.com/jenly1314/MLKit/tree/1.x/)
## 使用
### 版本变化说明
#### 2.x版本的变化
从 **1.x** 到 **2.x** 主要变化如下:
* 1.x版本的 **mlkit-camera-core** 核心基础库被移除了;
> 从2.0.0版本开始改为依赖[CameraScan](https://github.com/jenly1314/CameraScan);([CameraScan](https://github.com/jenly1314/CameraScan)是一个独立的库,单独进行维护)
* 1.x版本 **mlkit-barcode-scanning** 中的 **ViewfinderView** 被移除了;
> 从2.0.0版本开始改为依赖[ViewfinderView](https://github.com/jenly1314/ViewfinderView);([ViewfinderView](https://github.com/jenly1314/ViewfinderView)是一个独立的库,单独进行维护)
基于以上两点主要差异:2.x的主要使用方式和1.x基本类似,部分细节有所变更。
> 如果你是从 **1.x** 版本升级至 **2.x** 版本,那么你需要知道上面所说的差异;特别是独立出去单独维护的库,其包名都有所变化,这一点需要注意一下,大部分变动只需变更导入的包名即可完成升级。
> 如果你使用的是1.x版本的话请直接[查看v1.x分支版本](https://github.com/jenly1314/MLKit/tree/1.x/)
#### 2.x版本的使用
2.x的实现主要是以[CameraScan](https://github.com/jenly1314/CameraScan)作为基础库去实现具体的分析检测功能,所以你可以直接去看[CameraScan](https://github.com/jenly1314/CameraScan)的使用说明,只要知道了[CameraScan](https://github.com/jenly1314/CameraScan)是怎么用的,自然就会使用MLKit里面所有的子模块了。
### 各个子模块的核心类说明
下面就列一下各个子模块实现的具体功能和核心类;主要包括实现对应功能的 **Analyzer** 和便于快速实现扫描检测的 **BaseCameraScanActivity** 或 **BaseCameraScanFragment** 的子类。
| 功能 | 所属子模块 | 对应的Analyzer实现 | 对应的BaseCameraScanActivity子类 |
|:----------|:---------------------------------|:------------------------------|:---------------------------------------------------|
| 条码扫描 | mlkit-barcode-scanning | BarcodeScanningAnalyzer | BarcodeCameraScanActivity/QRCodeCameraScanActivity |
| 人脸检测 | mlkit-face-detection | FaceDetectionAnalyzer | FaceCameraScanActivity |
| 人脸网格检测 | mlkit-face-mesh-detection | FaceMeshDetectionAnalyzer | FaceMeshCameraScanActivity |
| 图像标签 | mlkit-image-labeling | ImageLabelingAnalyzer | ImageCameraScanActivity |
| 对象检测 | mlkit-object-detection | ObjectDetectionAnalyzer | ObjectCameraScanActivity |
| 姿势检测 | mlkit-pose-detection | PoseDetectionAnalyzer | PoseCameraScanActivity |
| 姿势检测(精确版) | mlkit-pose-detection-accurate | AccuratePoseDetectionAnalyzer | AccuratePoseCameraScanActivity |
| 自拍分割 | mlkit-segmentation-selfie | SegmentationAnalyzer | SegmentationCameraScanActivity |
| 文字识别 | mlkit-text-recognition | TextRecognitionAnalyzer | TextCameraScanActivity |
> **xxx** CameraScanActivity 和 **xxx** BaseCameraScanFragment 在上面只列出了一个,因为有一个 **xxx** CameraScanActivity 就有一个与之对应的 **xxx** CameraScanFragment;命名前缀一样,使用方式也基本一样。
### 条形码检测分析示例(**mlkit-barcode-scanning**)
#### 支持检测识别的条形码格式主要有:
* 线性格式:Codabar, Code 39, Code 93, Code 128, EAN-8, EAN-13, ITF, UPC-A, UPC-E
* 2D格式:Aztec, Data Matrix, PDF417, QR Code
```kotlin
BarcodeDecoder.process(bitmap).addOnSuccessListener(this) {
if (it.isNotEmpty()) {
// TODO 成功;此处可获取识别的结果
} else {
// TODO 没有结果
}
}.addOnFailureListener(this) {
// TODO 失败;出现异常
}
```
### 各个module的使用示例
#### mlkit-common (1.3.0新增)
公共库:介于Camera与各个子库之间,为各个字库提供公共业务,从而简化各子库的实现。
#### mlkit-barcode-scanning
扫条形码/二维码实现示例:通过直接继承 **BarcodeCameraScanActivity** 实现的示例
[BarcodeScanningActivity](app/src/main/java/com/king/mlkit/vision/app/barcode/BarcodeScanningActivity.kt)
扫二维码实现示例:通过间接继承 **BarcodeCameraScanActivity** 实现的示例
[QRCodeScanningActivity](app/src/main/java/com/king/mlkit/vision/app/barcode/QRCodeScanningActivity.kt)
扫二维码(多个结果)实现示例:通过间接继承 **BarcodeCameraScanActivity** 实现的示例
[MultipleQRCodeScanningActivity](app/src/main/java/com/king/mlkit/vision/app/barcode/MultipleQRCodeScanningActivity.kt)
#### mlkit-face-detection
人脸检测实现示例:通过直接继承 **FaceCameraScanActivity** 实现的示例
[FaceDetectionActivity](app/src/main/java/com/king/mlkit/vision/app/face/FaceDetectionActivity.kt)
多人脸检测实现示例:通过间接继承 **FaceCameraScanActivity** 实现的示例
[MultipleFaceDetectionActivity](app/src/main/java/com/king/mlkit/vision/app/face/MultipleFaceDetectionActivity.kt)
#### mlkit-face-mesh-detection (1.2.0新增)
人脸网格检测实现示例:通过直接继承 **FaceMeshCameraScanActivity** 实现的示例
[FaceMeshDetectionActivity](app/src/main/java/com/king/mlkit/vision/app/face/FaceMeshDetectionActivity.kt)
#### mlkit-image-labeling
图像标签实现示例:通过直接继承 **ImageCameraScanActivity** 实现的示例
[ImageLabelingActivity](app/src/main/java/com/king/mlkit/vision/app/image/ImageLabelingActivity.kt)
#### mlkit-object-detection
对象检测实现示例:通过直接继承 **ObjectCameraScanActivity** 实现的示例
[ObjectDetectionActivity](app/src/main/java/com/king/mlkit/vision/app/object/ObjectDetectionActivity.kt)
多对象检测实现示例:通过间接继承 **ObjectCameraScanActivity** 实现的示例
[MultipleObjectDetectionActivity](app/src/main/java/com/king/mlkit/vision/app/object/MultipleObjectDetectionActivity.kt)
#### mlkit-pose-detection
姿势检测实现示例:通过直接继承 **PoseCameraScanActivity** 实现的示例
[PoseDetectionActivity](app/src/main/java/com/king/mlkit/vision/app/pose/PoseDetectionActivity.kt)
#### mlkit-pose-detection-accurate
姿势检测(精确版)实现示例:通过间接继承 **AccuratePoseCameraScanActivity** 实现的示例
[AccuratePoseDetectionActivity](app/src/main/java/com/king/mlkit/vision/app/pose/AccuratePoseDetectionActivity.kt)
#### mlkit-segmentation-selfie
自拍分割实现示例:通过直接继承 **SegmentationCameraScanActivity** 实现的示例
[SelfieSegmentationActivity](app/src/main/java/com/king/mlkit/vision/app/segmentation/SelfieSegmentationActivity.kt)
#### mlkit-text-recognition
文字识别实现示例:通过直接继承 **TextCameraScanActivity** 实现的示例
[TextRecognitionActivity](app/src/main/java/com/king/mlkit/vision/app/text/TextRecognitionActivity.kt)
### 模型配置(可选)
关于依赖项下载模型(如果选择使用 Google Play Services 中的模型)则可以通过在AndroidManifest中申明配置
```xml
您也可以扫描下面的二维码,请作者喝杯咖啡 :coffee: