Python+Pillow+Pytesseract怎么实现验证码识别
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇"Python+Pillow+Pytesseract怎么实现验证码识别"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章
千家信息网最后更新 2025年01月17日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安全错误
数据库的锁怎样保障安全
网络安全的演讲600字以上
mysql数据库增删改查的语法
成人学软件开发
公司网络技术部工作总结
注册互联网软件开发公司
数据库文件保存时间
3d打印笔软件开发
英超 数据库
数据库实施主要包括的四项
维护网络安全五百字作文
软件开发技术基础教材
信息网络安全学
关于网络安全的海报a4横版
手机软件开发什么培训机构好
青海油田软件开发市场准入
杭电数据库原理
家庭教育和网络安全教育平台
如何做个云服务器
网络技术咨询是指
服务器时间比当前时间少一天
软件开发做男朋友怎么样
数据库数据安全技术
克瑞尔房地产数据库
信息网络安全学
怎么同步服务器时间
个人软件开发者编程语言选择
网络技术咨询是指
服务器安全检测机构
山东软件开发公司排位
软件开发为什麼经常加班