Python实现PPT转化为Word和OCR识别

2023-11-07

一、Python安装和卸载库的方法

1.1 安装

在搜索栏搜索cmd,然后输入pip install +库名字,举个例子,需要安装python-pptx,那就输入 pip install python-docx
在这里插入图片描述

1.2 卸载

在搜索栏搜索cmd,然后输入pip uninstall +库名字,举个例子,需要卸载python-pptx,那就输入 pip uninstall python-docx

二、工具

我所使用的是pycharm,个人感觉比较好用。
下载配置教程可点击这里
在这里插入图片描述

三、将PPT内容转化为Word

3.1 将PPT文本框里的文字转化为Word

3.1.1 需要的库

所需要下载的库为:python-pptxpython-docx两个。

3.1.2 实现代码

from pptx import Presentation
from docx import Document

wordfile = Document()
# 给定ppt文件所在的路径
filepath = r'E:\vs\w.pptx'
pptx = Presentation(filepath)
# 遍历ppt文件的所有幻灯片页
for slide in pptx.slides:
    # 遍历幻灯片页的所有形状
    for shape in slide.shapes:
    # 判断形状是否含有文本框,如果含有则顺序运行代码
        if shape.has_text_frame:
            # 获取文本框
            text_frame = shape.text_frame
            # 遍历文本框中的所有段落
            for paragraph in text_frame.paragraphs:
                # 将文本框中的段落文字写入word中
                wordfile.add_paragraph(paragraph.text)
#word文档存放的路径
save_path = r'E:\vs\w.docx'
wordfile.save(save_path)

3.1.3 具体解释

具体的解释可以点击这里
或者这一个
需要注意的地方就是里面的Document后面的*要去掉,要不然会报错,还有在wordfile.add_paragraph(paragraph.text这一句中少了)

3.2将PPT的图片也输出出来

3.2.1 需要的库

所需要下载的库为:python-pptx

3.2.2 实现代码

如果有图片的话,会直接存放当前Pycharm的项目文件夹之中。

from pptx import Presentation
from pptx.shapes.picture import Picture

prs = Presentation("E:\k\w.pptx")#这是你ppt的路径
index = 1
#读取幻灯片的每一页
for slide in prs.slides:
    # 读取每一板块
    for shape in slide.shapes:
        # print(dir(shape))
        #是否有文字框
        if shape.has_text_frame:
            #读文字框的每一段落
            for paragraph in shape.text_frame.paragraphs:
                if paragraph.text:
                    # 输出段落文字,也有一些属性,可以用dir查看
                    # print(dir(paragraph))
                    print(paragraph.text)
        #是否有表格
        elif shape.has_table:
            one_table_data = []
            for row in shape.table.rows:  # 读每行
                row_data = []
                for cell in row.cells:  # 读一行中的所有单元格
                    c = cell.text
                    row_data.append(c)
                one_table_data.append(row_data)  # 把每一行存入表
            #用二维列表输出表格行和列的数据
            print(one_table_data)
        # 是否有图片
        elif isinstance(shape, Picture):
            #shape.image.blob:二进制图像字节流,写入图像文件
            with open(f'{index}.jpg', 'wb') as f:
                f.write(shape.image.blob)
                index += 1

四、利用OCR将图片信息存放在Word里

4.1 使用百度的api

4.1.1 需要的库

所需要下载的库为:baidu-aippython-docx两个。

4.1.2 实现代码

# 从相应的aip导入AipOcr模块
from aip import AipOcr
from docx import Document


wordfile = Document()
# 输入凭证
APP_ID = "19307867"
API_Key = "HM1UDlzRPrr7TE6xw9YHDSnZ"
Secret_Key = "6jUGVGRLMrbByWz0vPs5w5NOS8m6GMOl"
aipOcr = AipOcr(APP_ID, API_Key, Secret_Key)

# 输入资源
filePath = r"D:\pythonProject"
for i in range(1, 499):
    filePath1 = filePath + "\\" + str(i) + ".jpg" # 最好是jpg,名称统一
    image = open(filePath1, "rb").read()
    # 接通ocr接口
    result = aipOcr.basicGeneral(image)
    # 输出
    mywords = result["words_result"]
    for i in range(len(mywords)):
        print(mywords[i]["words"])
        wordfile.add_paragraph(mywords[i]["words"])

save_path = r'E:\vs\w.docx'
wordfile.save(save_path)

4.1.3 具体解释

具体解释点击这里

4.1.4 存在的问题

这个是直接调用api的,调用多次的话就会失效,需要过一段时间才可以再次调用。所以,需要大批量的识别的话,不建议这种方式。

4.2 基于tesseract的OCR识别

4.2.1 需要的库和软件

所需要下载的库为:python-pptxpytesseractpillow
所需要下载的软件为 tesseract
具体安装和配置方法参考其他博主

4.2.2 实现代码

from PIL import Image
import pytesseract
import pptx

image = Image.open(r'2.jpg')#打开图片
result = pytesseract.image_to_string(image,lang='eng')#使用简体中文字库识别图片并返回结果
print(result)#打印识别的图片内容

4.2.3 具体解释

Python3使用 pytesseract 进行图片识别
Python3.6实现图片转文字

4.2.4 存在的问题

这一个方法识别率刚好不符合我的要求,因为它不可以很好的识别出图片里面数字的正负。

4.3 一些另外的方法

4.3.1 需要安装的库

所需要下载的库为:requestspython-docx(要转化为word才需要)。

4.3.2 实现代码

import requests
import base64
from docx import Document


wordfile = Document()

def ocr(img_path: str) -> list:
    '''
    根据图片路径,将图片转为文字,返回识别到的字符串列表

    '''
    # 请求头
    headers = {
        'Host': 'cloud.baidu.com',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.76',
        'Accept': '*/*',
        'Origin': 'https://cloud.baidu.com',
        'Sec-Fetch-Site': 'same-origin',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Dest': 'empty',
        'Referer': 'https://cloud.baidu.com/product/ocr/general',
        'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
    }
    # 打开图片并对其使用 base64 编码
    with open(img_path, 'rb') as f:
        img = base64.b64encode(f.read())
    data = {
        'image': 'data:image/jpeg;base64,'+str(img)[2:-1],
        'image_url': '',
        'type': 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic',
        'detect_direction': 'false'
    }
    # 开始调用 ocr 的 api
    response = requests.post(
        'https://cloud.baidu.com/aidemo', headers=headers, data=data)

    # 设置一个空的列表,后面用来存储识别到的字符串
    ocr_text = []
    result = response.json()['data']
    if not result.get('words_result'):
        return []

    # 将识别的字符串添加到列表里面
    for r in result['words_result']:
        text = r['words'].strip()
        ocr_text.append("  ")
        ocr_text.append(text)
    wordfile.add_paragraph(ocr_text)
    # 返回字符串列表
    return ocr_text


'''
img_path 里面填图片路径,这里分两种情况讨论:
第一种:假设你的代码跟图片是在同一个文件夹,那么只需要填文件名,例如 test1.jpg (test1.jpg 是图片文件名)
第二种:假设你的图片全路径是 D:/img/test1.jpg ,那么你需要填 D:/img/test1.jpg
'''

for i in range(300, 400):
    img_path10 = str(i) + ".jpg"
    content = "".join(ocr(img_path10))
    print(content)

# img_path = '2.jpg'
# # content 是识别后得到的结果
# content = "".join(ocr(img_path))
# # 输出结果
# print(content)
save_path = r'E:\vs\前400.docx'
wordfile.save(save_path)

4.3.3 具体解释

使用Python快速实现图片文字识别(30行代码)

4.3.4 存在的问题

这一个实质上也是在调用api接口,所以调用多次后会失效,需要过一阵子才可以继续使用。

五、注意点

Python的解释器最好选择你安装Python路径下面的python.exe,这样可以避免你安装了一些库,但是你编译的时候显示找不到库的问题。
在这里插入图片描述
--------------------------------下面未整理------------------------------
出现的问题

Python在终端通过pip安装好包以后,在Pycharm中依然无法使用的解决办法
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python实现PPT转化为Word和OCR识别 的相关文章

随机推荐

  • ROS激光SLAM导航理解

    ROS激光SLAM导航理解 注 最近学习ROS的激光导航知识 需要理清ROS的SLAM 环境感知 costmap 与导航算法 为防止自己忘记 将觉得有价值的内容收集于此 对AGV来说 SLAM是个大大坑 环境感知和局部运动控制也是大坑 学习
  • 数据库添加/删除/修改 表字段(超详细)

    Oracle 添加 删除 修改 表字段 超详细 1 添加表字段 1 1 语法结构 1 2 举例说明 1 新建学生信息表 该步骤可忽略 2 初始表样子 3 语法解释 2 修改表字段 2 1 语法结构 1 修改字段属性 2 修改字段名 2 2
  • games101课程作业,在Vs2019环境下的配置环境(不使用虚拟机)

    为什么不使用虚拟机 因为虚拟机使用ubuntu x64版本系统 是一个从未接触过的系统 不好使用 虚拟机中无法使用中文输入法 无法对代码进行注释 不利于学习 虚拟机性能差 打开两三个文件就卡 令人抓狂 要使用终端进行编译 很是麻烦 还是喜欢
  • 面试经典-不被忽略的@property

    我们都知道 property是用来声明属性的 可以保存类的状态或信息 而与其相关的内容 诸如copy weak 深拷贝等 经常会在面试的过程中出现 接下来深入下这些模糊 熟悉的内容 理理顺 内容概要 1 property的本质 2 自动合成
  • Profinet 的交互流程

    Profinet 的交互流程 启动过程 在启动Profinet IO设备时 在设置IP地址之前 使用DCP协议 该协议类似于DHCP协议 PLC发送DCP广播消息 Identify 子网上的所有IO设备都使用本身的MAC地址进行应答 PLC
  • 机器学习算法与Python实践之(六)二分k均值聚类

    机器学习算法与Python实践之 六 二分k均值聚类 zouxy09 qq com http blog csdn net zouxy09 机器学习算法与Python实践这个系列主要是参考 机器学习实战 这本书 因为自己想学习Python 然
  • 基于IDEA的Java学生管理系统

    1 创建学生类 package studentManager public class Student 定义成员变量 private String num 学号 private String name 姓名 private String a
  • 善用Linux内核中的各种数据结构和算法

    1 介绍 在数据结构和算法一文中经常就信手拈来一些基本数据结构和算法 如链表 队列 栈 二叉树等等 但是在C的标准库中并没有自带这些 C 通过STL 类程序库等等会带这些 那么在嵌入式开发里面怎么快速方便使用这些数据结构和算法咧 答案就是从
  • OpenGL 理解GL_TRIANGLE_STRIP等绘制三角形序列的三种方式

    OpenGL 理解GL TRIANGLE STRIP等绘制三角形序列的三种方式 2012 04 12 20 19 19389人阅读 评论 7 收藏 举报 GL TRIANGLE STRIP绘制三角形方式很多时候令人疑惑 在这里对其运作机理进
  • 【Java基础·Comparator多字段排序】

    Java基础 Comparator多字段排序 需求 对指定List按照 身份证号 姓名 入学时间倒序排列 版本1 package com biaogexf tools import lombok Data import java util
  • 游戏开发unity杂项知识系列:GameObject组件的SetActive、active、activeSelf与activeInHierarchy

    SetActive 控制物体的显示状态 SetActive true 物体设置为可显示状态 但是仍然依赖上层的显示状态 上层显示状态为可显示才能显示 SetActive false 物体设置为不可显示状态 active 在某个版本后已经弃用
  • Python标准库----random

    目录 一 简单认识random模块 二 本人对计算机中 随机 伪随机数 的理解和认识 三 random模块的常用方法 1 random seed 2 其余一些常用方法 四 参考文献 一 简单认识random模块 Python官网的解释 该模
  • SASS用法指南

    学过CSS的人都知道 它不是一种编程语言 你可以用它开发网页样式 但是没法用它编程 也就是说 CSS基本上是设计师的工具 不是程序员的工具 在程序员眼里 CSS是一件很麻烦的东西 它没有变量 也没有条件语句 只是一行行单纯的描述 写起来相当
  • 基于DC-DC的PWM控制器simulink仿真,包括abc转dq,PI控制器等

    目录 1 算法仿真效果 2 MATLAB源码 3 算法概述 1 引言 2 基本原理 2 1 脉宽调制 PWM
  • [C# 开发技巧系列] 使用C#操作幻灯片

    本专题概要 引言 实现思路 遥控幻灯片程序的实现 小结 一 引言 记得老师讲课的时候 经常会用PPT遥控翻页笔来遥控幻灯片来给我们讲课 当时觉得非常有趣 由于这段时间接触了VSTO相关的开发 了解到了Office的相关产品都公开了一些API
  • 三菱m80润滑参数_三菱第四轴的开通及设定

    M70与M80 均是标配第四轴功能的 不需要开通选项功能 a 开通第四轴功能 1002 4按下急停按钮 点击机台关机电源 关闭机床总电源 再开启机床总电源 再开机 b 定义第四轴名称 1013 A 第四轴名称为A c 格式化 使上述参数设定
  • Qt中的线程详解

    概述 在多核时代 CPU 的主频已经进入瓶 颈 另辟蹊径地提高程序运行效率就是使用线程 充分利用多核的优势 线程可以看做是 轻量级进程 线程即可以由操作系统管理 也可以由应用程序管 1 为什么要使用线程 我们都知道 进程线程的概念是非常重要
  • 如何彻底卸载anaconda3(win10)

    前言 win10 anaconda3 参考文档 anaconda官方删除文档 第一步 找到anaconda的安装文件夹 双击运行Uninstall文件 优点 方便快捷 缺点 无法将anaconda的配置文件删除 第二步 删除anaconda
  • obj、gltf、glb、fbx、b3dm模型项目汇总

    网址 https github com einstein20050430 Fast Quadric Mesh Simplification 项目 Fast Quadric Mesh Simplification master 功能 有损压缩
  • Python实现PPT转化为Word和OCR识别

    文章目录 一 Python安装和卸载库的方法 1 1 安装 1 2 卸载 二 工具 三 将PPT内容转化为Word 3 1 将PPT文本框里的文字转化为Word 3 1 1 需要的库 3 1 2 实现代码 3 1 3 具体解释 3 2将PP