ML Kit 教程:掌握 iOS 图像文字检测和识别
2024-01-22 23:12:50
几年前,机器学习开发者分成两类:高级开发者是一类,其余的人则是另一类。机器学习的底层部分有可能很难,因为它涉及很多数学知识,还用到逻辑回归(logistic regression)、决策树(decision trees)和支持向量机(support vector machine)等概念。然而,随着机器学习变得越来越受欢迎,很多工具和框架应运而生,这些工具和框架让机器学习对各种技能水平的开发人员来说变得更加容易。
一个这样的框架是Google的ML Kit。ML Kit是一个移动机器学习SDK,它提供了一系列的功能,包括图像检测、文字识别、图像识别、对象检测、物体识别、物体跟踪、人脸识别、手势识别、语音识别、自然语言处理、机器翻译、图像分割、文本生成、图像生成、图像增强、超分辨率、风格迁移、神经网络、深度学习和人工智能。
在这篇ML Kit教程中,你会学习如何使用Google的ML Kit进行文字检测和识别。这个教程将引导你完成以下步骤:
- 安装ML Kit。
- 创建一个新的iOS项目。
- 将ML Kit添加到你的项目。
- 使用核心机器学习框架创建你的第一个机器学习模型。
- 使用ML Kit文字识别API识别图像中的文字。
识别基础文本
首先,让我们从识别基础文本开始。为此,你需要一张带有文本的图像。你可以在网上找到很多这样的图像,或者你可以自己用手机拍一张。
一旦你有了图像,你就可以开始使用ML Kit文字识别API识别图像中的文字。为此,你需要创建一个新的iOS项目。一旦你创建了项目,你就可以将ML Kit添加到你的项目。
要将ML Kit添加到你的项目,你需要在你的Podfile中添加以下行:
pod 'Firebase/MLVision'
一旦你将ML Kit添加到你的项目,你就可以开始使用核心机器学习框架创建你的第一个机器学习模型。为此,你需要创建一个新的类并将其命名为MyMLModel。在MyMLModel类中,你需要添加以下代码:
import CoreML
class MyMLModel: MLModel {
override func predict(input: MLFeatureProvider) throws -> MLFeatureProvider {
let vision = try MLModel(for: MLModelIdentifier(MLModelType: "Vision", subType: "TextRecognition"), parameters: nil)
let output = try vision.prediction(from: input)
return output
}
}
一旦你创建了MyMLModel类,你就可以开始使用ML Kit文字识别API识别图像中的文字。为此,你需要创建一个新的函数并将其命名为recognizeText。在recognizeText函数中,你需要添加以下代码:
func recognizeText(image: UIImage) {
let model = MyMLModel()
let input = MLFeatureValue(cgImage: image.cgImage!, type: .image)
let output = try model.prediction(from: [input: "image"])
let results = output["textDetections"] as! [MLVisionTextObservation]
for result in results {
print(result.text)
}
}
现在你已经创建了一个可以识别图像中文字的函数,你可以在你的应用程序中使用它。只需将图像传递给recognizeText函数,它将打印图像中的文字。
使用设备的摄像头识别实时场景中的文本
除了识别基础文本之外,你还可以使用ML Kit文字识别API使用设备的摄像头识别实时场景中的文本。为此,你需要创建一个新的函数并将其命名为captureSessionOutput。在captureSessionOutput函数中,你需要添加以下代码:
func captureSessionOutput(output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer) {
let image = CVPixelBufferGetImageBuffer(sampleBuffer)
let uiImage = UIImage(cgImage: image!)
recognizeText(image: uiImage)
}
现在你已经创建了一个可以捕获视频帧并使用ML Kit文字识别API识别视频帧中文字的函数,你可以在你的应用程序中使用它。只需创建一个新的AVCaptureSession并将其添加到你的应用程序。然后,将captureSessionOutput函数传递给AVCaptureSession并启动捕获会话。
现在你已经可以在iOS应用程序中使用ML Kit文字识别API识别图像和实时视频帧中的文字了。这个API非常强大,可以用于各种各样的应用程序。例如,你可以使用它来创建能够识别路标的应用程序,或者你可以使用它来创建能够识别产品条形码的应用程序。