【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.pswp.cn/diannao/12738.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12738.shtml
英文地址,請注明出處:http://en.pswp.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…