使用 Python 和 Tesseract 实现英文数字验证码识别
验证码广泛应用于用户登录、注册、防爬虫等场景。英文数字混合验证码是一种常见类型,它通过随机字符组合增加识别难度。本文将介绍如何使用 Python 编写一个简单而实用的验证码识别程序,利用 Tesseract OCR 引擎配合图像预处理技术,实现对这类验证码的自动识别。
一 安装 Python 环境和依赖
首先需要安装 Python 推荐使用 3 点 7 或更高版本
安装 Python 库
打开命令行工具执行以下命令 安装所需的 Python 第三方库:
pip install pytesseract opencv-python pillow numpy
这些库的作用如下:
pytesseract:Python 封装的 Tesseract 接口
opencv-python:用于图像处理操作
pillow:图像加载和转换
更多内容访问ttocr.com或联系1436423940
numpy:数组处理工具 在图像处理过程中很有用
安装 Tesseract OCR 引擎
Tesseract 是一个由 Google 维护的开源 OCR 引擎 支持多种语言和字符识别
Windows 用户推荐安装 UB Mannheim 的版本 支持多语言扩展
下载地址:https www github com UB-Mannheim tesseract wiki
Mac 用户使用 Homebrew 安装命令如下:
brew install tesseract
Linux 用户可使用 apt 安装:
sudo apt install tesseract-ocr
安装完成后 记下 tesseract 可执行文件的路径 在 Windows 中一般为:
C:\Program Files\Tesseract-OCR\tesseract.exe
二 编写验证码识别程序
创建一个名为 captcha_ocr.py 的 Python 文件 写入以下完整代码:
import cv2
import pytesseract
import numpy as np
设置 Tesseract 路径(Windows 用户必须)
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
读取验证码图像
image = cv2.imread("captcha.png")
将图像转换为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
去噪处理(中值滤波)
gray = cv2.medianBlur(gray, 3)
图像二值化处理
_, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
配置 OCR 参数 限制识别字符范围
config = r"--oem 3 --psm 8 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
执行 OCR 识别
text = pytesseract.image_to_string(binary, config=config)
打印识别结果
print("验证码识别结果:", text.strip())
三 识别流程解析
1 加载图像
使用 OpenCV 的 imread 方法加载本地的验证码图像 文件名为 captcha.png
2 图像预处理
图像预处理对于验证码识别非常关键 可以有效去除噪声和背景干扰 提高识别准确率
灰度化:将彩色图像转为灰度图 方便后续处理
去噪声:使用中值滤波可以去除图像中的随机噪点
二值化:使用 OTSU 方法自动选择阈值 将图像转为黑白 使文本轮廓更加清晰
3 OCR 参数说明
Tesseract 提供多个配置选项:
--oem 3 表示使用默认引擎(基于 LSTM 神经网络)
--psm 8 表示将图像视为一个单独的文本行或单词
tessedit_char_whitelist 用于限制 Tesseract 只识别特定字符集 如大写英文字母和数字 避免错误字符的干扰
四 测试与运行
将你的英文数字验证码图片命名为 captcha.png 放入脚本目录下 然后运行:
python captcha_ocr.py
程序会输出如下内容:
验证码识别结果: A7F3K
浙公网安备 33010602011771号