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中zfill()方法的使用教程
May 20 Python
Python单元测试实例详解
May 25 Python
django从请求到响应的过程深入讲解
Aug 01 Python
python实现录音小程序
Oct 26 Python
python挖矿算力测试程序详解
Jul 03 Python
python监控nginx端口和进程状态
Sep 06 Python
解决Python import docx出错DLL load failed的问题
Feb 13 Python
基于打开pycharm有带图片md文件卡死问题的解决
Apr 24 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
May 28 Python
python实现数字炸弹游戏程序
Jul 17 Python
浅谈Python描述数据结构之KMP篇
Sep 06 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
使用eAccelerator加密PHP程序
2008/10/03 PHP
php 变量定义方法
2009/06/14 PHP
php下保存远程图片到本地的办法
2010/08/08 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
PHP数据库处理封装类实例
2016/12/24 PHP
laravel 数据验证规则详解
2019/10/23 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
offsetParent 算法分析
2010/04/05 Javascript
js实现checkbox全选和反选示例
2014/05/01 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
Vue.js 2.0中select级联下拉框实例
2017/03/06 Javascript
jquery仿苹果的时间/日期选择效果
2017/03/08 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
vue兄弟组件传递数据的实例
2018/09/06 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
python实现计算资源图标crc值的方法
2014/10/05 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
python进程和线程用法知识点总结
2019/05/28 Python
python数据分析:关键字提取方式
2020/02/24 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
Python3获取cookie常用三种方案
2020/10/05 Python
LEGO玩具英国官方商店:LEGO Shop GB
2018/03/27 全球购物
财务部经理岗位职责
2014/02/03 职场文书
甜品蛋糕店创业计划书范文
2014/02/06 职场文书
写给老婆的检讨书
2014/02/21 职场文书
业务员简历自我评价
2014/03/06 职场文书
冬季施工防火方案
2014/05/17 职场文书
房产协议书范本
2014/10/18 职场文书
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
医院营销工作计划
2015/01/16 职场文书
2016大学军训心得体会
2016/01/11 职场文书
python 常用的异步框架汇总整理
2021/06/18 Python