使用 Swift + Tesseract OCR 解析验证码

  1. 环境准备
    1.1 安装 Xcode
    首先,确保你的 macOS 设备上已安装 Xcode,可以在终端中运行:

bash

xcode-select --install
检查 Swift 是否安装成功:

bash

swift --version
1.2 安装 Tesseract OCR
使用 Homebrew 安装 Tesseract:

bash

brew install tesseract
然后检查安装是否成功:

bash

tesseract --version
1.3 添加 SwiftOCR 依赖
使用 Swift Package Manager (SPM) 添加 SwiftOCR 依赖:

swift

dependencies: [
.package(url: "https://github.com/garnele007/SwiftOCR.git", from: "1.0.0")
]
2. 代码实现
在 main.swift 中编写如下代码:

import Foundation
import SwiftOCR
import AppKit

/// 读取图像文件
func loadImage(from path: String) -> NSImage? {
return NSImage(contentsOfFile: path)
}

/// 进行 OCR 识别
func recognizeText(from imagePath: String) -> String {
guard let image = loadImage(from: imagePath) else {
print("无法加载图像")
return ""
}

let ocrInstance = SwiftOCR()
let result = ocrInstance.recognize(image)

return result

}

let imagePath = "captcha.png" // 你的验证码图像路径
let recognizedText = recognizeText(from: imagePath)
print("识别出的验证码: (recognizedText)")
3. 代码解析
3.1 读取图像

func loadImage(from path: String) -> NSImage? {
return NSImage(contentsOfFile: path)
}
NSImage 负责在 macOS 上加载图像。

3.2 OCR 解析

let ocrInstance = SwiftOCR()
let result = ocrInstance.recognize(image)
SwiftOCR() 创建 OCR 实例

recognize(image) 进行验证码解析

  1. 运行 OCR 识别
    在终端运行:

swift main.swift
终端将输出识别的验证码内容。

  1. 提高 OCR 识别率
    5.1 预处理验证码
    可以使用 Core Image 进行灰度化处理:

func preprocessImage(_ image: NSImage) -> NSImage {
let ciImage = CIImage(data: image.tiffRepresentation!)
let filter = CIFilter(name: "CIColorControls")!
filter.setValue(ciImage, forKey: kCIInputImageKey)
filter.setValue(0.0, forKey: kCIInputSaturationKey) // 灰度化

let output = filter.outputImage!
let rep = NSCIImageRep(ciImage: output)
let newImage = NSImage(size: rep.size)
newImage.addRepresentation(rep)

return newImage

}
将灰度化图像传递给 SwiftOCR,提高识别率。

posted @ 2025-03-23 21:51  ttocr、com  阅读(15)  评论(0)    收藏  举报