【2024LLM应用-数据预处理】之如何从PDF,PPT等非结构化数据提取有效信息(结构化数据JSON)?

🥰大家知道吗,之前在给AI大模型"喂数据"的时候,我们往往需要把非结构化数据(比如PDF、PPT、Excel等)自己手动转成结构化的格式,这可真是太累人儿了。🥵

幸好现在有了Unstructured这个神级库,它内置的数据提取函数可以帮我们快速高效地完成这个转换过程。而且支持常见的多种文件格式!🐶

比如说,如果我们要从一个PPT文件里提取数据,可以用partition_pptx函数:

复制代码
from unstructured.partition.pptx import partition_pptx

filename = "example_files/msft_openai.pptx"
elements = partition_pptx(filename=filename)

这个函数会把PPT文件的内容解析成一个elements列表,每个元素都是一个Element对象,分别代表PPT里的标题、文字、图片等内容。

但是我们想要的是结构化数据而不是对象呀,所以还需要再转换一下:

复制代码
element_dict = [el.to_dict() for el in elements]
print(json.dumps(element_dict, indent=2))

这两行代码的作用是:

  1. 遍历elements列表,把每个Element对象都转换成字典(调用它们的to_dict方法)
  2. 把这些字典组成一个新列表element_dict
  3. 使用json.dumpselement_dict转成Json格式的字符串,并指定indent=2让结果更加美观

是不是很酷?现在我们就拥有了结构化的数据啦!

如果是PDF文件的话,流程也差不多:

复制代码
from unstructured.shared import Files, PartitionParameters
from unstructured.openai_api import SDK

filename = "example_files/CoT.pdf"
with open(filename, "rb") as f:
    files = Files(content=f.read(), file_name=filename)
    
req = PartitionParameters(files=files, strategy='hi_res', pdf_infer_table_structure=True)

s = SDK.get_instance() 
resp = s.general.partition(req)
print(json.dumps(resp.elements, indent=2))

这里主要新的地方是用Files对象来存PDF文件的内容,然后定义一个PartitionParameters来设置处理策略(比如识别表格等)。

最后就是创建SDK实例,调用partition方法,传入之前定义的参数,就能获取PDF里的结构化数据啦!

对于Excel文件,官方文档里也有介绍,应该也是类似的操作。

有了这些技能,我们就能把海量的非结构化数据高效地转换成结构化格式,喂给大模型"吃"啦!以后制作AI应用的时候,效率和开发体验都会更上一层楼~🚀

相关推荐
茶栀(*´I`*)3 分钟前
【视觉探索】OpenCV 全景导论:从数字图像基石到核心模块体系
人工智能·opencv·计算机视觉
晚霞的不甘9 分钟前
Flutter for OpenHarmony 引力弹球游戏开发全解析:从零构建一个交互式物理小游戏
前端·flutter·云原生·前端框架·游戏引擎·harmonyos·骨骼绑定
喝可乐的希饭a9 分钟前
AI Agent 的九种设计模式
人工智能·设计模式
春日见11 分钟前
Docker中如何删除镜像
运维·前端·人工智能·驱动开发·算法·docker·容器
枫斗.12 分钟前
Spring AI 自定义 ChatClient Bean 注入冲突问题详解
java·人工智能·spring
郝学胜-神的一滴13 分钟前
Python中的with语句与try语句:资源管理的两种哲学
linux·服务器·开发语言·python·程序人生·算法
难得的我们14 分钟前
如何为开源Python项目做贡献?
jvm·数据库·python
云智慧AIOps社区15 分钟前
云智慧Cloudwise X1 轮足机器人重磅发布:跨楼层全自动巡检,重塑数据中心运维范式
运维·人工智能·机器人·自动化
码农六六23 分钟前
前端知识点梳理,前端面试复习
前端
码农三叔24 分钟前
(5-3)骨架、外壳与轻量化设计:外壳设计与人机交互安全
人工智能·架构·机器人·人机交互·人形机器人