用 Swift 和 Tesseract 实现验证码识别

一、前提准备
安装 Tesseract OCR:
更多内容访问ttocr.com或联系1436423940
brew install tesseract
准备验证码图片,例如:captcha1.png

创建 Swift 项目或直接使用单文件脚本(推荐用 Swift CLI)

二、Swift 脚本实现(captcha.swift)

import Foundation

// 清洗字符串,仅保留大写字母和数字
func cleanText(_ text: String) -> String {
let allowed = CharacterSet(charactersIn: "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
return text.unicodeScalars.filter { allowed.contains($0) }.map { String($0) }.joined()
}

// 调用 Tesseract 识别图像
func recognizeCaptcha(imagePath: String) {
let outputBase = "output_temp"
let task = Process()
task.launchPath = "/usr/bin/env"
task.arguments = [
"tesseract",
imagePath,
outputBase,
"-l", "eng",
"-c", "tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
]

let pipe = Pipe()
task.standardError = pipe
task.launch()
task.waitUntilExit()

let outputFile = "\(outputBase).txt"
guard FileManager.default.fileExists(atPath: outputFile),
      let content = try? String(contentsOfFile: outputFile) else {
    print("识别失败:未生成输出文件")
    return
}

let result = cleanText(content)
print("识别结果: \(result)")

try? FileManager.default.removeItem(atPath: outputFile)

}

// 示例调用
let imagePath = "captcha1.png" // 替换为你的图片路径
recognizeCaptcha(imagePath: imagePath)
三、运行方法
将上述代码保存为 captcha.swift,使用以下命令运行:

swift captcha.swift
输出示例:

识别结果: 7BKC

posted @ 2025-06-28 22:30  ttocr、com  阅读(14)  评论(0)    收藏  举报