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 相关文章推荐
python3编码问题汇总
Sep 06 Python
python代码实现ID3决策树算法
Dec 20 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
Mar 04 Python
异步任务队列Celery在Django中的使用方法
Jun 07 Python
使用pandas对两个dataframe进行join的实例
Jun 08 Python
python 内置模块详解
Jan 01 Python
详解python中list的使用
Mar 15 Python
Python爬虫如何应对Cloudflare邮箱加密
Jun 24 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 Python
解决python中0x80072ee2错误的方法
Jul 19 Python
安装Anaconda3及使用Jupyter的方法
Oct 27 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
phpmyadmin导入(import)文件限制的解决办法
2009/12/11 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
php mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
解决出现SoapFault (looks like we got no XML document)的问题
2017/06/24 PHP
php实现websocket实时消息推送
2018/03/30 PHP
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
2013/11/04 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
在css加载完毕后自动判断页面是否加入css或js文件
2014/09/10 Javascript
angularjs学习笔记之双向数据绑定
2015/09/26 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
vue首次赋值不触发watch的解决方法
2018/09/11 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
2020/11/09 jQuery
react项目从新建到部署的实现示例
2021/02/19 Javascript
python代码实现ID3决策树算法
2017/12/20 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
django foreignkey(外键)的实现
2019/07/29 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
2019/12/17 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
党员承诺书怎么写
2014/05/20 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书