python使用Tesseract库识别验证


Posted in Python onMarch 21, 2018

一、Tesseract简介

Tesseract是一个OCR库(OCR是英文Optical Character Recognition的缩写),它用来对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程,Tesseract是目前公认最优秀,识别相对精准的OCR库。

二、Tesseract的使用

1.下载并安装Tesseract:点击下载

2.在Windows系统下设置环境变量:

#根据下载安装文件的路径配置环境变量
set TESSDATA_PREFIX F:\Tesseract-OCR\

3.安装pytesseract模块

pip install pytesseract

4.在Python脚本中引入tesseract.exe应用程序的方式:

pytesseract.pytesseract.tesseract_cmd = r'F:\Tesseract-OCR\tesseract.exe'

5.案例演示

识别以下图片文字:

python使用Tesseract库识别验证

import pytesseract
from PIL import Image
#1.引入Tesseract程序
pytesseract.pytesseract.tesseract_cmd = r'F:\Tesseract-OCR\tesseract.exe'
#2.使用Image模块下的Open()函数打开图片
image = Image.open('6.jpg',mode='r')
print(image)
#3.识别图片文字
code= pytesseract.image_to_string(image)
print(code)

结果演示:

<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=611x210 at 0x1A5DFDCB4A8>
Google

注:tesseract-OCR引擎识别验证码有些无法识别,比如像豆瓣生成的验证码无法识别其内容,如果需要爬取豆瓣中的数据这时候就需要手动的输入验证码:

python使用Tesseract库识别验证

三、模拟登陆知乎源码

import requests
import time
import pytesseract
from PIL import Image
from bs4 import BeautifulSoup

def captcha(data):
  with open('captcha.jpg','wb') as fp:
    fp.write(data)
  time.sleep(1)
  image = Image.open("captcha.jpg")
  text = pytesseract.image_to_string(image)
  print "机器识别后的验证码为:" + text
  command = raw_input("请输入Y表示同意使用,按其他键自行重新输入:")
  if (command == "Y" or command == "y"):
    return text
  else:
    return raw_input('输入验证码:')

def zhihuLogin(username,password):

  # 构建一个保存Cookie值的session对象
  sessiona = requests.Session()
  headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0'}

  # 先获取页面信息,找到需要POST的数据(并且已记录当前页面的Cookie)
  html = sessiona.get('https://www.zhihu.com/#signin', headers=headers).content

  # 找到 name 属性值为 _xsrf 的input标签,取出value里的值
  _xsrf = BeautifulSoup(html ,'lxml').find('input', attrs={'name':'_xsrf'}).get('value')

  # 取出验证码,r后面的值是Unix时间戳,time.time()
  captcha_url = 'https://www.zhihu.com/captcha.gif?r=%d&type=login' % (time.time() * 1000)
  response = sessiona.get(captcha_url, headers = headers)


  data = {
    "_xsrf":_xsrf,
    "email":username,
    "password":password,
    "remember_me":True,
    "captcha": captcha(response.content)
  }

  response = sessiona.post('https://www.zhihu.com/login/email', data = data, headers=headers)
  print response.text

  response = sessiona.get('https://www.zhihu.com/people/maozhaojun/activities', headers=headers)
  print response.text


if __name__ == "__main__":
  #username = raw_input("username")
  #password = raw_input("password")
  zhihuLogin('xxxx@qq.com','ALAxxxxIME')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python端口扫描系统实现方法
Nov 19 Python
Python处理字符串之isspace()方法的使用
May 19 Python
使用Python实现博客上进行自动翻页
Aug 23 Python
python3.x上post发送json数据
Mar 04 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
Jan 07 Python
python3 下载网络图片代码实例
Aug 27 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
Aug 31 Python
Pytorch自己加载单通道图片用作数据集训练的实例
Jan 18 Python
python小程序之4名牌手洗牌发牌问题解析
May 15 Python
什么是python的自省
Jun 21 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 Python
pytorch 预训练模型读取修改相关参数的填坑问题
Jun 05 Python
python如何派生内置不可变类型并修改实例化行为
Mar 21 #Python
python如何通过实例方法名字调用方法
Mar 21 #Python
python如何为被装饰的函数保留元数据
Mar 21 #Python
15行Python代码带你轻松理解令牌桶算法
Mar 21 #Python
Python反转序列的方法实例分析
Mar 21 #Python
Python常见工厂函数用法示例
Mar 21 #Python
python如何统计序列中元素
Jul 31 #Python
You might like
php一维二维数组键排序方法实例总结
2014/11/13 PHP
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
PHP实现格式化文件数据大小显示的方法
2015/01/03 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
php实现的顺序线性表示例
2019/05/04 PHP
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
js 采用delete实现继承示例代码
2014/05/20 Javascript
JQuery使用index方法获取Jquery对象数组下标的方法
2015/05/18 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
Angular的事件和表单详解
2016/12/26 Javascript
使用JavaScript进行表单校验功能
2017/08/01 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
python 网络编程常用代码段
2016/08/28 Python
python运行其他程序的实现方法
2017/07/14 Python
python安装twisted的问题解析
2018/08/21 Python
win7 x64系统中安装Scrapy的方法
2018/11/18 Python
python使用opencv实现马赛克效果示例
2019/09/28 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
使用gunicorn部署django项目的问题
2020/12/30 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
Too Faced官网:美国知名彩妆品牌
2017/03/07 全球购物
师范生自荐信
2013/10/27 职场文书
护理实习自我鉴定
2013/12/14 职场文书
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
毕业论文致谢范文
2015/05/14 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
《领导干部从政道德启示录》学习心得体会
2016/01/20 职场文书
一文搞懂redux在react中的初步用法
2021/06/09 Javascript