python opencv+pytesseract 验证码识别

简介: 人总要呆在一种什么东西里,沉溺其中,苟有所得,才能证明自己的存在,切实地活出自己的价值 ——汪曾祺

一、环境配置


  • 需要 pillow 和 pytesseract 这两个依赖库,pip install安装上就好了。
pipinstallpillow-ihttp://pypi.douban.com/simple--trusted-hostpypi.douban.compipinstallpytesseract-ihttp://pypi.douban.com/simple--trusted-hostpypi.douban.com



  • 安装好Tesseract-OCR.exe
  • pytesseract库的配置:搜索找到pytesseract.py,打开该.py文件,找到tesseract_cmd,改变它的值为刚才安装 tesseract.exe 的路径。


二、验证码识别


识别验证码,需要先对图像进行预处理,去除会影响识别准确度的线条或噪点,提高识别准确度。


实例1


# -*- coding: UTF-8 -*-"""@公众号      : AI庭云君@Author     : 叶庭云@CSDN       : https://yetingyun.blog.csdn.net/"""importcv2ascvimportpytesseractfromPILimportImagedefrecognize_text(image):
# 边缘保留滤波  去噪dst=cv.pyrMeanShiftFiltering(image, sp=10, sr=150)
# 灰度图像gray=cv.cvtColor(dst, cv.COLOR_BGR2GRAY)
# 二值化ret, binary=cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV|cv.THRESH_OTSU)
# 形态学操作   腐蚀  膨胀erode=cv.erode(binary, None, iterations=2)
dilate=cv.dilate(erode, None, iterations=1)
cv.imshow('dilate', dilate)
# 逻辑运算  让背景为白色  字体为黑  便于识别cv.bitwise_not(dilate, dilate)
cv.imshow('binary-image', dilate)
# 识别test_message=Image.fromarray(dilate)
text=pytesseract.image_to_string(test_message)
print(f'识别结果:{text}')
src=cv.imread(r'./test/044.png')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()


运行效果如下:


识别结果:3n3DProcessfinishedwithexitcode0


实例2


"""@公众号      : AI庭云君@Author     : 叶庭云@CSDN       : https://yetingyun.blog.csdn.net/"""importcv2ascvimportpytesseractfromPILimportImagedefrecognize_text(image):
# 边缘保留滤波  去噪blur=cv.pyrMeanShiftFiltering(image, sp=8, sr=60)
cv.imshow('dst', blur)
# 灰度图像gray=cv.cvtColor(blur, cv.COLOR_BGR2GRAY)
# 二值化ret, binary=cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV|cv.THRESH_OTSU)
print(f'二值化自适应阈值:{ret}')
cv.imshow('binary', binary)
# 形态学操作  获取结构元素  开操作kernel=cv.getStructuringElement(cv.MORPH_RECT, (3, 2))
bin1=cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)
cv.imshow('bin1', bin1)
kernel=cv.getStructuringElement(cv.MORPH_OPEN, (2, 3))
bin2=cv.morphologyEx(bin1, cv.MORPH_OPEN, kernel)
cv.imshow('bin2', bin2)
# 逻辑运算  让背景为白色  字体为黑  便于识别cv.bitwise_not(bin2, bin2)
cv.imshow('binary-image', bin2)
# 识别test_message=Image.fromarray(bin2)
text=pytesseract.image_to_string(test_message)
print(f'识别结果:{text}')
src=cv.imread(r'./test/045.png')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()


运行效果如下:


二值化自适应阈值:181.0识别结果:8A62N1Processfinishedwithexitcode0



实例3


"""@公众号      : AI庭云君@Author     : 叶庭云@CSDN       : https://yetingyun.blog.csdn.net/"""importcv2ascvimportpytesseractfromPILimportImagedefrecognize_text(image):
# 边缘保留滤波  去噪blur=cv.pyrMeanShiftFiltering(image, sp=8, sr=60)
cv.imshow('dst', blur)
# 灰度图像gray=cv.cvtColor(blur, cv.COLOR_BGR2GRAY)
# 二值化  设置阈值  自适应阈值的话 黄色的4会提取不出来ret, binary=cv.threshold(gray, 185, 255, cv.THRESH_BINARY_INV)
print(f'二值化设置的阈值:{ret}')
cv.imshow('binary', binary)
# 逻辑运算  让背景为白色  字体为黑  便于识别cv.bitwise_not(binary, binary)
cv.imshow('bg_image', binary)
# 识别test_message=Image.fromarray(binary)
text=pytesseract.image_to_string(test_message)
print(f'识别结果:{text}')
src=cv.imread(r'./test/045.jpg')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()


运行效果如下:


/

二值化设置的阈值:185.0识别结果:7364Processfinishedwithexitcode0

目录
相关文章
|
4月前
|
计算机视觉 Windows Python
windows下使用python + opencv读取含有中文路径的图片 和 把图片数据保存到含有中文的路径下
在Windows系统中,直接使用`cv2.imread()`和`cv2.imwrite()`处理含中文路径的图像文件时会遇到问题。读取时会返回空数据,保存时则无法正确保存至目标目录。为解决这些问题,可以使用`cv2.imdecode()`结合`np.fromfile()`来读取图像,并使用`cv2.imencode()`结合`tofile()`方法来保存图像至含中文的路径。这种方法有效避免了路径编码问题,确保图像处理流程顺畅进行。
439 1
|
5月前
|
机器学习/深度学习 人工智能 算法
Python在计算机视觉(CV)中扮演重要角色,得益于其丰富的库如OpenCV、Pillow和Scikit-image。
【7月更文挑战第5天】Python在计算机视觉(CV)中扮演重要角色,得益于其丰富的库如OpenCV、Pillow和Scikit-image。CV涉及图像处理、模式识别和机器学习,用于图像理解和生成。Python的跨平台特性和活跃社区使其成为CV的理想工具。基本流程包括图像获取、预处理、特征提取、分类识别及图像生成。例如,面部识别通过预处理图像,使用如`cv2.CascadeClassifier`进行检测;物体检测类似,但需适应不同目标;图像生成则利用GAN创造新图像。
75 4
|
2月前
|
计算机视觉 Python
python利用pyqt5和opencv打开电脑摄像头并进行拍照
本项目使用Python的PyQt5和OpenCV库实现了一个简单的摄像头应用。用户可以通过界面按钮打开或关闭摄像头,并实时预览视频流。点击“拍照”按钮可以捕捉当前画面并保存为图片文件。该应用适用于简单的图像采集和处理任务。
170 0
python利用pyqt5和opencv打开电脑摄像头并进行拍照
|
1月前
|
文字识别 自然语言处理 API
Python中的文字识别利器:pytesseract库
`pytesseract` 是一个基于 Google Tesseract-OCR 引擎的 Python 库,能够从图像中提取文字,支持多种语言,易于使用且兼容性强。本文介绍了 `pytesseract` 的安装、基本功能、高级特性和实际应用场景,帮助读者快速掌握 OCR 技术。
116 0
|
2月前
|
数据采集 自然语言处理 API
Python反爬案例——验证码的识别
Python反爬案例——验证码的识别
49 2
|
2月前
|
机器学习/深度学习 算法 计算机视觉
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
109 2
|
2月前
|
数据采集 自然语言处理 Python
用 Python 生成并识别图片验证码
用 Python 生成并识别图片验证码
60 1
|
3月前
|
机器学习/深度学习 计算机视觉 Python
opencv环境搭建-python
本文介绍了如何在Python环境中安装OpenCV库及其相关扩展库,包括numpy和matplotlib,并提供了基础的图像读取和显示代码示例,同时强调了使用Python虚拟环境的重要性和基本操作。
|
4月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
|
2月前
|
数据采集 消息中间件 API
Python爬虫验证码识别——手机验证码的自动化处理
Python爬虫验证码识别——手机验证码的自动化处理
113 0