使用 pdfminer 讀取 pdf 檔案

2021-10-05 10:43:30 字數 2469 閱讀 2856

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檔案加入外部庫,我使用的是...