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 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
Jan 12 Python
Python中用post、get方式提交数据的方法示例
Sep 22 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
Dec 05 Python
python turtle库画一个方格和圆实例
Jun 27 Python
python  logging日志打印过程解析
Oct 22 Python
浅谈python 中的 type(), dtype(), astype()的区别
Apr 09 Python
Python中使用filter过滤列表的一个小技巧分享
May 02 Python
Pycharm修改python路径过程图解
May 22 Python
解决python中0x80072ee2错误的方法
Jul 19 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 Python
浅谈Python xlwings 读取Excel文件的正确姿势
Feb 26 Python
Python pyecharts绘制条形图详解
Apr 02 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
MVC模式的PHP实现
2006/10/09 PHP
php利用事务处理转账问题
2015/04/22 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
简单JS代码压缩器
2006/10/12 Javascript
Document 对象的常用方法
2009/07/31 Javascript
javascript面向对象的方式实现的弹出层效果代码
2010/01/28 Javascript
基于jquery循环map功能的代码
2011/02/26 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
2013/10/22 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
jquery实现全选功能效果的实现代码
2016/05/05 Javascript
正则 js分转元带千分符号详解
2017/03/08 Javascript
基于vue的fullpage.js单页滚动插件
2017/03/20 Javascript
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
2017/11/28 Javascript
详解AngularJS之$window窗口对象
2018/01/17 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
2019/11/04 Javascript
JS实现百度搜索框
2021/02/25 Javascript
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
python中的协程深入理解
2019/06/10 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
Python xlwt模块使用代码实例
2020/06/10 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
网络技术支持面试题
2013/04/22 面试题
本科毕业生的求职信范文
2013/11/20 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书