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压缩和解压缩zip文件
Feb 14 Python
Python新手实现2048小游戏
Mar 31 Python
在Python中进行自动化单元测试的教程
Apr 15 Python
浅谈python可视化包Bokeh
Feb 07 Python
Python3.5 创建文件的简单实例
Apr 26 Python
Python中print函数简单使用总结
Aug 05 Python
PyTorch: 梯度下降及反向传播的实例详解
Aug 20 Python
python修改FTP服务器上的文件名
Sep 11 Python
pycharm实现在虚拟环境中引入别人的项目
Mar 09 Python
Python基于codecs模块实现文件读写案例解析
May 11 Python
Django权限设置及验证方式
May 13 Python
Flask-SocketIO服务端安装及使用代码示例
Nov 26 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
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
Yii不依赖Model的表单生成器用法实例
2014/12/04 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
js漂浮广告实现代码
2015/08/15 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
2018/12/12 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
javascript实现小型区块链功能
2019/04/03 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
Python构建图像分类识别器的方法
2019/01/12 Python
Python人脸识别第三方库face_recognition接口说明文档
2019/05/03 Python
在python中用url_for构造URL的方法
2019/07/25 Python
Django使用unittest模块进行单元测试过程解析
2019/08/02 Python
基于virtualenv创建python虚拟环境过程图解
2020/03/30 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
汇科协同Java笔试题
2012/03/31 面试题
优良学风班总结材料
2014/02/08 职场文书
《金孔雀轻轻跳》教学反思
2014/04/20 职场文书
个人专业技术总结
2015/03/05 职场文书
《叶问2》观后感
2015/06/15 职场文书
2019年教师入党申请书
2019/06/27 职场文书
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android
动画「半妖的夜叉姬」新BD特典图公开
2022/03/22 日漫