今天咋们继续利用pillow和pytesseract来实现验证码的识别

一、环境配置

  • 需要 pillow 和 pytesseract 这两个库,pip install 安装就好了。

pip install pillow -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip 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 cv
import pytesseract
from 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()

运行效果如下:

识别结果:3n3DProcess finished with exit code 0

实例2

import cv2 as cv
import pytesseract
from 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
识别结果:8A62N1Process finished with exit code 0

实例3

import cv2 as cv
import pytesseract
from 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
识别结果:7364Process finished with exit code 0

结语

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小编的支持。

Python 代码实现验证码识别相关推荐

  1. Python 代码实现验证码识别,很稳

    作者:叶庭云 源自:快学python 昨天十行代码实现文字识别,感觉怎样,是不是很爽 今天咋们继续利用pillow和pytesseract来实现验证码的识别 一.环境配置 需要 pillow 和 py ...

  2. python 验证码识别 开源_Python 代码实现验证码识别

    Python 代码实现验证码识别 测试开发社区  1周前 源 /  j_hao104 一.探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域-- ...

  3. python好学吗 小木虫-25行Python代码完成人脸识别

    以下是Shantnu Tiwari的客座文章,作者有着在底层编程和嵌入式领域十年的工作经验.在发现Python语言之前的几年时间里,Shantnu Tiwari一直忍受着C/C++语言编程的不便,但P ...

  4. Python代码使用easyocr识别身份证号码

    Python代码使用easyocr识别身份证号码,直接上代码 import easyocr import os import re import pandas as pdclass card():de ...

  5. python免费的验证码识别OCR库

    python免费的验证码识别OCR库 免费的验证码识别OCR项目已经打包成pypi包 1, 可以通过以下命令安装 pip install ddddocr -i https://pypi.org/sim ...

  6. 字符识别Python实现 图片验证码识别

    字符型图片验证码识别完整过程及Python实现 1   摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越 ...

  7. code block怎样实现图形界面_Python 代码实现验证码识别,很稳

    作者:叶庭云 源自:快学python 昨天十行代码实现文字识别,感觉怎样,是不是很爽 今天咋们继续利用pillow和pytesseract来实现验证码的识别 一.环境配置 需要 pillow 和 py ...

  8. 基于Python的简单验证码识别

    原文链接:有图有真相 摘要:验证码在网络安全方面发挥着关键作用,验证码的主要目的是区分人类和计算机,用来防止自动化脚本对网站的一些恶意行为.目前绝大多数网站都利用验证码来阻止恶意脚本程序的入侵.验证码 ...

  9. 使用Python+Selenium+图灵验证码识别平台,识别B站/bilibili的中文验证码,并自动登陆B站

    一直想用python写一个程序帮我自动登陆B站,完成一些点击任务,懂的都懂 =v= 最近终于腾出时间来搞了,其实最难的部分就是中文验证码的识别.这个借助API接口也能轻松搞定.下面分享一下全部源码(前 ...

  10. 20行Python代码开发植物识别 app

    这篇文章介绍如何用Python快速实现一个植物识别的app,家里养了几盆多肉还叫不上名字,正好拿来识别一下.实现这样一个app只需要20行左右的代码,先来看下效果: 文末点击阅读全文即可访问线上应用( ...

最新文章

  1. chrome 禁用恢复页面提示_有哪些很值得推荐的Chrome插件?精选7款实用插件
  2. WebHook 与jenkins
  3. android 布局设置背景的透明度
  4. 学习《apache源代码全景分析》之网络连接部分摘录
  5. 客服顾问的工具箱--走出软件作坊:三五个人十来条枪 如何成为开发正规军(六)[转]...
  6. [js] XML与JSON有什么的区别?
  7. 无线电波的入侵第1部分——无线电频率基础与理论
  8. python classmethod static_python @classmethod 和 @staticmethod
  9. 如何修改网络游戏服务器端的数据,网络游戏服务器端编程:数据操纵语句
  10. 虚幻引擎UE4编辑器介绍
  11. Wireshark TS | 丢包?不要轻易下结论续
  12. Twitter技术主管回怼马斯克!马斯克:He’s fired!
  13. Android 界面一键变灰/黑白
  14. android api 和版本对应表汇总
  15. 免费的云数据库平台Planetscale
  16. Recyclerview嵌套Recyclerview,条目显示不全和宽度不能铺满不能同时满足
  17. 深度学习论文阅读目标检测篇(三):Faster R-CNN《 Towards Real-Time Object Detection with Region Proposal Networks》
  18. hadoop2.2.0的编译(64位linux系统)
  19. 使用DNSCrypt来加密您与OpenDNS之间的通信
  20. access odbc oracle数据库,vb连接数据库(ODBC,oracle,sqlserver,access)

热门文章

  1. WinAPI双人贪吃蛇
  2. GPS之家论坛最新地图下载精选 汇集论坛精华 不断更新中(2013.3.30)
  3. 远程传输文件--java文件流
  4. db4o java教程_Db4o 社区版 8.1.1 发布,面向对象数据库
  5. 2012年3月份第1周51Aspx源码发布详情
  6. Android 权限清单大全
  7. 进军杀毒市场!百度杀毒软件2013正式发布
  8. 这是我的脚本原型。。比我的生成器的麻烦(这种最稳定,我做成的脱机刷毛实
  9. 【肌电信号】肌电信号处理系统含Matlab源码
  10. java list对象转json_java中List对象转换为JSON对象