【RAG】Linux系统下ppt转pptx,读取解析pptx文本数据

前情提要

检索增强生成(RAG)技术,作为 AI 领域的尖端技术,能够提供可靠且最新的外部知识,极大地便利了各种任务。在 AI 内容生成的浪潮中,RAG 通过其强大的检索能力为生成式 AI 提供了额外的知识,助力其产出高质量内容。尽管大型语言模型(LLMs)在语言处理上展现了突破性的能力,但仍受限于内部知识的幻觉和过时。因此,检索增强的 LLMs 应运而生,它们利用外部权威知识库,而非仅依赖内部知识,以提升生成质量。

遇到问题

针对pptx的文档解析技术存在已久,但是ppt格式文件无法进行解析,且我没有搜索到在Linux系统服务器中ppt转pptx的资料,window系统中倒是可以转换

解决方案

安装系统依赖

apt-get install unoconv
apt-get install libreoffice

安装软件包依赖

pip install unoconv
pip install pyuno
pip install weaviate-client
pip install unstructured[all-docs] == 0.13.3
pip install python-dotenv

代码demo

import glob
import os
import subprocess
import weaviate
import weaviate.classes as wvc
from dotenv import load_dotenv
from unstructured.chunking.title import chunk_by_title
from unstructured.documents.elements import CompositeElement, Table
from unstructured.partition.pptx import partition_pptx
from weaviate.config import AdditionalConfigload_dotenv()
os.environ['UNO_PATH'] = '/usr/lib/libreoffice'
os.environ['PATH'] += ':/usr/lib/libreoffice/program'file_path = "/your/ppt_path/case_1.ppt"def extract_text(file_name: str):elements = partition_pptx(filename=file_name,multipage_sections=True,infer_table_structure=True,include_page_breaks=False,)chunks = chunk_by_title(elements=elements,multipage_sections=True,combine_text_under_n_chars=0,new_after_n_chars=None,max_characters=4096,)text_list = []for chunk in chunks:if isinstance(chunk, CompositeElement):text = chunk.texttext_list.append(text)elif isinstance(chunk, Table):if text_list:text_list[-1] = text_list[-1] + "\n" + chunk.metadata.text_as_htmlelse:text_list.append(chunk.hunk.metadata.text_as_html)result_dict = {"无标题":[]}for text in text_list:split_text = text.split("\n\n", 1)if len(split_text) == 2:title, text = split_textif title not in result_dict:result_dict[title] = []result_dict[title].append(text)else:result_dict["无标题"].append(text)return result_dictdef split_chunks(text_list: list, source: str):chunks = []for text in text_list:for key, value in text.items():chunks.append({"question": key, "answer": value, "source": source})return chunksdef convert_ppt_to_pptx(ppt_file_path):# Define the command to run LibreOffice in headless modecommand = ['libreoffice','--headless','--convert-to', 'pptx','--outdir', os.path.dirname(ppt_file_path),ppt_file_path]# Run the commandresult = subprocess.run(command, capture_output=True, text=True)if result.returncode != 0:raise RuntimeError(f"Failed to convert '{ppt_file_path}' to PPTX.\nError: {result.stderr}")return ppt_file_path.replace('.ppt', '.pptx')pptx_file_path = convert_ppt_to_pptx(file_path)
print("convert ppt to pptx done")
contents = extract_text(pptx_file_path)
for k,v in contents.items():print(k,v)print("__"*30)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/12738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3 动态加载页面

首先&#xff0c;通过下面代码告诉编译器要编译哪些页面 static modules import.meta.glob(./views/**/*.vue);然后动态加载函数这样写&#xff1a; static asyncLoadView (path: string) > {return defineAsyncComponent({loader: <any>Global.modules[./views/${…

Redis的跳表:高效实现有序集合

在 Redis 中&#xff0c;跳表&#xff08;Skip List&#xff09;是一种常用的数据结构&#xff0c;用于实现有序集合&#xff08;Sorted Set&#xff09;。跳表是一种基于链表的数据结构&#xff0c;具有快速的查找、插入和删除操作&#xff0c;适用于有序集合的实现。 本文将…

分布式搜索——ElasticSeach简介

一般都用数据库存储数据&#xff0c;然后对数据库进行查询获取数据&#xff0c;但是当数据量很大时&#xff0c;查询效率就会很慢&#xff08;具体下面会讲到&#xff09;&#xff0c;所以这种情况下就会使用到ElasticSeach ElasticSeach的基本介绍 ElasticSeach是一 款非常强…

2024重庆高等教育博览会|2024重庆高教展|全国高等教育博览会

2024重庆高等教育博览会|2024重庆高教展|全国高等教育博览会 第62届全国高等教育博览会&#xff08;2024.秋季重庆&#xff09; 时间&#xff1a;2024年11月15-17日 地点&#xff1a;重庆国际博览中心 组织机构 主办单位&#xff1a;中国高等教育学会 承办单位&#xff1a;国药…

杰发科技AC7801——ADC之Bandgap和内部温度计算

0. 参考 电流模架构Bandgap设计与仿真 bandgap的理解&#xff08;内部带隙电压基准&#xff09; ​ ​ 虽然看不懂这些公式&#xff0c;但是比较重要的一句应该是这个&#xff1a;因为传统带隙基准的输出值为1.2V ​ 1. 使用 参考示例代码。 40002000是falsh控制器寄…

NXP RT1176(一)——二级BootLoader开发(安全引导加载程序SBL)

目录 1. 开发环境 2. 二级BOOT的功能 3. 步骤 3.1 配置源码 3.2 构建项目 3.2.1 MDK 3.2.2 IAR&#xff08;IAR也编译一下工程看看&#xff0c;这样两个平台都可以支持了&#xff09; 单核M7的开发&#xff01;&#xff01; 1. 开发环境 本文Windows下开发&#xff1a;…

【无标题】vo dto

在Java中&#xff0c;VO、PO、DTO都是常用的数据对象模型。 VO&#xff08;Value Object&#xff09;是值对象&#xff0c;通常用于表示一个业务实体或者页面展示的内容。VO通常包含了多个属性&#xff0c;并且这些属性的类型和名称与业务相关。VO并不一定与数据库中的表结构相…

MHD、MQA、GQA注意力机制详解

MHD、MQA、GQA注意力机制详解 注意力机制详解及代码前言&#xff1a;MHAMQAGQA 注意力机制详解及代码 前言&#xff1a; 自回归解码器推理是 Transformer 模型的 一个严重瓶颈&#xff0c;因为在每个解码步骤中加 载解码器权重以及所有注意键和值会产生 内存带宽开销 下图为三…

巩固学习8

在 Pandas 中&#xff0c;sep参数用于指定数据中字段之间的分隔符。常见的参数包括&#xff1a; 逗号&#xff1a;,&#xff0c;常用于CSV文件。 制表符&#xff1a;\t&#xff0c;常用于TSV文件。 空格&#xff1a;’ &#xff0c;用于空格分隔的数据。 分号&#xff1a;;&…

【合成孔径雷达】合成孔径雷达的多视角理解和时/频成像算法的统一解释

文章目录 一、什么是雷达成像&#xff08;1&#xff09;主要的遥感探测手段&#xff1a;光学、红外和雷达&#xff08;2&#xff09;从数学的角度&#xff1a;雷达成像主要研究什么&#xff1f;数据采集&#xff1a; y T x n yTxn yTxn信息提取&#xff1a; y − > x ? y…

编译错误:stray ‘\357’ in program的解决方法

目录 把报错文件更换编码格式&#xff0c;我试的utf-8 bom编码就可以了&#xff0c;可以多换几种试试。 网友的另一种案例&#xff1a; 编译错误&#xff1a;stray ‘\357’ in program的解决方法 把报错文件更换编码格式&#xff0c;我试的utf-8 bom编码就可以了&#xff0c…

LabVIEW做仪器测试不知道是否适用

LabVIEW&#xff08;Laboratory Virtual Instrument Engineering Workbench&#xff09;是一个用于系统工程和测量系统的图形编程平台&#xff0c;由National Instruments开发。它非常适用于仪器控制、数据采集、信号处理以及自动化测试与测量系统的开发。如果您的工作涉及到这…

如何同步管理1000个设备的VLAN数据?

什么是VLAN&#xff1f; VLAN&#xff0c;也就是虚拟局域网&#xff0c;是通过为子网提供数据链路连接来抽象出局域网的概念。在企业网中&#xff0c;一个企业级交换机一般是24口或者是48口&#xff0c;连接这些接口的终端在物理上形成一个广播域。广播域过大&#xff0c;就会导…

【AI智能体】零代码构建AI应用,全网都在喊话歌手谁能应战,一键AI制作歌手信息查询应用

欢迎来到《小5讲堂》 这是《文心智能体平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 文心智能体大赛背景创建应用平台地址快速构建【基础配置】…

前端无样式id或者class等来定位标签

目录&#xff1a; 1、使用背景2、代码处理 1、使用背景 客户使用我们产品组件&#xff0c;发现替换文件&#xff0c;每次替换都会新增如下的样式&#xff0c;造就样式错乱&#xff0c;是组件的文件&#xff0c;目前临时处理的话就是替换文件时删除新增的样式&#xff0c;但是发…

8评分卡建模整体流程梳理

评分卡建模整体流程梳理 学习目标 掌握评分卡建模流程使用Toad库构建评分卡1 加载数据 import pandas as pd from sklearn.metrics import roc_auc_score,roc_curve,auc from sklearn.model_selection import train_test_split from sklearn.linear_model import Logis…

云服务器上Redis数据库被攻击实录+总结

情景重现 Redis日志记录&#xff08;异常部分&#xff09;&#xff1a; 36346:M 14 May 2024 15:46:12.505 # Possible SECURITY ATTACK detected. It looks like somebody is sending POST or Host: commands to Redis. This is likely due to an attacker attempting to us…

【JVM】阅读Class字节码:常量池

目录 基本结构解析 常量池 常量池简介 如何阅读Class文件中的常量池信息 基本结构解析 Magic(魔数) Magic的唯一作用是确定这个文件是否为一个能被虚拟机所接受的class 文件。魔数值固定为0xCAFEBABE&#xff0c;不会改变。 常量池 常量池简介 下图是反编译过后的字节码文…

Python可视化总结与案例解析

目录 第一章&#xff1a;Python可视化基础 1.1 环境搭建 1.2 数据可视化 1.3 统计图表 1.4 交互式可视化 1.5 实战案例&#xff1a;网站流量分析 1.6 总结 第二章&#xff1a;Python可视化高级应用 2.1 高级图表类型 2.2 动态可视化 2.3 数据可视化最佳实践 2.4 实战…

TensorFlow的学习

0.基础概念 术语表&#xff1a; https://developers.google.cn/machine-learning/glossary?hlzh-cn#logits 1.快速入门 https://tensorflow.google.cn/tutorials/quickstart/beginner?hlzh-cn 2.基于Keras进行图像分类 https://tensorflow.google.cn/tutorials/keras/cl…