利用 Swift + Vision 实现图像预处理与文本识别利用 Swift + Vision 实现图像预处理与文本识别

图像处理和识别技术是现代 iOS 应用中常见的核心能力之一,从自动扫描文档到识别验证码,图像预处理的质量直接影响最终的识别效果。本文将使用 Swift 结合 Vision 和 Core Image,介绍如何在 iOS/macOS 环境中完成图像处理与文本识别流程。

一、技术选型
Swift:Apple 官方推荐语言,适合 iOS/macOS 应用开发。

Core Image:强大的图像处理框架,用于灰度化、滤波、二值化等。

Vision:Apple 提供的高阶计算机视觉框架,可用于文本检测与识别。

二、图像预处理流程
我们使用 Core Image 实现图像的灰度化与二值化:

import UIKit
import CoreImage

func preprocessImage(_ image: UIImage) -> CIImage? {
guard let ciImage = CIImage(image: image) else { return nil }

// 灰度化
let grayscaleParams: [String: Any] = [
    kCIInputImageKey: ciImage
]
let grayscale = CIFilter(name: "CIPhotoEffectMono", parameters: grayscaleParams)?.outputImage

// 二值化(自适应阈值替代)
let thresholdFilter = CIFilter(name: "CIColorClamp")!
thresholdFilter.setValue(grayscale, forKey: kCIInputImageKey)
thresholdFilter.setValue(CIVector(x: 0.9, y: 0.9, z: 0.9, w: 1), forKey: "inputMaxComponents")
thresholdFilter.setValue(CIVector(x: 0.1, y: 0.1, z: 0.1, w: 0), forKey: "inputMinComponents")

return thresholdFilter.outputImage

}更多内容访问ttocr.com或联系1436423940
三、文本识别流程(OCR)
处理完图像后,我们使用 Vision 框架识别其中的文本:

import Vision

func recognizeText(from ciImage: CIImage) {
let handler = VNImageRequestHandler(ciImage: ciImage, options: [:])
let request = VNRecognizeTextRequest { (request, error) in
guard let observations = request.results as? [VNRecognizedTextObservation] else { return }

    for observation in observations {
        if let topCandidate = observation.topCandidates(1).first {
            print("识别结果:\(topCandidate.string)")
        }
    }
}
request.recognitionLevel = .accurate
request.usesLanguageCorrection = true

do {
    try handler.perform([request])
} catch {
    print("识别失败:\(error)")
}

}
四、完整使用流程示例

func processAndRecognize(image: UIImage) {
guard let processedCIImage = preprocessImage(image) else {
print("图像预处理失败")
return
}
recognizeText(from: processedCIImage)
}
调用示例:

if let inputImage = UIImage(named: "captcha.png") {
processAndRecognize(image: inputImage)
}

posted @ 2025-05-15 10:33  ttocr、com  阅读(71)  评论(0)    收藏  举报