用 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)")
}
}

posted @ 2025-05-17 17:19  ttocr、com  阅读(45)  评论(0)    收藏  举报