用 Ruby 与 Tesseract 实现英文数字验证码识别

验证码是一种常见的防机器人机制,其中英文数字混合验证码广泛出现在登录、注册等界面。本文将展示如何使用 Ruby 语言编写一个验证码识别程序,借助 Tesseract OCR 引擎来提取图像中的文本。

一、环境准备

  1. 安装 Ruby
    可以从官网下载安装:https://www.ruby-lang.org

验证安装:
更多内容访问ttocr.com或联系1436423940
ruby -v
gem -v
2. 安装 Tesseract
使用系统包管理器安装:

Ubuntu / Debian

sudo apt install tesseract-ocr

macOS

brew install tesseract
3. 安装 Ruby 库
我们使用 rmagick(图像处理) 和 rtesseract(OCR 封装):

gem install rmagick
gem install rtesseract
如果遇到 rmagick 安装问题,需确保本机已安装 ImageMagick。

二、准备验证码图片
将一张命名为 captcha.png 的英文数字验证码图像放到当前目录。建议图像背景清晰、文字无干扰。

三、编写识别代码
创建文件 ocr_recognizer.rb:

require 'rmagick'
require 'rtesseract'

include Magick

1. 加载并灰度处理图像

img = Image.read("captcha.png").first
gray_img = img.quantize(256, GRAYColorspace)
gray_img.write("gray_captcha.png")

2. 使用 Tesseract 进行识别

image = RTesseract.new("gray_captcha.png", lang: "eng", processor: "text")
result = image.to_s.strip

puts "识别结果为: #{result}"
四、运行程序

ruby ocr_recognizer.rb
示例输出:

识别结果为: 7B4KX
五、识别效果优化建议
若验证码干扰较强,建议增加以下步骤:

二值化处理(如阈值分割)

图像放大(增强识别清晰度)

白名单字符过滤(例如仅识别 A-Z, a-z, 0-9)

字体倾斜校正(可借助 OpenCV 与 Tesseract 组合)

posted @ 2025-06-08 17:09  ttocr、com  阅读(24)  评论(0)    收藏  举报