Python读取pdf文件的简单代码示例
更新时间:2024年02月18日 10:28:22 作者:JSON_L
PDF文件的数据主要是文本、图片、表格,这三部分组成,但是也会穿插流程图、各种柱状图等,这篇文章主要给大家介绍了关于Python读取pdf文件的简单代码示例,需要的朋友可以参考下
安装命令
需要安装操作pdf的三方类库,命令如下:
pip install pdfminer3K
安装过程如下:
引入类库
需要引入很多的类库。
示例如下:
import sys import importlib importlib.reload(sys) from pdfminer.pdfparser import PDFParser, PDFDocument from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import PDFPageAggregator from pdfminer.layout import LTTextBoxHorizontal, LAParams from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
读取pdf实现
实现步骤为:先通过二进制方式打开测试pdf文档,创建pdf文档解析测试文档内容,
最后读取文件内容,保存到另一个文件中。
示例如下:
import sys import importlib importlib.reload(sys) from pdfminer.pdfparser import PDFParser, PDFDocument from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import PDFPageAggregator from pdfminer.layout import LTTextBoxHorizontal, LAParams from pdfminer.pdfinterp import PDFTextExtractionNotAllowed import os def read_pdf(path, toPath): # 以二进制方式打开pdf文件 f = open(path, 'rb') # 创建一个pdf文档分析器 parser = PDFParser(f) # 创建pdf文档 pdfFile = PDFDocument() # 链接分析器与文档对象 parser.set_document(pdfFile) pdfFile.set_parser(parser) # 提供初始化密码 pdfFile.initialize() # 检测文档是否提供txt转换 if not pdfFile.is_extractable: raise PDFTextExtractionNotAllowed else: # 解析数据 # 数据管理器 manager = PDFResourceManager() # 创建一个PDF设备对象 laparams = LAParams() device = PDFPageAggregator(manager, laparams=laparams) # 解释器对象 interpreter = PDFPageInterpreter(manager, device) for page in pdfFile.get_pages(): interpreter.process_page(page) layout = device.get_result() for x in layout: if isinstance(x, LTTextBoxHorizontal): with open(toPath, 'a', encoding='utf-8') as f: print(x.get_text()) f.write(x.get_text() + "\n") path = os.path.join(os.getcwd(), 'test_1.pdf') toPath = os.path.join(os.getcwd(), 'test_2.txt') read_pdf(path, toPath)
注意:无法读取中文,貌似需要加载中文字体。还有就是在写入pdf文件,格式不对无法打开暂时没找到原因。
附:python读取PDF文件并做词云可视化
import pdfplumber # 导入库 import jieba from wordcloud import WordCloud import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False # 用pdf文件解析器读取文件 with pdfplumber.open('中华文化.pdf') as f: # 用for循环读取文件中的每一页 for page in f.pages: text = page.extract_text() txt_f = open(r'中华文化.txt', mode='a', encoding='utf-8') # 创建txt文件 txt_f.write(text) # 写入txt文件 file = open('中华文化.txt',encoding='utf-8') file = file.read() #读取txt文件 txtlist = jieba.lcut(file) string = " ".join(txtlist) stop_words = {} counts = {} for txt in txtlist: if len(txt) == 1: stop_words[txt] = stop_words.get(txt, 0) + 1 else: counts[txt] = counts.get(txt, 0) + 1 items = list(counts.items()) items.sort(key=lambda x: x[1], reverse=True) y1 = [] labels = [] for i in range(1,10): y1.append(items[i][1]) labels.append(items[i][0]) # plt.figure(figsize=(8,4)) width = 0.3 x = np.arange(len(y1)) a = [i for i in range(0,9)] plt.xticks(a,labels,rotation = 30) plt.bar(x=x,height=y1,width=width) plt.title('PDF文件中热词统计分析') plt.savefig("热词统计分析.png") plt.show() print("-------热词统计分析完成!-------") stoplist=[] item = list(stop_words.items()) for i in range(len(item)): txt,count = item[i] stoplist.append(txt) #print(stoplist) setlist = set(stoplist) wcd = WordCloud(width=1000, height=700, background_color='white', font_path='msyh.ttc', scale=15, stopwords=setlist) wcd.generate(string) wcd.to_image() print("-------热词词云生成完成!-------") wcd.to_file('词云.png') # 导出图片
总结
本篇只是使用Python 实现读取pdf文件简单示例,因为时间关系没有做深入的扩展,等之后有时间再做补充。
到此这篇关于Python读取pdf文件的文章就介绍到这了,更多相关Python读取pdf文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
python中字符串String及其常见操作指南(方法、函数)
String方法是用来处理代码中的字符串的,它几乎能搞定你所遇到的所有字符串格式,下面这篇文章主要给大家介绍了关于python中字符串String及其常见操作(方法、函数)的相关资料,需要的朋友可以参考下2022-04-04
最新评论