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根据出生日期获得年龄的方法
Mar 31 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
Sep 08 Python
配置 Pycharm 默认 Test runner 的图文教程
Nov 30 Python
python实现flappy bird游戏
Dec 24 Python
对IPython交互模式下的退出方法详解
Feb 16 Python
python 利用pyttsx3文字转语音过程详解
Sep 25 Python
Django的CVB实例详解
Feb 10 Python
解决import tensorflow as tf 出错的原因
Apr 16 Python
在Sublime Editor中配置Python环境的详细教程
May 03 Python
PyQt5实现简单的计算器
May 30 Python
python 深度学习中的4种激活函数
Sep 18 Python
python 6种方法实现单例模式
Dec 15 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
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
PHP连接SQLServer2005 的问题解决方法
2010/07/19 PHP
php下删除一篇文章生成的多个静态页面
2010/08/08 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
canvas实现图像截取功能
2017/02/06 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
2017/12/07 Javascript
vuex的简单使用教程
2018/02/02 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
[00:31]2016完美“圣”典风云人物:国士无双宣传片
2016/12/04 DOTA
[01:42]DOTA2 – 虚无之灵
2019/08/25 DOTA
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
python实现百万答题自动百度搜索答案
2018/01/16 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
Python中存取文件的4种不同操作
2018/07/02 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
卫校中专生个人自我评价
2013/09/19 职场文书
幼儿园秋游活动方案
2014/01/21 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
计算机软件专业求职信
2014/06/10 职场文书
会计学专业自荐信
2014/06/25 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
Redis分布式锁Redlock的实现
2021/08/07 Redis
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技