当前位置: 首页 > news >正文

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

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

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

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

from unstructured.partition.pptx import partition_pptxfilename = "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 SDKfilename = "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应用的时候,效率和开发体验都会更上一层楼~🚀

http://www.lryc.cn/news/389387.html

相关文章:

  • 冯雷老师:618大退货事件分析
  • JAVA基础教程DAY0-基础知识
  • 鸿蒙开发Ability Kit(程序访问控制):【安全控件概述】
  • 【信息系统项目管理师】18年~23年案例概念型知识
  • 什么是字符串常量池?如何利用它来节省内存?
  • Selenium自动化测试20条常见异常+处理方案
  • verilog将信号和常数拼接起来
  • OpenSSH远程代码执行漏洞 (CVE-2024-6387)
  • 高薪程序员必修课-java并发编程的bug源头
  • c++:#include 某文件.h底层如何寻找其.cpp实现
  • uniapp中如何进行微信小程序的分包
  • win10下安装PLSQL14连接Oracle数据库
  • 高考失利咨询复读,银河补习班客服开挂回复
  • java 代码块
  • vue中避免多次请求字典接口
  • Snappy使用
  • 跨越重洋:在Heroku上配置Pip镜像源的终极指南
  • SpringBoot + 虚拟线程,性能炸裂!
  • Java Character类
  • Python中的爬虫实战:猫眼电影爬虫
  • WAIC2024 | 华院计算邀您共赴2024年世界人工智能大会,见证未来科技革新
  • 数据库原理之数据库基本概念
  • vue2项目的打包以及部署
  • Java的全局异常处理代码
  • Hi3861 OpenHarmony嵌入式应用入门--LiteOS semaphore作为锁
  • 注意!年龄越大,社交圈子越窄?其实这是老人的理性选择!数学家告诉你:何时该跳槽,何时该坚守!你必须知道的三个智慧:让你的人生更加精彩!
  • [SwiftUI 开发] 嵌套的ObservedObject中的更改不会更新UI
  • 全面了解机器学习
  • 作为图形渲染API,OpenGL和Direct3D的全方位对比。
  • 安装Rabbitmq遇到的坑