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合并多个装饰器小技巧
Apr 28 Python
Django自定义用户认证示例详解
Mar 14 Python
使用pandas中的DataFrame数据绘制柱状图的方法
Apr 10 Python
详解Python 装饰器执行顺序迷思
Aug 08 Python
Python多线程同步---文件读写控制方法
Feb 12 Python
Django框架登录加上验证码校验实现验证功能示例
May 23 Python
如何实现Django Rest framework版本控制
Jul 25 Python
使用Python实现Wake On Lan远程开机功能
Jan 22 Python
python实现密码验证合格程序的思路详解
Jun 01 Python
Python实现弹球小游戏
Aug 01 Python
python os.listdir()乱码解决方案
Jan 31 Python
Pytorch 实现变量类型转换
May 17 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
服务器web工具 php环境下
2010/12/29 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
2012/07/16 PHP
php使用mkdir创建多级目录入门例子
2014/05/10 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
2017/06/09 PHP
jquery json 实例代码
2010/12/02 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
vue + typescript + 极验登录验证的实现方法
2019/06/27 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
vue缓存之keep-alive的理解和应用详解
2020/11/02 Javascript
Python struct.unpack
2008/09/06 Python
利用python代码写的12306订票代码
2015/12/20 Python
一百行python代码将图片转成字符画
2021/02/19 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
Django模板标签中url使用详解(url跳转到指定页面)
2020/03/19 Python
python中rc1什么意思
2020/06/19 Python
python解释器安装教程的方法步骤
2020/07/02 Python
python中查看.db文件中表格的名字及表格中的字段操作
2020/07/07 Python
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
党员教师工作决心书
2014/03/13 职场文书
工商管理自荐书
2014/07/06 职场文书
农村文化活动总结
2014/08/28 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
创业计划书之烤红薯
2019/09/26 职场文书
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android
Mysql binlog日志文件过大的解决
2021/10/05 MySQL