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对html代码进行escape编码的方法
May 04 Python
Python备份目录及目录下的全部内容的实现方法
Jun 12 Python
Golang与python线程详解及简单实例
Apr 27 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 Python
Python反转序列的方法实例分析
Mar 21 Python
彻底理解Python中的yield关键字
Apr 01 Python
python中字符串数组逆序排列方法总结
Jun 23 Python
Flask之pipenv虚拟环境的实现
Nov 26 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
python实现扑克牌交互式界面发牌程序
Apr 22 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
基于Python编写简易版的天天跑酷游戏的示例代码
Mar 23 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限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
js获取数组的最后一个元素
2015/04/14 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
javascript基础语法学习笔记
2016/01/04 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
详解VUE 对element-ui中的ElTableColumn扩展
2018/03/28 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
js实现聊天对话框
2020/02/08 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
python实现读取命令行参数的方法
2015/05/22 Python
Python实现数通设备端口使用情况监控实例
2015/07/15 Python
一键搞定python连接mysql驱动有关问题(windows版本)
2016/04/23 Python
使用Python的turtle模块画图的方法
2017/11/15 Python
Python requests上传文件实现步骤
2020/09/15 Python
十一个高级MySql面试题
2014/10/06 面试题
中软国际Java程序员机试题
2012/08/19 面试题
家长会演讲稿范文
2014/01/10 职场文书
金融行业职业生涯规划范文
2014/01/17 职场文书
学习十八大演讲稿
2014/09/15 职场文书
2014年教研员工作总结
2014/12/23 职场文书
优秀团员个人总结
2015/02/26 职场文书
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS