python opencv pytesseract 验证码识别的实现


Posted in Python onAugust 28, 2020

一、环境配置

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

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 的路径。

python opencv pytesseract 验证码识别的实现

二、验证码识别

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

实例1

import cv2 as cv
import pytesseract
from PIL import Image


def 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

python opencv pytesseract 验证码识别的实现

实例2

import cv2 as cv
import pytesseract
from PIL import Image


def 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

python opencv pytesseract 验证码识别的实现

实例3

import cv2 as cv
import pytesseract
from PIL import Image


def 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 opencv pytesseract 验证码识别的实现

到此这篇关于python opencv pytesseract 验证码识别的实现的文章就介绍到这了,更多相关opencv pytesseract 验证码识别内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
python获取微信小程序手机号并绑定遇到的坑
Nov 19 Python
搞定这套Python爬虫面试题(面试会so easy)
Apr 03 Python
Python发展史及网络爬虫
Jun 19 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
Jun 24 Python
pytorch 固定部分参数训练的方法
Aug 17 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
Feb 21 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
Jun 24 Python
Python 打印自己设计的字体的实例讲解
Jan 04 Python
python实现三种随机请求头方式
Jan 05 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
Apr 14 Python
简单的命令查看安装的python版本号
Aug 28 #Python
python进行OpenCV实战之画图(直线、矩形、圆形)
Aug 27 #Python
python opencv实现简易画图板
Aug 27 #Python
python实现画图工具
Aug 27 #Python
20行Python代码实现一款永久免费PDF编辑工具的实现
Aug 27 #Python
基于python实现操作redis及消息队列
Aug 27 #Python
Python3如何在服务器打印资产信息
Aug 27 #Python
You might like
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
jquery实现input输入框实时输入触发事件代码
2014/01/28 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
2015/04/26 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
2016/01/26 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
jQuery实现动态添加和删除input框代码实例
2019/03/29 jQuery
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
js实现拖动缓动效果
2020/01/13 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
Python中不同进制的语法及转换方法分析
2016/07/27 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
Python 函数绘图及函数图像微分与积分
2019/11/20 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
numpy中生成随机数的几种常用函数(小结)
2020/08/18 Python
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
美国在线购买空气净化器、除湿器、加湿器网站:AllergyBuyersClub
2021/03/16 全球购物
财务会计实习报告体会
2013/12/20 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
书法大赛策划方案
2014/06/04 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
幼儿园辞职信范文
2015/02/27 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
当你焦虑迷茫时,请读读这6句话
2019/07/24 职场文书
javascript之Object.assign()的痛点分析
2022/03/03 Javascript