当前位置: 首页 > news >正文

用 Swift 和 Tesseract OCR 实现验证码识别

一、背景介绍

Swift 是 Apple 推出的现代化编程语言,广泛应用于 iOS 和 macOS 应用开发。结合 Tesseract OCR,可以在移动和桌面应用中高效地识别验证码。本文将展示如何使用 Swift 结合 Tesseract OCR 实现验证码自动识别。

二、环境准备
2.1 安装 Homebrew(macOS)
更多内容访问ttocr.com或联系1436423940
如果尚未安装 Homebrew,可以使用以下命令安装:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2.2 安装 Tesseract OCR

通过 Homebrew 安装 Tesseract:

brew install tesseract

2.3 Swift Package Manager 添加依赖

编辑项目的 Package.swift 文件:

// swift-tools-version:5.7
import PackageDescription

let package = Package(
name: "CaptchaOCR",
platforms: [
.macOS(.v12)
],
dependencies: [
.package(url: "https://github.com/SwiftyTesseract/SwiftyTesseract.git", from: "2.0.0")
],
targets: [
.executableTarget(
name: "CaptchaOCR",
dependencies: ["SwiftyTesseract"]
)
]
)

三、代码实现
3.1 创建 Swift 文件

在项目根目录下创建 Sources/CaptchaOCR/main.swift:

import Foundation
import SwiftyTesseract
import AppKit

func preprocessImage(imagePath: String) -> NSImage? {
guard let image = NSImage(contentsOfFile: imagePath) else {
print("无法加载图像")
return nil
}

// 灰度化
let grayscale = NSImage(size: image.size)
grayscale.lockFocus()
image.draw(in: NSRect(origin: .zero, size: image.size),from: NSRect(origin: .zero, size: image.size),operation: .sourceOver,fraction: 1.0)
grayscale.unlockFocus()// 保存灰度图像(可选)
let outputPath = "processed_captcha.png"
let bitmapRep = NSBitmapImageRep(data: grayscale.tiffRepresentation!)
let pngData = bitmapRep?.representation(using: .png, properties: [:])
try? pngData?.write(to: URL(fileURLWithPath: outputPath))return grayscale

}

func recognizeCaptcha(imagePath: String) {
let tesseract = SwiftyTesseract(language: .english)

guard let preprocessedImage = preprocessImage(imagePath: imagePath) else {print("图像预处理失败")return
}tesseract.performOCR(on: preprocessedImage) { result inswitch result {case .success(let text):print("识别出的验证码: \(text.trimmingCharacters(in: .whitespacesAndNewlines))")case .failure(let error):print("OCR 识别失败: \(error)")}
}

}

let imagePath = "captcha.png"
recognizeCaptcha(imagePath: imagePath)

四、运行程序
4.1 运行 Swift 项目

在项目根目录运行以下命令:

swift run

4.2 运行效果

程序将识别图像中的验证码并输出:

识别出的验证码: A8K3D

五、识别优化
5.1 设置字符白名单

Tesseract 可以配置仅识别字母和数字:

tesseract.setVariable(.tesseditCharWhitelist, value: "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")

5.2 使用特定页面分割模式(PSM)
tesseract.setVariable(.pageSegmentationMode, value: "6")

六、应用场景

iOS 自动化测试:
使用 Swift 和 Tesseract 实现验证码自动填充,加快测试流程。

macOS 工具开发:
构建一个批量识别验证码的桌面应用,支持拖放图片识别。

文本提取和数据分析:
自动化提取图像中的数字或字母信息,提升数据录入效率。

http://www.hskmm.com/?act=detail&tid=17396

相关文章:

  • Rust 和 Tesseract OCR 实现验证码识别
  • AI-Powered-ToDo-List
  • Netty:完成RPC服务(实战)
  • Python 在 Web 开发中的应用与趋势
  • LLM MOE的进化之路
  • 相交链表-leetcode
  • AtCoder ARC114 总结 (A-C)
  • 告别单张保存!PPT 图片无损批量提取,这 3 种方法亲测有效!
  • ?模拟赛(2) 赛后总结
  • 日总结 8
  • 完整教程:讲一下ZooKeeper的持久化机制
  • 2025.9.25 sos dp小记
  • 英语_阅读_A farmer dream_待读
  • docker 私有仓库 harbor
  • vite+ts取别名@
  • 掌握C2重定向器:红蓝队攻防实战指南
  • 2025秋_3
  • day004
  • 软件测试团队准备解散了......
  • 2025秋_4
  • 【STM32H7】从零开始搭建的HAL库工程模板(基于CubeMX)
  • 重生之从零开始的神经网络算法学习之路 —— 第八篇 大型数据集与复杂模型的 GPU 训练实践
  • Avalonia:开发Android应用
  • MIT s6.828环境搭建
  • kubernetes事件监控工具--Kube-Event
  • 实用指南:【 GUI自动化测试】GUI自动化测试(一) 环境安装与测试
  • 喵喵大王の新日记
  • 多GPU本地布署Wan2.2-T2V-A14B文本转视频模型 - yi
  • NOI 模拟赛五
  • 什么是Delphi4Python?