python 提取pdf文字


安裝pdfminer 庫

windows 下安裝pdfminer3k

pip install pdfminer3k

Liunx 下安裝pdfminer

pip install pdfminer

代碼

from pdfminer.pdfparser import PDFParser, PDFDocument

from pdfminer.converter import PDFPageAggregator

from pdfminer.layout import LAParams, LTTextBoxHorizontal

from pdfminer.pdfinterp import PDFTextExtractionNotAllowed, PDFResourceManager, PDFPageInterpreter

def pdfParse(path):
"""
pdf文字提取
:param path:文件路徑
:return: 每頁結果列表
"""
fp = open(path, 'rb') # 以二進制讀模式打開
# 用文件對象來創建一個pdf文檔分析器
praser = PDFParser(fp)
# 創建一個PDF文檔
doc = PDFDocument()
# 連接分析器 與文檔對象
praser.set_document(doc)
doc.set_parser(praser)

# 提供初始化密碼
# 如果沒有密碼 就創建一個空的字符串
doc.initialize()

# 檢測文檔是否提供txt轉換,不提供就忽略
if not doc.is_extractable:
    raise PDFTextExtractionNotAllowed
else:
    # 創建PDf 資源管理器 來管理共享資源
    rsrcmgr = PDFResourceManager()
    # 創建一個PDF設備對象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 創建一個PDF解釋器對象
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    #每頁文字內容
    results = []
    # 循環遍歷列表,每次處理一個page的內容
    for page in doc.get_pages():  # doc.get_pages() 獲取page列表
        interpreter.process_page(page)
        # 接受該頁面的LTPage對象
        layout = device.get_result()
        # 這里layout是一個LTPage對象 里面存放着 這個page解析出的各種對象 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等 想要獲取文本就獲得對象的text屬性,
        for x in layout:
            if isinstance(x, LTTextBoxHorizontal):
                results.append(x.get_text())
    return results

該庫是根據 迭代pdf每一頁 進行文字提取, 也可以識別判斷頁碼的功能

另外還有一個pypdf2 庫也可以識別但是感覺不如這個准確


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM