使用 Python 和 Tesseract OCR 识别验证码(增强版)

  1. 安装 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)
  1. 代码解释
    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')

posted @   ttocr、com  阅读(136)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示