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实现LRU算法的2种方法
Jun 24 Python
用python结合jieba和wordcloud实现词云效果
Sep 05 Python
python中实现延时回调普通函数示例代码
Sep 08 Python
基于Django的ModelForm组件(详解)
Dec 07 Python
PyQt实现界面翻转切换效果
Apr 20 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
关于keras中keras.layers.merge的用法说明
May 23 Python
Python如何脚本过滤文件中的注释
May 27 Python
Keras自动下载的数据集/模型存放位置介绍
Jun 19 Python
python如何写个俄罗斯方块
Nov 06 Python
python中常用的数据结构介绍
Jan 12 Python
Python3中PyQt5简单实现文件打开及保存
Jun 10 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中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
PHP程序员必须清楚的问题汇总
2014/12/18 PHP
PHP 错误处理机制
2015/07/06 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
PHP实现微信申请退款功能
2018/10/01 PHP
php输出形式实例整理
2020/05/05 PHP
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
jquery 事件执行检测代码
2009/12/09 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
快速解决jQuery与其他库冲突的方法介绍
2014/01/02 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
js点击文本框弹出可选择的checkbox复选框
2016/02/03 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
Angular4 中常用的指令入门总结
2017/06/12 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
[00:48]完美“圣”典2016风云人物:xiao8宣传片
2016/11/30 DOTA
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
详解HTML5中表单验证的8种方法介绍
2016/12/19 HTML / CSS
html5唤醒APP小记
2019/03/27 HTML / CSS
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
存储过程和函数的区别
2013/05/28 面试题
浙大毕业生自荐信
2014/01/26 职场文书
房屋公证委托书
2014/04/03 职场文书
人口与计划生育目标管理责任书
2014/07/29 职场文书
2014年大学团支部工作总结
2014/12/02 职场文书
春季运动会加油词
2015/07/18 职场文书
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js