使用 Python 和 Tesseract OCR 识别验证码(增强版)
- 安装 Tesseract 和 Python 依赖
同样地,你需要安装 Tesseract OCR 和相关的 Python 库:更多内容访问ttocr.com或联系1436423940
安装 Tesseract
在 Windows 上,你可以从 Tesseract 官方 GitHub 下载 Tesseract 安装包并按照说明进行安装。
安装完成后,请确保将 Tesseract 的安装路径添加到系统环境变量中。例如,安装路径可能类似于 C:\Program Files\Tesseract-OCR\tesseract.exe。
安装 Python 依赖
使用 pip 安装 pytesseract 和 Pillow,以及图像处理库 opencv-python:
bash
pip install pytesseract Pillow opencv-python numpy
2. 编写 Python 代码
下面是一个改进版的 Python 代码,加入了更多的图像处理步骤来提高验证码的识别精度。
python
import pytesseract
from PIL import Image
import cv2
import numpy as np
设置 Tesseract 路径,若已将其添加到环境变量中可忽略此行
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
def preprocess_image(image_path):
# 使用 OpenCV 进行更复杂的图像预处理
img = cv2.imread(image_path)
# 转为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 去噪 - 使用高斯模糊
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
# 二值化 - 使用自适应阈值
binary = cv2.adaptiveThreshold(blurred, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 11, 2)
# 腐蚀和膨胀操作去除噪点
kernel = np.ones((3, 3), np.uint8)
dilated = cv2.dilate(binary, kernel, iterations=1)
return dilated
def recognize_captcha(image_path):
# 预处理图像
processed_image = preprocess_image(image_path)
# 将处理后的图像保存为临时文件
temp_image_path = "processed_captcha.png"
cv2.imwrite(temp_image_path, processed_image)
# 使用 Tesseract 进行 OCR 识别
text = pytesseract.image_to_string(Image.open(temp_image_path))
return text.strip()
if name == 'main':
# 输入验证码图像路径
captcha_image_path = 'captcha_image.png'
# 识别验证码
captcha_text = recognize_captcha(captcha_image_path)
print("识别的验证码是:", captcha_text)
- 代码解释
Tesseract 设置:如果你没有将 Tesseract 路径添加到环境变量中,可以通过以下代码指定其路径:
python
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
图像预处理:图像预处理是识别验证码时提高准确率的关键。这个例子使用了以下处理技术:
灰度化:将原图转换为灰度图,减少颜色信息,专注于文字。
高斯模糊:使用高斯模糊来去除图像中的噪点,这对提高后续处理的效果有帮助。
自适应阈值:自动计算图像的阈值,能够处理不同光照条件下的图像。
腐蚀和膨胀:通过腐蚀操作去掉小的噪点,膨胀操作帮助字符连贯,这样可以去除干扰。
Tesseract 识别:通过 pytesseract.image_to_string() 来识别图像中的文字。
图像处理的关键步骤:
去噪:高斯模糊有助于去除图像中的细小噪点。
自适应阈值:使图像适应不同的光照条件,更加清晰。
形态学操作:腐蚀和膨胀有助于清理字符形态,去除背景干扰。
4. 运行程序
确保你已安装所有依赖包,并准备好验证码图片(例如 captcha_image.png)。运行 Python 程序后,控制台将打印识别的验证码。
makefile
识别的验证码是: 2d8f5
5. 改进和优化
噪声去除:如果验证码中有很多杂散线条或噪声,可以尝试不同的去噪算法(例如中值滤波、形态学操作等)。
字符分割:对于重叠的字符,可能需要使用字符分割算法。可以使用轮廓检测来单独提取每个字符。
训练模型:如果验证码的复杂度较高(如含有干扰线、变形等),考虑通过机器学习或深度学习模型进行验证码识别。Tesseract 是基于传统的 OCR 技术,对于更复杂的情况可能需要更先进的模型。
多语言支持:Tesseract 支持多语言,可以加载不同语言的训练数据来适应不同语言的验证码识别。
例如,加载中文简体训练数据:
text = pytesseract.image_to_string(Image.open(temp_image_path), lang='chi_sim')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异