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常用内置模块之xml模块(详解)
May 23 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
Jun 01 Python
python调用Delphi写的Dll代码示例
Dec 05 Python
numpy返回array中元素的index方法
Jun 27 Python
python paramiko利用sftp上传目录到远程的实例
Jan 03 Python
scikit-learn线性回归,多元回归,多项式回归的实现
Aug 29 Python
Python简单实现区域生长方式
Jan 16 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
Feb 28 Python
python解析xml文件方式(解析、更新、写入)
Mar 05 Python
Pycharm修改python路径过程图解
May 22 Python
Matplotlib.pyplot 三维绘图的实现示例
Jul 28 Python
PyCharm上安装Package的实现(以pandas为例)
Sep 18 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及Zend Engine的线程安全模型分析
2011/11/10 PHP
PHP 日,周,月点击排行统计
2012/01/11 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
javascript字典探测用户名工具
2006/10/05 Javascript
js操作二级联动实现代码
2010/07/27 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
LayUi中接口传数据成功,表格不显示数据的解决方法
2018/08/19 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
Vue中的组件及路由使用实例代码详解
2019/05/22 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
2020/11/12 Javascript
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
详解Python命令行解析工具Argparse
2016/04/20 Python
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
python3实现多线程聊天室
2018/12/12 Python
python实现双色球随机选号
2020/01/01 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
HTML5 对各个标签的定义与规定:body的介绍
2012/06/21 HTML / CSS
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
北承题目(C++)
2012/05/16 面试题
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
最新英语专业学生求职信范文
2013/09/21 职场文书
2014年班主任自我评价范文
2014/04/23 职场文书
坎儿井导游词
2015/02/09 职场文书
答辩状格式范本
2015/05/22 职场文书
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL
选购到合适的激光打印机
2022/04/21 数码科技