Python+Pillow+Pytesseract怎么实现验证码识别
发表于:2025-02-24 作者:千家信息网编辑
千家信息网最后更新 2025年02月24日,这篇"Python+Pillow+Pytesseract怎么实现验证码识别"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章
千家信息网最后更新 2025年02月24日Python+Pillow+Pytesseract怎么实现验证码识别
这篇"Python+Pillow+Pytesseract怎么实现验证码识别"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Python+Pillow+Pytesseract怎么实现验证码识别"文章吧。
一、环境配置
需要 pillow 和 pytesseract 这两个库,pip install 安装就好了。
pip install pillow -i http://pypi.douban.com/simple --trusted-host pypi.douban.compip install pytesseract -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
安装好Tesseract-OCR.exe
pytesseract 库的配置:搜索找到pytesseract.py,打开该.py文件,找到 tesseract_cmd,改变它的值为刚才安装 tesseract.exe 的路径。
二、验证码识别
识别验证码,需要先对图像进行预处理,去除会影响识别准确度的线条或噪点,提高识别准确度。
实例1
import cv2 as cvimport pytesseractfrom PIL import Imagedef recognize_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()
运行效果如下:
识别结果:3n3D
Process finished with exit code 0
实例2
import cv2 as cvimport pytesseractfrom PIL import Imagedef recognize_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
识别结果:8A62N1
Process finished with exit code 0
实例3
import cv2 as cvimport pytesseractfrom PIL import Imagedef recognize_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
识别结果:7364
Process finished with exit code 0
以上就是关于"Python+Pillow+Pytesseract怎么实现验证码识别"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
结果
阈值
验证
内容
图像
字体
实例
效果
灰度
白色
背景
边缘
逻辑
运算
运行
准确度
形态
形态学
文章
知识
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
域名会影响服务器速度吗
保证了网络安全
网络安全护航人
软件开发后转国家电网
南京师范大学网络安全专业
根据条件删除表里的数据库
佛山冷库软件开发
北京金税盘安全服务器地址
网络安全概念股龙头股有
网络安全沈鑫剡第六章答案
海信软件开发工资待遇
数据库字段命名
在哪买服务器安全模式
购买网络技术转让
陕西工程软件开发中心
临沂景芝网络技术开发
数据库设计文档md格式
本地如何打开内网服务器页面
电脑服务器磁盘爆满怎么办
数据库常用语句顺序
大一软件开发实训心得体会
网络安全防护管理显著
贵州手机软件开发
网律互联网科技有限公司邮编
cis网络安全创新大会 首届
install服务器
kms本地激活服务器
各单位成立网络安全中心
数据库实验二电子版表格
苏州吴江警方维护网络安全稳定