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标准库与第三方库详解
Jul 22 Python
python执行等待程序直到第二天零点的方法
Apr 23 Python
浅析Python 中整型对象存储的位置
May 16 Python
Python 序列的方法总结
Oct 18 Python
详解Python网络框架Django和Scrapy安装指南
Apr 01 Python
python多线程扫描端口(线程池)
Sep 04 Python
Pandas —— resample()重采样和asfreq()频度转换方式
Feb 26 Python
python3中的logging记录日志实现过程及封装成类的操作
May 12 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
Jun 12 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
python的数学算法函数及公式用法
Nov 18 Python
python热力图实现简单方法
Jan 29 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高级对象构建 工厂模式的使用
2012/02/05 PHP
PHP对象相互引用的内存溢出实例分析
2014/08/28 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
Extjs 几个方法的讨论
2010/01/28 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
通过url查找a元素并点击
2014/04/09 Javascript
javascript校验价格合法性实例(必须输入2位小数)
2014/05/05 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
javascript 动态生成css代码的两种方法
2017/03/17 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
详解Angular4中路由Router类的跳转navigate
2017/06/09 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
python 自动提交和抓取网页
2009/07/13 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
浅谈django url请求与数据库连接池的共享问题
2019/08/29 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
Python数据可视化实现多种图例代码详解
2020/07/14 Python
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
HTML5+css3:3D旋转木马效果相册
2017/01/03 HTML / CSS
html5录音功能实战示例
2019/03/25 HTML / CSS
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
中专自荐信
2013/10/13 职场文书
就业表自我评价分享
2014/02/06 职场文书
教师对学生的寄语
2014/04/03 职场文书
迟到检讨书
2015/01/26 职场文书
万能检讨书
2015/01/27 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
被委托人身份证明
2015/08/07 职场文书
教你怎么用Python实现多路径迷宫
2021/04/29 Python
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers
Redis实现一个账号只能登录一个设备
2022/04/19 Redis