python 語言讀取 pdf 檔案是乙個令人頭疼的事情,本文將使用的**包 pdfminer 的文件中就曾評價 "pdf is evil"。
本文提供使用該**包讀取 pdf 檔案的具體**,實現提取英文 pdf 文字中的單詞的功能。
具體**如下:
import re
import pandas as pd
from pdfminer.pdfparser import pdfparser, pdfdocument
from pdfminer.pdfinterp import pdfresourcemanager, pdfpageinterpreter, pdftextextractionnotallowed
from pdfminer.converter import pdfpageaggregator
from pdfminer.layout import *
def text_to_words(text):
word_list_text =
text = text.replace('-\n', '') # to one line
text = text.replace('\n', '')
words = text.split(' ') # to words
punctuations =
pattern_hyphen = re.compile('[a-z]+-[a-z]+') # pattern of words contain hyphens
for word in words:
if len(word) >= 2 or word in :
if word[0] in punctuations:
word = word[1:]
if word[-1] in punctuations:
word = word[:-1]
word = word.lower() # to lower case
if word.isalpha():
elif pattern_hyphen.match(word):
return word_list_text
def pdf_to_words(path):
pdf_file = open(path, mode='rb') # 以二進位制讀模式開啟
print('current pdf path: ', path, '\n')
parser = pdfparser(pdf_file) # 用檔案物件來建立乙個pdf文件分析器
doc = pdfdocument() # 建立乙個pdf文件
parser.set_document(doc)
doc.set_parser(parser)
doc.initialize() # 提供初始化密碼,如果沒有密碼,就建立乙個空的字串
word_list =
text_list =
if not doc.is_extractable:
return word_list
# raise pdftextextractionnotallowed
else:
rsrcmgr = pdfresourcemanager() # 建立pdf資源管理器,來管理共享資源
laparams = laparams() # 建立乙個pdf裝置物件
device = pdfpageaggregator(rsrcmgr, laparams=laparams)
interpreter = pdfpageinterpreter(rsrcmgr, device) # 建立乙個pdf直譯器物件
# in each page
for page in doc.get_pages():
interpreter.process_page(page)
layout = device.get_result() # 接受該頁面的ltpage物件
# in each layout
for content in layout:
if isinstance(content, lttextbox):
text = content.get_text()
# texts to words
for text in text_list:
word_list_text = text_to_words(text)
word_list += word_list_text
ser_words = pd.series(word_list)
df_words = ser_words.reset_index()
df_words.columns = ['index', 'word']
return df_words
此外,需要注意的是,安裝 pdfminer 時,如為 python3,請安裝 pdfminer3k,否則安裝失敗。 使用iTextSharp讀取PDF文件
網上有很多獲取pdf頁數方法有讀流判斷type page的但是經過實際測試檔案太大的時候往往不是很準確,既然這樣我們就不用費心去自己寫了可以用itextsharp。1 建立乙個windows控制台應用程式,命名為readpdfdemo。2 新增對itextsharp的引用。3 在 program.c...
讀取PDF文件
coding utf 8 匯入開發包 frompdfminer.pdfparserimportpdfparser,pdfdocument frompdfminer.pdfinterpimportpdfresourcemanager,pdfpageinterpreter frompdfminer.pd...
Qt讀取pdf檔案使用MuPdf庫
qt開啟 pdf檔案,效果如下 開啟pdf檔案 載入程序式 執行時,別忘了把dll檔案放入 release 目錄下,不然會 crash 的,執行不了。qt讀取 pdf檔案採用的是 mupdf 庫。將編譯好的庫檔案放入工程目錄下 include 和lib 在該工程中的.pro檔案加入外部庫,我使用的是...