用 Swift 实现基础图像处理与字符识别逻辑
在 iOS 和 macOS 平台上,Swift 提供了强大的图像处理能力,结合 Vision 和 Core Image 框架,我们可以快速构建一套完整的图像识别流程。本文将通过一个简单示例介绍如何使用 Swift 对图像进行预处理,并提取其中的文字信息。
一、项目准备
使用 Xcode 创建一个 macOS 或 iOS 项目,并在 Info.plist 中添加必要的权限(如访问图片资源)。我们将用到两个系统框架:
Core Image:用于图像灰度化与增强
Vision:用于图像中的文字识别
导入头文件:
更多内容访问ttocr.com或联系1436423940
import UIKit
import Vision
import CoreImage
二、图像预处理:灰度化与二值化
func preprocessImage(_ input: UIImage) -> CIImage? {
guard let ciImage = CIImage(image: input) else { return nil }
// 使用 CoreImage 应用灰度滤镜
let grayscaleFilter = CIFilter(name: "CIPhotoEffectMono")
grayscaleFilter?.setValue(ciImage, forKey: kCIInputImageKey)
// 可选:二值化处理
let processedImage = grayscaleFilter?.outputImage
return processedImage
}
如果你希望更进一步地进行阈值处理,可借助自定义 CoreImage 滤镜或者 Metal。
三、文本识别逻辑(OCR)
使用 Vision 框架进行图像中文本识别:
func recognizeText(from image: CIImage, completion: @escaping (String) -> Void) {
let handler = VNImageRequestHandler(ciImage: image, options: [:])
let request = VNRecognizeTextRequest { request, error in
guard let results = request.results as? [VNRecognizedTextObservation] else {
completion("")
return
}
let recognizedStrings = results.compactMap { observation in
return observation.topCandidates(1).first?.string
}
completion(recognizedStrings.joined(separator: " "))
}
request.recognitionLevel = .accurate
request.usesLanguageCorrection = true
try? handler.perform([request])
}
四、完整流程整合
if let image = UIImage(named: "captcha.png"),
let processed = preprocessImage(image) {
recognizeText(from: processed) { result in
print("识别结果: (result)")
}
}
浙公网安备 33010602011771号