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

用 Swift 结合 Tesseract OCR 进行验证码识别

  1. 环境准备
    1.1 安装 Xcode 和 Swift

确保你的 macOS 设备上安装了 Xcode:

xcode-select --install

检查 Swift 版本:

swift --version

1.2 安装 Tesseract OCR
更多内容访问ttocr.com或联系1436423940
使用 Homebrew 安装 Tesseract:

brew install tesseract

安装完成后,检查版本:

tesseract --version

1.3 创建 Swift 项目

创建一个新的 Swift 项目:

mkdir SwiftOCR
cd SwiftOCR
swift package init --type executable

1.4 添加依赖

在 Package.swift 文件中添加 SwiftTesseract 依赖:

// swift-tools-version:5.7
import PackageDescription

let package = Package(
name: "SwiftOCR",
dependencies: [
.package(url: "https://github.com/gali8/Tesseract-OCR-iOS.git", from: "5.4.0")
],
targets: [
.executableTarget(
name: "SwiftOCR",
dependencies: ["Tesseract-OCR-iOS"]
)
]
)

然后运行:

swift build

  1. 代码实现

在 Sources/SwiftOCR/main.swift 文件中编写如下代码:

import Foundation
import TesseractOCR
import AppKit

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

// 将图像转换为灰度
let grayImage = imageToGrayScale(image: image)// 保存处理后的图像(可选)
let outputPath = "processed_captcha.png"
saveImage(image: grayImage, path: outputPath)return grayImage

}

// 灰度化处理
func imageToGrayScale(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 outputCIImage = filter.outputImage!

let rep = NSCIImageRep(ciImage: outputCIImage)
let nsImage = NSImage(size: rep.size)
nsImage.addRepresentation(rep)return nsImage

}

// 保存图像
func saveImage(image: NSImage, path: String) {
guard let tiffData = image.tiffRepresentation,
let bitmap = NSBitmapImageRep(data: tiffData),
let pngData = bitmap.representation(using: .png, properties: [:]) else {
return
}
try? pngData.write(to: URL(fileURLWithPath: path))
}

// OCR 识别
func recognizeCaptcha(imagePath: String) {
guard let processedImage = preprocessImage(imagePath: imagePath) else {
return
}

if let tesseract = G8Tesseract(language: "eng") {tesseract.image = processedImagetesseract.recognize()if let recognizedText = tesseract.recognizedText {print("识别出的验证码: \(recognizedText.trimmingCharacters(in: .whitespacesAndNewlines))")} else {print("OCR 识别失败")}
} else {print("无法初始化 Tesseract")
}

}

// 运行程序
let imagePath = "captcha.png" // 确保该路径下有验证码图片
recognizeCaptcha(imagePath: imagePath)

  1. 代码解析
    3.1 预处理验证码
    func preprocessImage(imagePath: String) -> NSImage?

加载图像

转换为灰度

保存处理后的图像(可选)

3.2 OCR 解析
if let tesseract = G8Tesseract(language: "eng") {
tesseract.image = processedImage
tesseract.recognize()
}

使用 G8Tesseract 进行 OCR 识别

输出验证码结果

  1. 运行程序

确保 captcha.png 存在,然后运行:

swift run

程序会加载验证码图片,进行处理,并输出识别出的文本。

  1. 提高 OCR 识别率

优化 Tesseract 识别参数

tesseract.pageSegmentationMode = .singleLine
tesseract.charWhitelist = "0123456789abcdefghijklmnopqrstuvwxyz"

去除噪点(可以使用 Core Image 进行更多图像处理

http://www.gsyq.cn/news/194687.html

相关文章:

  • 亲测降至5%以下!10款亲测有效的降AI率工具推荐(2026最新有效版)
  • MATH Day 01 - 群的定义及四条公理
  • 2025年PLC控制柜源头厂怎么挑?看这份高评榜单,室外电气控制柜/PLC控制柜,PLC控制柜厂商选哪家 - 品牌推荐师
  • 2025汉口黄沙定制优选指南,排名前列厂家大揭秘!新洲黄沙优质企业盘点及核心优势详细解读 - 品牌推荐师
  • 2026.1.1总结
  • Rust 结合 Tesseract OCR 进行验证码识别
  • 2026最新盘点:最火的10款降ai率工具汇总,不花一分钱真的靠谱吗?(附踩坑指南)
  • 用 Swift 结合 Tesseract 进行验证码识别
  • 深度学习毕设项目推荐-基于VGG的图像风格迁移算法实现及系统应用实现
  • AI生成PPT好用吗?工作总结场景下的工具排名更新
  • DeepSeek2026新论文,有何风向标,梁文锋亲自署名
  • π∗0.6: a VLA That Learns From Experience
  • 2026 年工作计划 PPT 生成效率对比:AI 能省多少时间
  • 题解:[NERC 2025] LLM Training
  • 2025年板材货架市场:十大热门厂家口碑与销量排行,钢板存放架/滑动式流利货架/板材放置架,板材货架厂商排行榜单 - 品牌推荐师
  • GCC是什么?
  • Webmozart Assert:PHP类型安全的强力守卫
  • Golang 智能体LLM调用开发
  • 深度学习毕设项目:基于卷积神经网络的垃圾图像分类系统研究与实现
  • win11禁止自动更新,永久关闭win11自动更新工具,win10/11永久关闭系统自动更新
  • 4.2 ChatGPT JSON Mode 实战:结构化输出让AI回答更易于程序处理
  • 7.2 选择你的开发利器:Operator SDK vs Kubebuilder全方位对比
  • 第9章 语言级自我改进:Reflexion 与记忆机制
  • 6.2 智能故障诊断系统:基于LLM的K8s问题定位与解决方案推荐
  • 深度学习毕设选题推荐:基于 LSTM 模型的古诗词自动生成算法实现及系统实现
  • 学长亲荐!8个一键生成论文工具测评:研究生开题报告写作全攻略
  • ctf.show-路径遍历突破
  • 在MATLAB中基于深度学习预测NASA涡扇发动机剩余使用寿命
  • django基于大数据的旅游景区推荐系统_juj13-爬虫可视化
  • 【计算机毕业设计案例】基于ManTra-Net的图像篡改检测方法研究与应用实现