涉及到一些PDF文件中的讀取,特地去網上簡單學習一下並記錄下來
大神鏈接: https://www.cnblogs.com/wj-1314/p/9429816.html
自己簡單代碼的分享以邊自己後邊用到
from pdfminer.converter import PDFPageAggregator
from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.layout import LTTextBoxHorizontal, LAParams
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
def parser_pdf_file(pdf_file_path):
read_pdf = open(pdf_file_path, 'rb') # 打開PDF文件。
parser_pdf = PDFParser(read_pdf) # 用文件對象創建一個PDF文檔分析器。
pdf_document = PDFDocument(parser_pdf) # 創建一個PDF文檔。
parser_pdf.set_document(pdf_document)
pdf_document.set_parser(parser_pdf) # 連接分析器 與文檔對象。
pdf_document.initialize() # 如果沒有密碼,就創建一個空的字符串。
if not pdf_document.is_extractable: # 檢測文檔是否提供txt轉換,不提供就忽略。
raise PDFTextExtractionNotAllowed
else:
pdf_manager = PDFResourceManager() # 創建PDF資源管理器 來管理共享資源。
pdf_laparams = LAParams() # 創建一個PDF參數分析器。
pdf_device = PDFPageAggregator(pdf_manager, laparams=pdf_laparams) # 創建一個聚合器
pdf_interpreter = PDFPageInterpreter(pdf_manager, pdf_device) # 創建一個PDF頁面解釋器對象
# 循環遍歷列表,每次處理一頁的內容,pdf_document.get_pages()獲取page列表
for each_page in pdf_document.get_pages():
pdf_interpreter.process_page(each_page) # 使用頁面解釋器來讀取
layout = pdf_device.get_result() # 這裏layout是一個LTPage對象 裏面存放着這個page解析出的各種對象 一般包括LTTexBox,LTFigure,LTImage,
# LTTexBoxHorizontal等等 想要獲取文本就獲得對象的text屬性。
# print(layout)
for each_info in layout:
if isinstance(each_info, LTTextBoxHorizontal):
results = each_info.get_text()
print(results)
if __name__ == '__main__':
# pdf_file_path = get_pdf_file()
parser_pdf_file(r'D:\6.pdf')
具體每個代表什麼意思,去看大神的博客就行了,上邊分享的有鏈接。