Python3,5行代码,Chatxxx能对PDF文件进行旋转、提取、合并等一系列操作,看了这篇,80岁老奶奶走路都不扶墙了。

news2024/11/15 10:24:48

ChatPDF的妙用

  • 1、引言
  • 2、代码实战
    • 2.1 原理
    • 2.2 安装
    • 2.2 示例
      • 2.2.1 创建PDF文件
      • 2.2.2 旋转PDF文件
      • 2.2.3 拆分PDF文件
      • 2.2.4 合并PDF文件
      • 2.2.5 提取PDF文件内容
  • 3、总结

1、引言

小屌丝:鱼哥,最近干啥了?
小鱼:最近? 你指的多近?
小屌丝:就是 这几天?
小鱼:这几天 我在搬砖啊。
小屌丝:那前几天呢?
小鱼:前几天,我五一假期,我也在搬砖。
小屌丝:鱼哥,你…。
在这里插入图片描述

小鱼:我确实这样的啊。
小屌丝:那换一个话题,ChatGPT搞得怎么样?
小鱼:ChatGPT各个大厂不都在搞,你想了解的,ChatGPT都能回答。
小屌丝:鱼哥,你…!
小鱼:这就是ChatGPT的强大之处啊,事实也是如此呢。
小屌丝:好吧, 那我想提取PDF文档的内容。
小鱼:这篇:《Python3,9行批量提取PDF文件的指定内容,这种操作,保证人见人爱….》
小屌丝:我是人民币玩家, 我要更高级的。
小鱼:这… 容我看一下
小屌丝:看啥?
小鱼:看你账户余额还剩多少,是不是该充值了。
小屌丝:鱼哥,你…!
小鱼:充满,给你想要的高级感…
在这里插入图片描述

小屌丝:嘿嘿 … 充满…

2、代码实战

2.1 原理

说到 ChatPDF,大部分同学的第一反应就是, 不好意思,我不知道。
但是,说到ChatGPT,那你可能说,这我必须知道啊, OPenAI公司的产品,并且现在这么爆火,我还能不知道呢。

既然知道ChatGPT,那ChatPDF就不难理解了。
其实,ChatPDF就是ChatGPT的一个衍生产品。

小屌丝:既然是ChatGPT的衍生产品,那,工作原理是啥样的呢?
小鱼:工作原理不难,也就2套把大象放冰箱的步骤吧。

在这里插入图片描述

  • 1、ChatPDF读取PDF文件内容,并将其转换成文本(可以是.txt)格式;
  • 2、ChatPDF对提取的文本内容进行清理和标准化,如:分段、分句等;
  • 3、使用OpenAI的Embeddings API将每个分段转换为向量,这个向量将对文本中的语义进行编码,以便于与问题的向量进行比较;
  • 4、使用OpenAI的Embeddings API将问题转换为一个向量,并与每个分段的向量进行比较,以找到最相似的分段。这个相似度计算可以使用余弦相似度等常见的方法进行;
  • 5、将找到的最相似的分段与问题作为prompt,调用OpenAI的Completion API,让ChatGPT学习分段内容后,再回答对应的问题;
  • 6、会将ChatGPT生成的答案返回给用户,完成一次查询。

小屌丝:没想到,实现流程确实挺easy的。
小鱼:大河弯弯向东流,牛牛向前冲 ~ ~

2.2 安装

上一章节我们知道了什么是ChatPDF,以及运行流程,
接下来,就得实际操作操作了 。

当然,涉及到第三方库, 老规矩,安装走起。

pip install chatpdf

然后就是等待着安装。

其它安装方式,直接看这两篇:

  • Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!
  • Python3:我低调的只用一行代码,就导入Python所有库!

因为chatPDF需要安装一会(我不会说这个过程很"短暂")。

2.2 示例

安装完成,我们就看看chatPDF的能耐。

2.2.1 创建PDF文件

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2023-05-06
# @Author : Carl_DJ

'''
实现功能:
    使用chatPDF的基本方法,创建PDF文件
'''

'--------->创建PDF文件<---------'
from chatpdf import ChatPDF

#文件名字
file_name = './data/TestDemo.pdf'
pdf = ChatPDF()
#添加页数
pdf.add_page()
#设置字体
pdf.set_font("Arial", size=12)
#设置内容
pdf.cell(200,10,txt='Hello, Python')
#输出内容
pdf.output(file_name)


2.2.2 旋转PDF文件

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2023-05-06
# @Author : Carl_DJ

'''
实现功能:
    使用chatPDF的基本方法,实现旋转PDF文件内容
'''

'--------->旋转PDF文件内容<---------'
from chatpdf import rotate_pages

#pdf源文件
pdf_file = './data/input.pdf'

#输出的文件
output_file = './data/output.pdf'

#旋转的页码
pages = [1, 3]

#旋转角度设置
rotation_angle = 270

rotate_pages(pdf_file, output_file, pages, rotation_angle)

2.2.3 拆分PDF文件

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2023-05-06
# @Author : Carl_DJ

'''
实现功能:
    使用chatPDF的基本方法,实现拆分PDF文件内容
'''

'--------->拆分PDF文件<---------'
from chatpdf import split

#需要拆分的pdf源文件
pdf_file = 'input_demo.pdf'

#拆分后的pdf保存的文件夹
output_folder = './data/output'

split(pdf_file,output_folder)

2.2.4 合并PDF文件

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2023-05-06
# @Author : Carl_DJ

'''
实现功能:
    使用chatPDF的基本方法,实现合并PDF文件内容
'''

'--------->合并PDF文件<---------'
#获取所有文件
file1 = './data/demo1.pdf'
file2 = './data/demo2.pdf'
file3 = './data/demo3.pdf'

#列表展示所有需要合并的pdf文件
pdf_file_list = [file1,file2,file3]
#合并后输出文件名称
output_file = 'output_demo.pdf'

merge(pdf_file_list,output_file)

2.2.5 提取PDF文件内容

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2023-05-06
# @Author : Carl_DJ

'''
实现功能:
    使用chatPDF的基本方法,实现提取PDF文件内容
'''

'--------->提取PDF文件<---------'
from chatpdf import extract_pages

#待提取的pdf源文件
pdf_file = 'input.pdf'

#输出提取的pdf文件内容
output_file = './data/output.pdf'
#提取的源文件的页码
pages = [1,3,5,7,10]

extract_pages(pdf_file, output_file, pages)

小屌丝:鱼哥,我记得你还写过一篇,专门提取PDF文档内容的博文。
小鱼:嗯,你的记性还挺好,确实写过,就是下面这篇。

  • Python3,9行批量提取PDF文件的指定内容,这种操作,保证人见人爱…

当然,关于对PDF文档的操作,也可以看小鱼的其他博文:

  • Python3:为了200块钱生活费,我破解了媳妇的加密PDF文件,然而看到内容,我…有点慌了~~
  • Python3,2行代码,多种方法,直接把网页内容转换成PDF文档和图片。
  • Python3,2段代码,给pdf文件添加水印,原来watermark还可以这么玩。》

3、总结

看到这里, ChatPDF库的介绍就完成了。
其实ChatPDF库的功能,不止我说的这几个功能哦,还有:

  • PDF文件加密
  • PDF文件解密

在当前ChatGPT爆火的当下,作为技术er,我们多多少少都需要了解一些AI的知识。
即使白~ 嫖~ ChatGPT的使用次数, 也是可以的。
当然, 作为小鱼,肯定不会做(bai piao )的事情,但是,学习的脚步,却从未停止。

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO 博客专家
  • 51认证讲师
  • 认证金牌面试官
  • 职场培训规划师

关注,带你学习更多更有趣的Python知识。

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

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

相关文章

基于MATLAB的无人机遥感数据预处理与农林植被性状估算

在新一轮互联网信息技术大发展的现今&#xff0c;无人机、大数据、人工智能、物联网等新兴技术在各行各业都处于大爆发的前夜。为了将人工智能方法引入农业生产领域。首先在种植、养护等生产作业环节&#xff0c;逐步摆脱人力依赖&#xff1b;在施肥灌溉环节构建智慧节能系统&a…

如何使用CSDN的Markdown编辑器?

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

【C++的类与对象(下)】

目录 一、细说构造函数1.1初始化列表的引入1.2初始化列表1.2关键字explicit 二、static成员2.1static成员的特性2.2题目&#xff1a;实现一个类&#xff0c;计算程序中创建出了多少个类对象2.3题目&#xff1a;设计一个类 只能再栈上或者堆上创建 一、细说构造函数 1.1初始化列…

【A、B、C、D、E类IP地址划分依据,你都会吗?】

IP 地址的格式&#xff1a;IP 地址 网络地址 主机地址 如果 IP 进行了子网划分&#xff1a; 则IP地址网络地址子网地址主机地址 网络地址是互联网上的节点在网络中具有的逻辑地址。MAC 地址&#xff0c;处于数据链 路层&#xff0c;IP 地址处于网络层&#xff0c;端口号处…

考研数据结构--树和二叉树(1)

树和二叉树 文章目录 树和二叉树树定义形式化定义递归定义 树的&#xff08;逻辑&#xff09;表示树形表示法文氏图表示法凹入表示法括号表示法 树的基本术语1. 结点的度与树的度2. 分支结点与叶结点3. 路径与路径长度4. 孩子结点、双亲结点和兄弟结点5. 子孙结点和祖先结点6. …

搭建web服务器

目录标题 搭建web服务器&#xff0c;并显示Redhat测试界面linux主机作为服务器部署web服务程序 Apache http server&#xff08;httpd&#xff09;当前主机启动该服务程序关闭防火墙和selinux 客户端 搭建网站创建自拟定网页文件linux主机作为服务器部署web服务器程序当前主机启…

Qt配置glfw库(Windows)

文章目录 一、下载glfw二、配置2.1、创建Qt工程2.2、移植库文件2.3、导入库到Qt工程2.4、添加OpenGL库2.5、测试代码 一、下载glfw glfw官网下载&#xff1a;https://www.glfw.org/download.html 下载之后&#xff0c;解压如下&#xff1a; 二、配置 2.1、创建Qt工程 创建一…

优质且免费的10个在线图片设计网站!

1.即时设计 即时设计资源社区是一个开源式免费商用图片素材网站&#xff0c;将社交、作品浏览和模板复用融合在一起。它内置了来自国内外优秀设计系统如TDesign、Arco Design、Ant Design和Material Design等的海量设计规范&#xff0c;以及超过3000个UI组件库和每月更新的上百…

远程桌面连接是什么?如何开启远程桌面连接详细教程

远程桌面连接是一种非常方便的技术&#xff0c;它允许用户通过互联网在不同的计算机之间共享资源和访问数据。目前这个技术已经广泛地应用于企业、教育、医疗和其他领域&#xff0c;使得人们能够更高效地工作和学习。 这篇文章&#xff0c;我将解释远程桌面连接是什么&#xf…

leecode111——二叉树最短路径

递归三部曲&#xff1a; 最小深度是从根节点到最近叶子节点的最短路径上的节点数量 &#xff08;1&#xff09;确定参数和返回值&#xff0c; 参数为传入根节点&#xff0c;再根据此遍历左右左右树的节点。返回最短路径&#xff0c;即int类型。 &#xff08;2&#xff09;确…

第4章 静态网站部署

第4章 静态网站部署 Nginx是一个HTTP的web服务器&#xff0c;可以将服务器上的静态文件&#xff08;如HTML、图片等&#xff09;通过HTTP协议返回给浏览器客户端 4.1 案例&#xff1a;将ace-master这个静态网站部署到Nginx服务器上 4.1.1 通过Xftp将ace-master到linux服务器…

深入探究HDFS:高可靠、高可扩展、高吞吐量的分布式文件系统【上进小菜猪大数据系列】

上进小菜猪&#xff0c;沈工大软件工程专业&#xff0c;爱好敲代码&#xff0c;持续输出干货。 引言 在当今数据时代&#xff0c;数据的存储和处理已经成为了各行各业的一个关键问题。尤其是在大数据领域&#xff0c;海量数据的存储和处理已经成为了一个不可避免的问题。为了应…

Sharding-JDBC之广播表(公共表)

目录 一、简介二、maven依赖三、数据库3.1、创建数据库3.2、创建表 四、配置&#xff08;二选一&#xff09;4.1、properties配置4.2、yml配置 五、实现5.1、持久层5.2、持久层5.3、服务层5.4、测试类5.4.1、保存数据5.4.2、查询广播表5.4.3、查询订单数据&#xff08;关联广播…

selenium——unittest框架

目录 一、unittest框架基本介绍二、unittest框架解析三、unittest框架使用方法1.测试固件2.测试套件3.用例的执行顺序4.忽略测试用例中的方法5.unittest断言6.HTML报告生成 一、unittest框架基本介绍 在进行selenium IDE脚本录制导出的脚本中&#xff0c;我们发现其中多了很多…

第十三章_Redis中的BigKey

MoreKey案例 大批量往redis里面插入2000W测试数据key Linux Bash下面执行&#xff0c;插入100W # 生成100W条redis批量设置kv的语句(keykn,valuevn)写入到/tmp目录下的redisTest.txt文件中 for((i1;i<100*10000;i)); do echo "set k$i v$i" >> /tmp/redi…

使用Eclipse +SpotBugs 检测代码弱点

文章目录 SpotBugs 插件的安装SpotBugs 的使用弱点扫描弱点查看的视图SpotBugs 是分析Java代码弱点的静态分析工具,SpotBugs提供了Eclipse的插件使用方式,在Eclipse 中安装插件之后就可以坚持Java代码的弱点了。 SpotBugs 插件的安装 SpotBugs 的插件安装主要有两种方式 在插…

8款 Vue 富文本编辑器

文章目录 TinyMCE - 富文本编辑器里的 Word &#xff0c;功能想不到的丰富tiptap - 多人在线实时协同编辑CKEditor 5 - 开源免费可商用&#xff0c;行内编辑Quill - 易扩展、轻量级二开、代码高亮好用Froala - 插件丰富&#xff0c;UI友好&#xff0c;编辑器里的苹果summernote…

Android系统原理性问题分析 - 消息传递机制的分析(Looper 和 Handler)

声明 在Android系统中经常会遇到一些系统原理性的问题&#xff0c;在此专栏中集中来讨论下。比如&#xff1a;Android为了线程安全&#xff0c;不允许在UI线程外操作UI&#xff0c;很多时候做界面刷新都需要通过Handler来通知UI组件更新。此篇参考一些博客和书籍&#xff0c;不…

数据库sql语句练习(三)

例题&#xff1a; ●哪些项目消费了不止一次 select distinct name消费了不止一次的项目 from shopping group by name having count(*)>1 注&#xff1a;加disdinct去除重复的返回值&#xff0c;不加默认为all ●按照不同消费项目的总金额从高到低的顺序&#xff0c;列出不…

PMP证书“扫盲”时间2023年考证人快看过来

二&#xff0c;PMP报考指南 学历与工作经验要求&#xff1a; 本科及以上学历&#xff0c;三年或以上的项目管理工作经验&#xff1b; 专科及以上学历&#xff0c;五年或以上的项目管理工作经验。 项目管理培训&#xff1a;35小时以上的项目管理教育/培训。 备注&#xff1…