一、批量获取网页图片,并通过调用百度文字识别api,进行图片中的文字识别
1、批量获取网页图片
cookie登录、获取url状态码、新建文件夹
import requests
import os
import time
# 将需要请求的url放在一个数组里面
url_list = ["添加图片所在网页的url"]
# 由于网站本身安全性不高,先通过浏览器登录,将浏览器与服务器的身份识别“cookie和user-agent”复制出来,以便随着请求一并发过去,实现免密登录。
headers = {
"cookie": "添加浏览器获取到的cookie指",
"user-agent": "添加浏览器中的设备信息"
}
for url in url_list:
# 发送请求
resp = requests.get(url, headers=headers)
# 确定网页字符集
resp.encoding = 'utf-8'
# 以json方式输出请求的内容
dic = resp.json()
# 获取图片的总数量
count = dic['data']['count']
# 获取课件名字
title = dic['data']['title']
# 将图片保存的路径赋值
path = 'E:/小骗子/项目管理/'
# 新建文件夹
os.mkdir(path + title)
for iit in range(0, count):
# 获取没一张图片的下载地址
srcUrl = dic['data']['slides'][iit]['Cover']
# 获取url请求状态码
resp = requests.get(srcUrl)
status = resp.status_code
# 判断图片下载请求是否成功
if status == 200:
# 如果成功,则获取图片的二进制
img_resp = requests.get(srcUrl)
img_resp.content
# 保存图片
# 注:由于图片名称使用的是数字,所以需要将数字转换为字符串
with open("E:/小骗子/项目管理/" + title + "/" + str(iit) + ".jpg", mode="wb") as f:
f.write(img_resp.content) # 图片的内容写入到文件
print(title, "over第", iit, "张")
else:
print(title, "over第", iit, "张获取失败")
break
time.sleep(1)
print(title, "over", iit, "张")
2 调用百度文字识别api进行文字识别
- 百度通用文字识别api、获取文件夹中文件的数量
- pip install baidu-api
- 在txt中追加换行符
import os
from aip import AipOcr
# 百度api的APP_ID、API_KEY、SECRET_KEY
APP_ID = '添加自己的app_id'
API_KEY = '添加自己的api_key'
SECRET_KEY = '添加自己的SECRET_KEY'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 存放图片的文件夹名
file_name = ["0301", "资源管理", "范围管理", "项目管理"]
for file_url in file_name:
# 存放图片的文件夹路径
file = f"E:/小骗子/项目管理/{file_url}/"
# 读入文件夹
files = os.listdir(file)
# 统计文件夹中的文件个数
num_png = len(files)
for count in range(0, num_png):
# 获取文件夹中单个图片
path = f"{file}{count}.jpg"
# 调用百度文字识别api,进行图片中的文字识别
with open(path, 'rb') as fp:
image = fp.read()
dic_result = client.basicGeneral(image)
res = dic_result['words_result']
result = ''
for m in res:
result += str(m['words'])
# 新建一个txt文件,将识别到的文字写入到txt中
fp2 = open(f'{file}{file_url}.txt', 'a', encoding='utf-8')
fp2.write(f"---------------第{count}页------------------")
# \n:指在换行符,\r\n:指两次换行
fp2.write(f'\n{result}\r\n')
print(f"已识别完成 {file_url}的第{count}张")
fp2.close()