使用 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

posted @ 2025-05-11 12:52  ttocr、com  阅读(60)  评论(0)    收藏  举报