一、各庫功能說明
pdfminer----用於讀取pdf文件的內容,python3安裝pdfminer3k
jieba----用於中文分詞
wordcloud----用於生成詞雲
matplotlib----用於將詞雲可視化
這幾個庫的順序也對應程序的順序:
生使用pdfminer讀取pdf文件的內容,然后使用jieba對內容進行中文分詞,再然后使用wordcloud基於分詞生成詞雲,最后使用matplotlib將詞雲可視化
二、程序源碼
from urllib.request import urlopen from pdfminer.converter import TextConverter from pdfminer.layout import LAParams from pdfminer.pdfinterp import process_pdf, PDFResourceManager from wordcloud import WordCloud import matplotlib.pyplot as plt import jieba from io import StringIO class MyWordCloud(): def __init__(self): pass #此函數用於讀取和返回pdf文件的內容 def getPdfText(self,pdf_url): pdf_file_obj = urlopen(pdf_url) pdf_rm = PDFResourceManager() ret_str = StringIO() lap = LAParams() tc = TextConverter(pdf_rm, ret_str, laparams=lap) process_pdf(pdf_rm, tc, pdf_file_obj) tc.close() pdf_text = ret_str.getvalue() ret_str.close() return pdf_text def genWordCloud(self,pdf_url): pdf_text = self.getPdfText(pdf_url) # WordCloud(按英文習慣)以空格分詞,中文不用空格所以WordCloud不能正確對中文進行分詞 # 為了使用WordCloud我們就需要先自己自己想辦法完成分詞,並將所有分詞以空格隔開 # 我們的方法是先用結巴生成中文序列,然后使用join方法使用空格拼接所有序列 jieba_cut_seq = jieba.cut(pdf_text) pdf_cut_text = " ".join(jieba_cut_seq) # 默認字體不支中文,需要指定要使用的中文字體路徑;可從自己電腦已安裝的字體中選,目錄C:\Windows\Fonts font_path = "C:\\Windows\\Fonts\\simfang.ttf" wc = WordCloud(font_path,width=1000, height=880).generate(pdf_cut_text) plt.imshow(wc, interpolation="bilinear") plt.axis("off") plt.show() def __del__(self): pass if __name__ == '__main__': # 深圳十三五規划綱要文件的URL鏈接,要生成其他pdf文件的詞雲修改成該文件的URL即可 pdf_url = 'http://www.sz.gov.cn/fzggj/home/zwgk/ghjh/fzgh/201604/P020160412518770846515.pdf' mwc = MyWordCloud() mwc.genWordCloud(pdf_url)
運行程序,生成詞雲如下:
參考:
https://www.cnblogs.com/gooseeker/p/5527519.html
http://www.unixuser.org/~euske/python/pdfminer/programming.html
https://www.cnblogs.com/delav/p/7845539.html