首页 > 编程语言 >使用 Python 进行验证码图片识别

使用 Python 进行验证码图片识别

时间:2024-12-16 11:09:01浏览次数:5  
标签:Tesseract img Python image 验证码 pytesseract 识别

首先,我们需要安装以下 Python 库:

Pillow:用于图像处理。
pytesseract:用于 OCR(文字识别)。
安装依赖
你可以通过以下命令来安装必要的库:更多内容访问ttocr.com或联系1436423940

bash

pip install pillow pytesseract
此外,pytesseract 依赖于 Tesseract OCR 引擎,确保你已经安装了 Tesseract。你可以在 Tesseract 官方网站 下载并安装。

在安装完 Tesseract 后,还需要设置环境变量,确保 Python 能够调用 Tesseract。通常需要添加 tesseract 执行文件的路径到系统环境变量中,或者在代码中指定路径。

实现验证码图片识别
图像预处理:
使用 Pillow 库对图片进行灰度化、去噪和阈值处理等操作。
文字识别:
使用 pytesseract 来识别处理后的图像中的文字。
代码示例
python

from PIL import Image, ImageFilter
import pytesseract

设置Tesseract路径(如果你没有把tesseract加入环境变量)

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

处理验证码图片

def preprocess_image(input_image_path):
# 打开图片
img = Image.open(input_image_path)

# 转为灰度图
img = img.convert('L')

# 应用二值化(阈值处理)提高对比度
img = img.point(lambda p: p > 150 and 255)

# 去噪
img = img.filter(ImageFilter.MedianFilter(3))

# 保存处理后的图片(可选)
img.save('processed_captcha.png')

return img

识别图片中的文字

def recognize_text_from_image(image):
# 使用 pytesseract 识别图片中的文字
text = pytesseract.image_to_string(image)
return text.strip()

主函数

def main():
input_image_path = 'captcha.png' # 需要识别的验证码图片路径

# 步骤1:处理图像
processed_img = preprocess_image(input_image_path)

# 步骤2:识别图像中的文字
recognized_text = recognize_text_from_image(processed_img)

print("识别的验证码是:", recognized_text)

if name == "main":
main()
代码解析
图像预处理:

Image.convert('L'):将图像转换为灰度模式(L模式)。
img.point(lambda p: p > 150 and 255):应用二值化,设置一个阈值,任何大于 150 的像素值变成 255(白色),否则为 0(黑色)。这可以使验证码字符和背景对比更明显。
img.filter(ImageFilter.MedianFilter(3)):使用中值滤波去噪,去除图像中的杂点和噪声,有助于提高识别率。
文字识别:

pytesseract.image_to_string(image):调用 Tesseract OCR 引擎从图片中提取文字。
主函数:

该函数中,我们首先对验证码图像进行处理,然后通过 pytesseract 进行识别,并打印出识别到的验证码文字。
运行
将验证码图片命名为 captcha.png 放在同一目录下。
运行代码:
bash

python captcha_recognition.py
输出类似于:
bash

识别的验证码是: 4B7H
优化与改进
增强去噪和处理:

可以尝试更复杂的去噪方法,例如高斯模糊(ImageFilter.GaussianBlur())或边缘检测(ImageFilter.FIND_EDGES)。
旋转和倾斜校正:

如果验证码图像有倾斜,可以使用图像处理算法自动旋转和校正,例如通过霍夫变换检测和调整倾斜角度。
字符分割:

如果验证码中的字符之间间隔较大,可以通过字符分割算法进一步分开并单独识别每个字符。

标签:Tesseract,img,Python,image,验证码,pytesseract,识别
From: https://www.cnblogs.com/ocr12/p/18609598

相关文章

  • C# 实现验证码图片识别示例
    首先,你需要安装Emgu.CV库,这可以通过NuGet包管理器来安装。在VisualStudio中安装:打开NuGet包管理器,搜索Emgu.CV,然后点击安装。安装完成后,我们可以开始编写代码。csharpusingSystem;usingSystem.Drawing;usingEmgu.CV;usingEmgu.CV.Structure;usingEmgu.CV......
  • Python球球大作战
    系列文章序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码8Python普通的玫瑰花代码9Python炫酷的玫瑰花代码10Python......
  • Python基础 day9 迭代生成,文件操作
    一:迭代器 iter特点:每次迭代得到的结果都是下一次迭代的初始值。迭代对象:字符串,列表,元组,集合,字典。可迭代对象的表现形式为内置了iter方法的数据,都属于可迭代对象。声明迭代器:方法一:        变量名=可迭代对象.__iter__()方法二:      ......
  • Python基础 day8 函数(三)
    一:闭包函数闭:封闭,指一个嵌套函数中的内层数据。包:用内层函数来操作外层函数得到的数据。闭包函数的作用:间接修改数据,保护私有数据不被轻易修改。闭包函数的必备条件:1.必须是一个嵌套函数2.内层数据必须操作外层函数数据(这个数据可以是变量或参数)3.外层函数必须返回内层......
  • 毕业设计:python车牌识别系统 CNN算法 卷积神经网络网络 深度学习 tensorflow(源码)✅
    python车牌识别系统CNN算法卷积神经网络网络深度学习tensorflow(源码)1、项目介绍技术栈:Python语言、CNN算法、tensorflow和keras、深度学习、opencv、pyqt5图形界面2、项目界面(1)上传图像进行车牌识别1(2)上传图像进行车牌识别2(3)上传图像进行车牌识别3(4)上传视......
  • 毕业设计:python哔哩哔哩数据可视化分析系统 B站 bilibili数据 Flask框架 Echarts可视
    毕业设计:python哔哩哔哩数据可视化分析系统B站bilibili数据Flask框架Echarts可视化(源码)✅1、项目介绍技术栈:python语言、Flask框架、Echarts可视化、MySQL数据库、词云图、HTML2、项目界面(1)系统首页—数据概况(2)B站评论弹幕分析(3)B站作者分析(4)B站视频可视化分......
  • 使用Python实现两组数据纵向排序
    一、引言在数据分析和处理过程中,排序是一项非常常见的操作。排序操作能够让我们更清晰地理解数据,从而进行进一步的分析和处理。在Python中,排序操作通常可以通过内置函数或第三方库来实现。本文将详细讲解如何使用Python实现两组数据的纵向排序,并提供完整的开发思路和代码示例。......
  • 使用 Crystal 实现简单的文字识别程序
    在本篇文章中,我们将使用Crystal编程语言手动实现一个简单的文字识别程序。Crystal是一种高性能的编程语言,具有Ruby的简洁语法,但编译成高效的机器代码。环境准备首先,确保你已安装Crystal。可以通过Crystal的官方网站下载并安装。接着,我们需要一个用于图像处理的库,例如I......
  • 使用 Julia 实现简单的文字识别程序
    在这篇文章中,我们将使用Julia语言来实现一个简单的文字识别程序。Julia是一种高性能的动态编程语言,特别适合科学计算和数据处理。我们将手动实现图像处理步骤,以便进行字符识别。环境准备首先,确保你已安装Julia。可以从Julia的官方网站下载并安装。接着,我们需要安装一些用......
  • 使用 D 语言实现简单的文字识别程序
    在本篇文章中,我们将使用D语言手动实现一个简单的文字识别程序。D语言是一种系统级编程语言,具有高性能和现代化的特性,非常适合进行图像处理和算法实现。环境准备首先,确保你已安装D语言的编译器,例如DMD。可以通过D语言的官方网站下载并安装。接着,我们将使用一个名为Vibe.......