当前位置: 首页 > news >正文

用Python 实现验证码识别:Tesseract OCR 实践指南

验证码(CAPTCHA)广泛用于防止自动化提交,但在自动化测试、数据采集等场景下,我们可能需要自动识别验证码。本文将介绍如何使用 Python 结合 Tesseract OCR 解析验证码,并通过图像处理优化识别效果。

  1. 环境准备

在编写代码前,我们需要安装 Python 和 Tesseract OCR,并安装必要的 Python 库。

1.1 安装 Python

如果尚未安装 Python,可以前往 Python 官方网站
下载最新版本,并确保 pip 可用:

python --version
pip --version
更多内容访问ttocr.com或联系1436423940
1.2 安装 Tesseract OCR
Windows 用户

访问 Tesseract 官方 GitHub
下载 Windows 安装包。

按照安装向导完成安装,并将 Tesseract 添加到系统环境变量。

Linux 用户(Ubuntu 示例)
sudo apt update
sudo apt install tesseract-ocr

macOS 用户(使用 Homebrew)
brew install tesseract

安装完成后,运行以下命令检查是否安装成功:

tesseract --version

1.3 安装 Python 依赖库

在 Python 中使用 Tesseract OCR,需要安装 pytesseract,以及用于图像处理的 Pillow 和 OpenCV:

pip install pytesseract pillow opencv-python

  1. 代码实现:解析验证码

下面的 Python 代码示例展示了如何读取验证码图像,进行预处理,并使用 Tesseract 进行 OCR 解析。

2.1 代码示例
import cv2
import pytesseract
from PIL import Image

配置 Tesseract 路径(Windows 用户需修改为安装路径)

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

def preprocess_image(image_path):
"""加载验证码图片并进行预处理"""
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) # 转换为灰度图像

# 二值化处理,增强字符对比度
_, binary_img = cv2.threshold(img, 128, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)# 可选:降噪处理
binary_img = cv2.medianBlur(binary_img, 3)return binary_img

def recognize_captcha(image_path):
"""使用 Tesseract OCR 解析验证码"""
processed_img = preprocess_image(image_path)

# 将 OpenCV 图像转换为 PIL 格式
pil_img = Image.fromarray(processed_img)# 设定 Tesseract 识别模式,适用于验证码
custom_config = r'--oem 3 --psm 6'# 进行 OCR 识别
text = pytesseract.image_to_string(pil_img, config=custom_config)return text.strip()

if name == "main":
captcha_image = "captcha.png" # 替换为你的验证码图片路径
result = recognize_captcha(captcha_image)
print(f"识别出的验证码: {result}")

  1. 代码解析
    3.1 图像预处理

为了提高 OCR 识别准确率,代码对图像进行了以下优化处理:

灰度化:使用 cv2.IMREAD_GRAYSCALE 去除颜色干扰。

二值化:通过 cv2.threshold() 提高字符对比度,使 OCR 更容易识别。

降噪(可选):使用 cv2.medianBlur() 平滑图像,去除干扰噪点。

3.2 OCR 识别

通过 pytesseract.image_to_string() 调用 Tesseract 进行字符识别。

使用 --psm 6 设定页面分割模式,适用于单行验证码文本。

  1. 运行程序

将代码保存为 captcha_reader.py,并确保 captcha.png 图片位于同一目录下,然后运行:

python captcha_reader.py

程序将自动加载验证码图片,进行预处理,并输出识别的验证码文本。

  1. 提高 OCR 识别准确率

如果验证码较复杂,Tesseract 可能无法精准识别,可以尝试以下优化方法:

5.1 调整 PSM 模式

Tesseract 提供不同的页面分割模式(PSM),验证码通常是一行文本,因此可以使用 PSM 6:

custom_config = r'--oem 3 --psm 6'

5.2 选择合适的 OCR 语言

如果验证码只包含数字和英文字母,可以指定 eng(英语):

text = pytesseract.image_to_string(pil_img, lang="eng", config=custom_config)

5.3 进一步优化图像

去除噪点:可使用 高斯模糊 或 形态学处理 过滤背景干扰。

字符分割:如果验证码字符相互粘连,可以尝试分割算法,提高单字符识别率。

5.4 采用深度学习 OCR 方案

如果 Tesseract 识别效果不佳,可以尝试基于深度学习的 OCR 方案,例如:

EasyOCR

PaddleOCR

http://www.sczhlp.com/news/78490/

相关文章:

  • Linux系统编程入门(下)
  • UDP通信:解决socket连接关闭后缓冲内容未清除的问题
  • 验证码自动识别:使用 Java 和 Tesseract OCR 实现
  • 集团网站群建设方案黄骅港务
  • 南宁网站建设公司比优建站域名备案查询网
  • 做网站找哪家好思南安卓开发流程
  • 网站关键词符号贵州建网站报价
  • 有关做甜点的网站太仓做网站公司
  • 怎么做qq靓号网站徐州建站软件
  • 深圳制作网站培训学校网站克隆下来了然后再怎么做
  • 个人在国外网站做电商微信如何制作网页
  • 网站响应式和电脑手机做网站能赚到流量费吗
  • ARC181E Min and Max at the edge
  • 杭州网站定制门户网站建设哪家便宜
  • 星月教你做网站回顾文档无锡设计公司企业方面
  • 简述企业网站建设的目的小程序开发多少钱
  • 申请网站百度推广 个人网站
  • 如何给自己开发的网站加域名百度收录网站标题
  • 视频网址制作教程网站配置优化
  • 小公司网站开发营销网站建设汉狮电话
  • 网站建设怎么更换图片wordpress多博客
  • shell鸡兔同笼问题
  • 西宁设计网站网站后台管理系统密码
  • 上海网站建设设计培训信息
  • 什么是二级网站推广wordpress 百度云
  • 做网站需要哪些软件基层建设 官方网站
  • 几年做啥网站能致富上海企业自助建站
  • 理想单端校准件的反射系数
  • 公司做网站是com好还是cn好无代码开发平台 开源
  • 做网站需要哪些流程天津响应式网站建设