使用 Ruby 和 Tesseract OCR 实现验证码识别

news/2025/4/2 5:08:33/文章来源:https://www.cnblogs.com/ocr12/p/18801929

一、简介
验证码识别是自动化测试和数据提取中常见的挑战。Ruby 作为一门灵活高效的脚本语言,结合 Tesseract OCR,可以快速完成验证码识别任务。本文将介绍如何使用 Ruby 实现验证码识别,并进行一些图像预处理操作来提升识别率。

二、环境准备
2.1 安装 Ruby
大多数系统自带 Ruby,可以通过以下命令检查:

ruby -v
如果未安装,可以通过 rbenv 或 RVM 进行安装。

2.2 安装 Tesseract OCR
Linux (Ubuntu):

sudo apt update
sudo apt install tesseract-ocr libtesseract-dev
macOS:
更多内容访问ttocr.com或联系1436423940
brew install tesseract
Windows: 前往 GitHub 下载并安装 Tesseract。

2.3 安装依赖库
我们需要使用以下 Ruby 库:

mini_magick:进行图像处理

rtesseract:Ruby 版 Tesseract 接口

安装这些库:

gem install mini_magick
gem install rtesseract
三、代码实现
3.1 代码结构
图像预处理

验证码识别

识别结果输出

3.2 Ruby 代码示例
创建文件 captcha_ocr.rb:

require 'mini_magick'
require 'rtesseract'

def preprocess_image(input_path, output_path)
image = MiniMagick::Image.open(input_path)

转换为灰度图像

image.colorspace 'Gray'

调整对比度和亮度

image.level '20%,80%'

二值化处理

image.threshold '50%'

调整图像大小

image.resize '300x100'

保存预处理后的图像

image.write(output_path)
end

def recognize_captcha(image_path)
processed_path = 'processed_captcha.png'
preprocess_image(image_path, processed_path)

ocr = RTesseract.new(processed_path, lang: 'eng', psm: 6)
text = ocr.to_s.strip
puts "识别出的验证码: #{text}"
end

主程序

captcha_path = 'captcha.png'
if File.exist?(captcha_path)
recognize_captcha(captcha_path)
else
puts "验证码文件不存在: #{captcha_path}"
end
四、运行程序
将验证码图片放在脚本同一目录下,并命名为 captcha.png。
运行程序:

ruby captcha_ocr.rb
示例输出:

识别出的验证码: 3F9KX
五、效果优化
5.1 调整 PSM 模式
Tesseract 支持不同的页面分割模式(PSM),在某些验证码中,单行文本模式效果更好:

ocr = RTesseract.new(processed_path, lang: 'eng', psm: 6)
5.2 使用特定语言包
如果验证码主要是数字,可以指定为数字模式:

ocr = RTesseract.new(processed_path, lang: 'eng+osd', tessedit_char_whitelist: '0123456789')
5.3 进一步图像增强
在图像预处理中,尝试去噪和边缘检测来提高字符清晰度。

六、性能和效果分析
处理速度快:Ruby 的脚本特性使其非常适合小型快速处理任务。

代码简洁:结合 Tesseract 和 MiniMagick,代码清晰易读。

识别率高:通过图像增强和 PSM 模式调整,可以显著提升识别效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/908578.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数智技术在城市生命线安全管理中的应用与进展

随着城市化进程的加速,城市生命线工程的安全治理变得尤为重要。城市生命线工程,包括燃气、供水、排水、桥梁、道路等关键基础设施,是城市运行的“血脉”和“神经”,其安全性直接关系到城市居民的生活安全和城市的稳定发展。在数字化转型的大背景下,如何利用数智化技术提升…

VMware Workstation Pro 17 安装教程 (超详细-附16版本)

由于VMware已经被博通收购了,现在官网已经下载不了,只能进博通官网下载:Home - Support Portal - Broadcom support portal 博通需要注册登录,注册时163邮箱和新浪邮箱都受限制,无法使用,觉得麻烦的百度网盘下载链接 通过网盘分享的文件:vm 17pro.zip链接: https://pan.…

libgdk-x11-2.0.so.0()(64bit) is needed by mega-11.0.13-1.x86_64

001、问题: libgdk-x11-2.0.so.0()(64bit) is needed by mega-11.0.13-1.x86_64 002、解决方法:dnf install gtk2 003、验证效果[root@PC1 mega]# rpm -ivh mega-11.0.13-1.x86_64.rpm Verifying... ################################# [100%] Pr…

Nacos 2.2.x版本客户端注册监听器时的多网卡问题

背景 在本地环境启动Nacos和SpringBoot应用测试nacos的配置监听特性,Nacos控制台在本地以单机模式启动,SpringBoot应用在IDEA中启动;本地环境有一个VMWare虚拟机实例。 问题 Nacos控制台绑定的IP为VMware虚拟机网卡的IP Nacos控制台启动后绑定的IP为VMware虚拟网卡的IP:192…

libXss.so.1()(64bit) is needed by mega-11.0.13-1.x86_64

001、问题 libXss.so.1()(64bit) is needed by mega-11.0.13-1.x86_64 002、解决方法:yum install libXScrnSaver 003、验证: 刚才的报错消失。

SuperPoint

提出了一种全卷积神经网络架构,用于兴趣点检测和描述,该架构使用一种名为单应性自适应(Homographic Adaptation)的自监督域自适应框架进行训练。我们的实验表明:(1)可以将知识从合成数据集迁移到真实世界的图像上;(2)稀疏兴趣点检测和描述可以作为一个高效的卷积神经网络来实…

Linux 系统中mega软件的安装

001、官方网站:https://www.megasoftware.net/002、下载Linux安装包 (centos系统) 003、

把目光转向新质生产力:高端装备的数字样机技术

在全球化与数字化的大背景下,科技创新已成为重塑生产力结构的核心要素。2023年12月召开的中央经济工作会议上指出:“要以科技创新推动产业创新,特别是以颠覆性技术和前沿技术催生新产业、新模式、新动能,发展新质生产力。” 新质生产力,指创新起主导作用,摆脱传统经济增长…