- 环境准备
1.1 安装 Swift
如果使用 macOS,Swift 已预装,可通过以下命令检查:
swift --version
如果没有安装,可以从 Swift 官方网站
下载并安装。
1.2 安装 Tesseract OCR
macOS (使用 Homebrew 安装 Tesseract):
brew install tesseract
Linux (Ubuntu 示例):
sudo apt update
sudo apt install tesseract-ocr
Windows (使用 Scoop):
scoop install tesseract
检查 Tesseract 是否安装成功:
tesseract --version
1.3 创建 Swift 项目
创建一个 Swift 命令行项目:
mkdir SwiftOCR
cd SwiftOCR
swift package init --type executable
然后在 Package.swift 文件中添加 SwiftyTesseract 依赖:
// swift-tools-version:5.5
import PackageDescription
let package = Package(
name: "SwiftOCR",
dependencies: [
.package(url: "https://github.com/SwiftyTesseract/SwiftyTesseract.git", from: "2.0.0")
],
targets: [
.target(
name: "SwiftOCR",
dependencies: ["SwiftyTesseract"]
)
]
)
- 代码实现
在 Sources/SwiftOCR/main.swift 中编写以下代码:
import Foundation
import SwiftyTesseract
import AppKit
// 定义 Tesseract 识别器
let tesseract = SwiftyTesseract(language: .english)
// 读取图像
let imagePath = "captcha.png" // 确保此路径下有验证码图片
guard let image = NSImage(contentsOfFile: imagePath) else {
print("无法加载图片")
exit(1)
}
// 进行 OCR 识别
tesseract.performOCR(on: image) { result in
switch result {
case .success(let text):
print("识别出的验证码: (text)")
case .failure(let error):
print("OCR 识别失败: (error)")
}
}
- 代码解析
3.1 读取图像
let imagePath = "captcha.png"
guard let image = NSImage(contentsOfFile: imagePath) else {
print("无法加载图片")
exit(1)
}
使用 NSImage 读取本地图片
如果图像不存在,则终止程序
3.2 OCR 解析
let tesseract = SwiftyTesseract(language: .english)
tesseract.performOCR(on: image) { result in
switch result {
case .success(let text):
print("识别出的验证码: (text)")
case .failure(let error):
print("OCR 识别失败: (error)")
}
}
初始化 SwiftyTesseract 并设置语言
调用 performOCR 进行识别
使用 switch 语句处理识别结果
- 运行程序
将验证码图片 captcha.png 放入项目目录,然后运行:
swift run
程序会加载验证码图片,进行 OCR 解析,并输出识别出的文本。
- 提高 OCR 识别率
5.1 调整 Tesseract 参数
let tesseract = SwiftyTesseract(language: .custom("eng"), bundle: .main)
tesseract.performOCR(on: image)
5.2 进一步图像优化
去除噪点
调整对比度
字符分割,提高单字符识别率