用 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
浙公网安备 33010602011771号