爬虫案例-爬取某度文档利用飞桨ch_pp-ocrv3模型提高对图片的识别

devtools/2025/2/11 14:35:54/

文章目录

    • 1.安装VC_redist.x64库和开启开发者模式
    • 2.第三方库的安装和paddlehub安装
    • 3、爬取某度文档的代码
    • 4、效果

1.安装VC_redist.x64库和开启开发者模式

下载VC_redist.x64: 点击这里

在开发者选项,打开开发人员模式

在这里插入图片描述

2.第三方库的安装和paddlehub安装

#以下是安装http请求的第三方库
pip install requests
#以下是安装处理文档的第三方库
pip install python-docx
#以下是大量处理维度数组与矩阵运算的第三方库
pip install numpy
#以下是图像处理和计算机视觉方面的很多通用算法的第三方库
pip install opencv-python
#以下是作为底层框架,支持模型的训练和推理GPU版。
pip install paddlepaddle-gpu
#以下是作为底层框架,支持模型的训练和推理CPU版。
pip install paddlepaddle
#以下是提供了模型的管理和一键预测功能
pip install paddleHub
#以下是安装ch_pp-ocrv3模型
hub install ch_pp-ocrv3

3、爬取某度文档的代码

import requests
import os
from docx import Document
import cv2
import numpy as np
import paddlehub as huburl = "https://wenku.baidu.com/gsearch/rec/pcviewdocrec2023?"
header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0"}data = {'sessionId': '3235255445-3246997752--','docId': '3a283569cc84b9d528ea81c758f5f61fb7362802','query': '什么是AI?什么是人工智能?','recPositions': 'catalog,toplist'
}request = requests.get(url,params=data,headers=header)
#print(request)
'''以下测试用的
#响应数据
print(request.text)
#响应头信息
#print(request.headers)
#状态码
#print(request.status_code)
'''#爬取百度文档的图片
i = 0
print(request.text)
output_folder = r"C:/Users/zzx/Desktop/百度文档" + "/"
if not os.path.exists(output_folder):os.makedirs(output_folder)
for index in request.json()["data"]["catalogDoc"]:i+=1pic = index['pic']img_content = requests.get(pic,stream=True).contentwith open(output_folder + index["title"] +str(i) + '.jpg', mode='wb') as f:f.write(img_content)print(i,pic)
# 列出输出文件夹中的图片进行文字识别后转换成文档docx
for filename in os.listdir(output_folder):if filename.endswith('.jpg'):#print(filename)image_path = os.path.join(output_folder,filename)print(image_path)# 使用 numpy 的 fromfile 函数读取图像文件,可以用output_folder中文路径识别图片image_numpy = np.fromfile(image_path, dtype=np.uint8)# 使用 cv2.imdecode 函数解码图像image = cv2.imdecode(image_numpy, cv2.IMREAD_COLOR)print(image)#判断如果图片存在执行if image is not None:# 转换为灰度图像gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 转换为RGB格式(PaddleOCR需要)processed_img = cv2.cvtColor(gray, cv2.COLOR_GRAY2RGB)# OCR识别,mkldnn加速仅在CPU下有效ocr = hub.Module(name="ch_pp-ocrv3", enable_mkldnn=True)results = ocr.recognize_text(images=[processed_img])#生成Word文档doc = Document()if results and len(results) > 0:text_data = results[0]['data']texts = [item['text'] for item in text_data]doc.add_paragraph('\n'.join(texts))# 保存生成的Word文档,使用不同的文件名doc.save(os.path.join(output_folder, f'{filename[:-4]}.docx'))

4、效果

下载的图片

在这里插入图片描述>

通过ch_pp-ocrv3模型识别文字,效果相当好

在这里插入图片描述


http://www.ppmy.cn/devtools/157952.html

相关文章

Android studio 创建aar包给Unity使用

1、aar 是什么? 和 Jar有什么区别 aar 和 jar包 都是压缩包,可以使用压缩软件打开 jar包 用于封装 Java 类及其相关资源 aar 文件是专门为 Android 平台设计的 ,可以包含Android的专有内容,比如AndroidManifest.xml 文件 &#…

中国通信企业协会通信网络安全服务能力评定安全设计与集成服务能力评定三级要求准则...

安全设计与集成服务能力三级是通信网络安全服务能力评定安全设计与集成服务能力评定的最高等级,所需的要求也会更加严苛,不仅要满足安全设计与集成服务二级能力要求的所有条款,还要满足以下要求: 规模与资产要求 1)单位正规编制员…

哪吒闹海!SCI算法+分解组合+四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测

哪吒闹海!SCI算法分解组合四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测 目录 哪吒闹海!SCI算法分解组合四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测效果一览基本介绍程序设计参考资料 效果一览…

【Elasticsearch】集群配置性能优化

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

Spring Boot从入门到精通:核心知识点+实战指南

目录 一、Spring Boot 是什么?为什么它如此流行? 二、快速创建你的第一个Spring Boot应用 2.1 使用Spring Initializr生成项目 2.2 核心代码示例 三、深度解析Spring Boot核心机制 3.1 自动配置原理揭秘 3.2 自定义Starter实战 四、生产环境必备…

【CubeMX+STM32】SD卡 文件系统读写 FatFs+SDIO+DMA

本篇,将使用CubeMXKeil,创建一个SD卡的 FatFSSDIODMA 文件系统读写工程。 目录 一、简述 二、CubeMX 配置 FatFSSDIO DMA 三、Keil 编辑代码 四、实验效果 实现效果,如下图: 一、简述 上两篇,已循序渐进讲解了SD、…

vue数据请求通用方案:axios的options都有哪些值

文章目录 1. axios的options都有哪些值1.1. 常用的 Axios 配置选项1.1.1 url1.1.2 method1.1.3 baseURL1.1.4 headers1.1.5 params1.1.6 data1.1.7 timeout1.1.8 withCredentials1.1.9 responseType1.1.10 onUploadProgress1.1.11 onDownloadProgress1.1.12 maxContentLength1.…

二、Golang Channel通信和控制题目

要求 采用Golang语言中channel实现协程间的通讯,并通过控制channel控制起输入与输出格式。其中一个协程sender负责发送字符串"ABC"的字符,另一个协程reciever负责接收这些字符并打印。 要求接收方reciever协程能够按照顺序,按照行…