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 文件和输入输出小结
Oct 09 Python
flask + pymysql操作Mysql数据库的实例
Nov 13 Python
利用python将图片转换成excel文档格式
Dec 30 Python
Python爬豆瓣电影实例
Feb 23 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
Mar 14 Python
对Python使用mfcc的两种方式详解
Jan 09 Python
python爬虫简单的添加代理进行访问的实现代码
Apr 04 Python
基于keras 模型、结构、权重保存的实现
Jan 24 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
Mar 09 Python
Python 忽略文件名编码的方法
Aug 01 Python
Python爬取微信小程序通用方法代码实例详解
Sep 29 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
Nov 24 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统计二维数组元素个数的方法
2013/11/12 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
PHP如何实现跨域
2016/05/30 PHP
PHP数组与字符串互相转换实例
2020/05/05 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
iis6+javascript Add an Extension File
2007/06/13 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
jQuery实现的购物车物品数量加减功能代码
2016/11/16 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
详解vuex的简单使用
2018/03/12 Javascript
vue单页开发父子组件传值思路详解
2018/05/18 Javascript
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
微信小程序swiper左右扩展各显示一半代码实例
2019/12/05 Javascript
python实现ping的方法
2015/07/06 Python
python先序遍历二叉树问题
2017/11/10 Python
Python调用Windows命令打印文件
2020/02/07 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
Django用户身份验证完成示例代码
2020/04/03 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
python 装饰器的使用示例
2020/10/10 Python
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
质检部部长职责
2013/12/16 职场文书
中医专业职业生涯规划书范文
2014/01/04 职场文书
酒店值班经理的工作职责范本
2014/02/18 职场文书
纠纷协议书
2014/04/16 职场文书
个人买房协议书范本
2014/10/06 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
商务宴会祝酒词
2015/08/11 职场文书
2015年度考核个人工作总结
2015/10/24 职场文书
python绘图subplots函数使用模板的示例代码
2021/04/30 Python
Python实现简单的猜单词
2021/06/15 Python