视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
python使用Tesseract库实现识别验证
2020-11-27 14:13:17 责编:小采
文档
一、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	esseract.exe'

5.案例演示

识别以下图片文字:

import pytesseract
from PIL import Image
#1.引入Tesseract程序
pytesseract.pytesseract.tesseract_cmd = r'F:Tesseract-OCR	esseract.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引擎识别验证码有些无法识别,比如像豆瓣生成的验证码无法识别其内容,如果需要爬取豆瓣中的数据这时候就需要手动的输入验证码:

三、模拟登陆知乎源码

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; Win; x; 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')

下载本文
显示全文
专题