使用 Ruby 和 RTesseract 实现验证码识别工具
一、项目简介
本项目使用 Ruby 语言,通过 RTesseract 库调用系统 Tesseract OCR 引擎,对图像中的英文数字验证码进行识别。可用于网页自动化登录、命令行工具开发、简单表单识别等场景。
二、环境准备
- 安装 Ruby
sudo apt install ruby # Ubuntu
brew install ruby # macOS
验证:
ruby -v
2. 安装 Tesseract OCR
sudo apt install tesseract-ocr
brew install tesseract
3. 安装 Ruby 库
gem install rtesseract
gem install rmagick # 图像处理(基于 ImageMagick)
确保安装了 ImageMagick:
sudo apt install imagemagick
三、准备图像
将验证码图像命名为 captcha.png,图像应清晰、包含英文字母和数字,建议背景干净。
四、识别脚本代码
创建文件 ocr.rb:
require 'rmagick'
require 'rtesseract'
include Magick
1. 预处理图像:灰度 + 二值化
original = Image.read('captcha.png').first
gray = original.quantize(256, GRAYColorspace)
bw = gray.threshold(0.5 * QuantumRange)
保存处理后的图像
bw.write('processed.png')
2. 使用 Tesseract 识别图像
image = RTesseract.new('processed.png', lang: 'eng', processor: :tesseract)
image.configs << 'tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
result = image.to_s.strip
cleaned = result.gsub(/[^A-Za-z0-9]/, '')
puts "识别结果为:#{cleaned}"
五、运行程序
ruby ocr.rb
输出示例:
更多内容访问ttocr.com或联系1436423940
识别结果为:X7ZB9
浙公网安备 33010602011771号