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文档内容的博文。
小鱼:嗯,你的记性还挺好,确实写过,就是下面这篇。
当然,关于对PDF文档的操作,也可以看小鱼的其他博文:
- 《Python3:为了200块钱生活费,我破解了媳妇的加密PDF文件,然而看到内容,我…有点慌了~~》
- 《Python3,2行代码,多种方法,直接把网页内容转换成PDF文档和图片。》
- 《Python3,2段代码,给pdf文件添加水印,原来watermark还可以这么玩。》
3、总结
看到这里, ChatPDF库的介绍就完成了。
其实ChatPDF库的功能,不止我说的这几个功能哦,还有:
- PDF文件加密;
- PDF文件解密;
- …
在当前ChatGPT爆火的当下,作为技术er,我们多多少少都需要了解一些AI的知识。
即使白~ 嫖~ ChatGPT的使用次数, 也是可以的。
当然, 作为小鱼,肯定不会做(bai piao )的事情,但是,学习的脚步,却从未停止。
我是小鱼:
- 家;
- 阿里云 专家博主;
- 51CTO 博客专家;
- 51认证讲师;
- 认证金牌面试官;
- 职场培训规划师;
关注我,带你学习更多更有趣的Python知识。
- CSDN 博客专