赞
踩
- 点赞、关注再看,养成良好习惯
- Life is short, U need Python
最近超星学习通课程需要几个封面图片(模板图片不满意,无法和课程匹配),于是想着自己做几个词云图,然而本人自然语言处理知识接触不多(虽然也很感兴趣),于是静静坐下来花了半天稍微系统地学习了一下如何制作词云图(从读取本地TXT文档到本地读取PDF文档,以及在线读取PDF文档,这里的PDF文档主要是为了想读取某本点子书),结果有点上瘾了:媳妇做好饭喊话半天都没从电脑面前移步餐桌(最后不得不错过热腾腾的大米饭)。好了,下面言归正传开始今天的博文正文!
博文本节主要介绍 Python3.X 版本(2020年开始 Python2.X 版本不再维护,因此建议初学者直接一步到位学习 Python3.X 版本)解析并读取PDF文件内容,这里需要用到第三方库 — pdfminer 库(与Python2版本不同,Python3版本需要安装pdfminer3k 库)。其中代码部分也参考了一些已经发布的博客内容,不过博主还是详细拆解了其他博文的代码,以一种通俗易懂的方式展示给Python初学者,免得初学者直接把别人的代码复制过来(那些代码大多封装起来了,写得过于专业,不太适合初学者)在自己电脑跑了一下,也许发现很多 bug,而不知道如何去 debug,或者不知从那做起。博主希望通过这次所谓详细的讲解能让初学者真正明白(如果还是不清楚请博文留言,博主会第一时间为博友解读)。好了,不啰嗦了,言归正传开始本节正文!
下面以具体案例为主,详细分解如何利用Python语言实现读取PDF文档(博友可以任意选一本电子书):
(1)准备工作
(2)实现源代码(本地PDF)
from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal, LAParams
pdf_file = 'Python.pdf' (默认工作路径)
txt_file = 'Python.txt' (默认工作路径)
#pdf_file = 'C:\Users\Administrator\Desktop\'Python.pdf' (电脑桌面)
#txt_file = 'C:\Users\Administrator\Desktop\Python.txt' (电脑桌面)
device = PDFPageAggregator(PDFResourceManager(), laparams=LAParams())
interpreter = PDFPageInterpreter(PDFResourceManager(), device)
document = PDFDocument()
parser = PDFParser(open(pdf_file, 'rb'))
parser.set_document(document)
document.set_parser(parser)
document.initialize()
with open(txt_file, 'w', encoding='utf-8') as f:
page_list = list(document.get_pages())
page_list_length = len(page_list)
print('The number of PDF is: ', page_list_length)
for page in document.get_pages():
# 接受LTPage对象
interpreter.process_page(page)
# 获取LTPage对象的text文本属性
layout = device.get_result()
for x in layout:
if isinstance(x, LTTextBoxHorizontal):
results = x.get_text()
f.write(results)
with open('Python.txt',encoding='utf-8') as f:
txt_text = f.readlines()
txt_text[:10]
突然觉得肚子有点饿了,本想加一下餐,但是为了尽快完成博文还是坚持一下吧!不再啰嗦了,直接进入正文。
(1)准备工作
(2)实现源代码(制作词云图)
import matplotlib.pyplot as plt
from wordcloud import WordCloud
with open('Python.txt',encoding='utf-8') as f:
mytext = f.readlines()
mycloud = WordCloud().generate(str(mytext))
plt.imshow(mycloud)
plt.axis('off') # 关闭词云图坐标显示
plt.savefig('out.jpg',dpi=1000,edgecolor='blue', bbox_inches='tight', quality=95) # 保存词云图(到工作路径下)
plt.show()
mycloud = WordCloud(font_path = 'simsun.ttc').generate(str(mytext))
from wordcloud import WordCloud import matplotlib.pyplot as plt import imageio filename = "Python.txt" mytext = open(filename).read() picture = imageio.imread('people.jpg') mycloud = WordCloud( background_color = 'white', # 背景颜色 max_words = 20000, # 最大词数 mask = picture, # 以该参数值作图绘制词云,width和height会被忽略 max_font_size = 30, # 显示字体的最大值 font_path = 'simsun.ttc', # 解决显示口字型乱码问题 collocations=False, # 避免词重复 ).generate(mytext) plt.imshow(mycloud) plt.axis('off') plt.savefig('new.jpg',dpi=1000,edgecolor='blue',transparent=True, bbox_inches='tight', quality=95) plt.show()
- 写作不易,切勿白剽
- 博友们的点赞和关注就是对博主坚持写作的最大鼓励
- 持续更新,未完待续…
下一篇:自然语言处理(二)之 pdfminer3k库 教程讲解
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。