首页 > 编程语言 >使用 Python 实现验证码识别的简单教程

使用 Python 实现验证码识别的简单教程

时间:2025-01-16 18:42:56浏览次数:1  
标签:教程 OCR Python image 验证码 识别 Tesseract

验证码是用于验证用户是否为机器人的重要工具。在本教程中,我们将利用 Python 和 Tesseract OCR 引擎编写一个程序,用于识别英文和数字组成的验证码。通过适当的图像预处理,我们可以有效地提高识别的准确性。

  1. 环境配置更多内容访问ttocr.com或联系1436423940
    安装 Python 和必需库
    首先,确保你的电脑已安装 Python。如果未安装,请访问 Python 官方网站下载并安装适合的版本。

接下来,我们需要安装以下依赖库:

pytesseract:Tesseract OCR 的 Python 接口,用于与 OCR 引擎交互。
Pillow:用于处理和操作图像。
opencv-python:用于对验证码图像进行预处理。
使用以下命令通过 pip 安装这些库:

bash

pip install pytesseract pillow opencv-python
安装 Tesseract OCR
Tesseract OCR 是一个开源的光学字符识别引擎,必须安装在系统中。根据你的操作系统,以下是安装方法:

Linux:
bash

sudo apt install tesseract-ocr
macOS(通过 Homebrew):
bash

brew install tesseract
Windows:
前往 Tesseract 官方下载页面下载适合的安装包,并完成安装。安装完成后,需要将 Tesseract 的路径添加到环境变量中。
安装完成后,可以运行以下命令检查版本信息:

bash

tesseract --version
2. 代码示例:验证码识别
以下是一个简单的 Python 脚本,用于加载验证码图片、对其进行处理并识别文本内容:

python

import pytesseract
from PIL import Image, ImageOps
import cv2

Windows 用户需要手动设置 Tesseract 的路径(根据你的实际安装路径修改)

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

1. 加载验证码图片

image_path = "captcha_example.png"
image = Image.open(image_path)

2. 将图片转为灰度图,去除颜色干扰

gray_image = ImageOps.grayscale(image)

3. 进行图像的二值化处理(增强对比度)

gray_cv_image = cv2.cvtColor(cv2.imread(image_path), cv2.COLOR_BGR2GRAY)
_, binary_image = cv2.threshold(gray_cv_image, 128, 255, cv2.THRESH_BINARY)

保存处理后的图片(可选)

cv2.imwrite("processed_captcha.png", binary_image)

4. 使用 Tesseract OCR 进行识别

recognized_text = pytesseract.image_to_string(binary_image, config="--psm 6")

5. 输出识别结果

print(f"识别的验证码是:{recognized_text.strip()}")
3. 关键代码解析
图像加载与预处理:

使用 Pillow 库加载图片,并通过 ImageOps.grayscale 将其转换为灰度图像,减少颜色对 OCR 的干扰。
使用 OpenCV 进一步对图像进行二值化(黑白化),以突出文本部分。
Tesseract OCR 的使用:

pytesseract.image_to_string 是核心方法,用于将图片转换为文本。
--psm 6 参数告诉 Tesseract 将输入视为单行文本,适用于验证码图片的结构。
保存处理后的图片:

处理后的图片可以保存下来,用于检查图像预处理是否有效。
4. 运行程序
将以上代码保存为 captcha_recognition.py,并确保待识别的验证码图片(如 captcha_example.png)与代码位于同一目录。运行脚本:

bash

python captcha_recognition.py
如果一切正常,程序会输出识别出的验证码文本。

  1. 示例演示
    输入图片:
    验证码图片 captcha_example.png

处理后图片:
黑白二值化后的图片 processed_captcha.png

输出结果:
text

识别的验证码是:7G9XK2
6. 提高识别率的技巧
如果初始识别结果不够理想,可以尝试以下方法:

优化图像预处理:

去除噪声(例如模糊滤波、形态学操作)。
调整二值化的阈值(通过实验找到最佳值)。
调整 Tesseract 参数:

修改 --psm 参数(页面分割模式),例如:
--psm 7:将输入视为单行单词。
--psm 8:将输入视为单行单字符。
训练 Tesseract:

如果验证码具有特定字体或格式,可以通过训练 Tesseract 来提升识别效果。

标签:教程,OCR,Python,image,验证码,识别,Tesseract
From: https://www.cnblogs.com/ocr12/p/18675583

相关文章

  • 用 Python 实现验证码文本识别
    在本文中,我们将使用Python和TesseractOCR引擎,编写一个程序来识别英文数字验证码的内容。通过图像处理技术和光学字符识别(OCR),我们可以快速提取验证码中的文本。环境准备安装Python和依赖库确保已安装Python。如果尚未安装,可以访问Python官网进行下载和安装。接着,我们......
  • PyTorch使用教程(3)-Tensor包
    1、张量Tensor张量(Tensor)是PyTorch深度学习框架中的核心数据结构,在PyTorch软件框架中,几乎所有的数据计算和信息流都是以Tensor的形式在表达。官方给出的定义是:一个torch.Tensor是一个包含单个数据类型元素的多维矩阵关键词单个数据类型:在一个张量数据结构内,只会包含......
  • PyTorch使用教程(2)-torch包
    1、简介torch包是PyTorch框架最外层的包,主要是包含了张量的创建和基本操作、随机数生成器、序列化、局部梯度操作的上下文管理器等等,内容很多。我们基础学习的时候,只有关注张量的创建、序列化,随机数、张量的数学数学计算等常用的点即可。2、什么是张量在PyTorch中,张量(Te......
  • Python九九乘法表(for循环和while循环)
    运行结果样例:for循环:foriinrange(1,10):forjinrange(1,i+1):print(f"{i}*{j}={i*j}\t",end='')print()具体解释如下:这是一个嵌套的 for 循环。对于 i 的每一个值,都有一个新的 for 循环。range(1,i+1) 创建了一个新的整数序列,该序列从1......
  • 使用python+pytest+requests完成自动化接口测试(包括html报告的生成和日志记录以及层级
    一、API的选择我们进行接口测试需要API文档和系统,我们选择JSONPlaceholder免费API,因为它是一个非常适合进行接口测试、API测试和学习的工具。它免费、易于使用、无需认证,能够快速帮助开发者模拟常见的接口操作(增、删、改、查)。尤其对于我你们学习接口测试的初学开发者来说,它......
  • 尝试用GO给python写共享库
    背景就突发奇想,Go的效率相对来说高一些,那我们可不可以用Go来给python写关键处理库呢查了下,还真可以实现,只是障碍比较多,而且使用起来也比较麻烦,但是也还是能实现的解决用Go编写Python库可以通过Cgo或C共享库的方式实现。Go代码可以被编译为C兼容的共享库(.so或.dl......
  • Python时间序列分析:使用TSFresh进行自动化特征提取
    TSFresh(基于可扩展假设检验的时间序列特征提取)是一个专门用于时间序列数据特征自动提取的框架。该框架提取的特征可直接应用于分类、回归和异常检测等机器学习任务。TSFresh通过自动化特征工程流程,显著提升了时间序列分析的效率。自动化特征提取过程涉及处理数百个统计特征,包括均......
  • SQL中的。和python中的。的区别。让你彻底明白 。
    SELECTsale_order.name,SUM(sale_order_line.price_total)astotal_amountFROMsale_orderJOINsale_order_lineASsale_order_lineONsale_order.id=sale_order_line.order_idGROUPBYsale_order.id像上面的语句中,sale_order.name为什么这个可以.name能像python那......
  • Adobe After Effects 2024下载安装教程附软件包怎样使用
    AfterEffects2024是专业视频特效制作软件,在影视、动画、广告等领域应用广泛。它的功能十分强大,能创建电影级的字幕、片头和过渡效果,还能从视频中删除物体,做出下雨、火焰等粒子特效。在合成方面,支持多层视频合成,可对视频片段进行剪辑、调色等操作。动画制作上,有关键帧动画、......
  • 面向对象分析与设计Python版 控制器与多态原则
    文章目录一、控制器原则二、多态原则一、控制器原则控制器原则名称:控制器Controller应用场景:确定谁负责接收、处理和分发系统的输入事件。解决方案:系统输入事件处理的职责分给控制器对象一个控制器对象实现业务系统的所有输入事件处理和业务逻辑分发,这一类控制器......