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中使用urllib2防止302跳转的代码例子
Jul 07 Python
python实现批量获取指定文件夹下的所有文件的厂商信息
Sep 28 Python
Python实现的中国剩余定理算法示例
Aug 05 Python
Python pymongo模块用法示例
Mar 31 Python
pandas DataFrame数据转为list的方法
Apr 11 Python
Python基础学习之时间转换函数用法详解
Jun 18 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
Aug 21 Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 Python
python 中的jieba分词库
Nov 23 Python
Python matplotlib安装以及实现简单曲线的绘制
Apr 26 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
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
php中文验证码实现示例分享
2014/01/12 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
JS request函数 用来获取url参数
2010/05/17 Javascript
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
javascript实现简单的Map示例介绍
2013/12/23 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
使用异步controller与jQuery实现卷帘式分页
2019/06/18 jQuery
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
python使用tensorflow保存、加载和使用模型的方法
2018/01/31 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
python中嵌套函数的实操步骤
2019/02/27 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
在python tkinter界面中添加按钮的实例
2020/03/04 Python
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
吃透移动端 Html5 响应式布局
2019/12/16 HTML / CSS
美国汽车零部件和配件网站:CarParts
2019/03/13 全球购物
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
合作意向书
2014/07/30 职场文书
关于读书的活动方案
2014/08/14 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
作风转变年心得体会
2014/10/22 职场文书
检讨书模板大全
2015/05/07 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL
pytorch显存一直变大的解决方案
2021/04/08 Python
浅谈MySQL之select优化方案
2021/08/07 MySQL
《废话连篇——致新手》——chinapizza
2022/04/05 无线电
nginx location 带斜杠【 / 】与不带的区别
2022/04/13 Servers