#!/usr/bin/env python
# -*- coding:utf-8 -*-
# datetime:2021/3/17 12:12
# software: PyCharm
# version: python 3.9.2
def changePdfToText(filePath):
"""
解析pdf 文本,保存到同名txt文件中
param:
filePath: 需要讀取的pdf文檔的目錄
introduced module:
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams
from pdfminer.pdfdocument import PDFDocument, PDFTextExtractionNotAllowed
import os.path
"""
file = open(filePath, 'rb') # 以二進制讀模式打開
# 用文件對象來創(chuàng)建一個pdf文檔分析器
praser = PDFParser(file)
# 創(chuàng)建一個PDF文檔
doc = PDFDocument(praser, '') # praser :上面創(chuàng)建的pdf文檔分析器 ,第二個參數(shù)是密碼,設置為空就好了
# 連接分析器 與文檔對象
praser.set_document(doc)
# 檢測文檔是否提供txt轉換,不提供就忽略
if not doc.is_extractable:
raise PDFTextExtractionNotAllowed
# 創(chuàng)建PDf 資源管理器 來管理共享資源
rsrcmgr = PDFResourceManager()
# 創(chuàng)建一個PDF設備對象
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
# 創(chuàng)建一個PDF解釋器對象
interpreter = PDFPageInterpreter(rsrcmgr, device)
result = [] # 內容列表
# 循環(huán)遍歷列表,每次處理一個page的內容
for page in PDFPage.create_pages(doc):
interpreter.process_page(page)
# 接受該頁面的LTPage對象
layout = device.get_result()
for x in layout:
if hasattr(x, "get_text"):
result.append(x.get_text())
fileNames = os.path.splitext(filePath) # 分割
# 以追加的方式打開文件
with open(fileNames[0] + '.txt', 'a', encoding="utf-8") as f:
results = x.get_text()
# print(results) 這個句可以取消注釋就可以在控制臺將所有內容輸出了
f.write(results) # 寫入文件
# 調用示例 :
# path = u'E:\\1.pdf'
# changePdfToText(path)
from PyPDF2 import PdfFileReader
# 定義獲取pdf內容的方法
def getPdfContent(filename):
# 獲取PdfFileReader對象
pdf = PdfFileReader(open(filename, "rb"))
content = "" #content是輸出文本
for i in range(0,pdf.getNumPages()): #遍歷每一頁
pageObj = pdf.getPage(i)
try:
extractedText = pageObj.extractText()#導出每一頁的內容,如果當前頁有圖片的話就跳過
content += extractedText + "\n"
except BaseException:
pass
return content.encode("ascii", "ignore")
# 將獲取的內容寫入txt文件
with open("test.txt","w") as f:
count=0 #count的作用是限制每一行的文字個數(shù),本人設置的是十行
#將獲取的文本變成字符串并用空白隔開
for item in str(getPdfContent("test.pdf")).split(" "):
# 如果當前文字以句號結尾就換行
if item[-1]==".":
f.write(item+"\n")
count=0
else:
f.write(item+" ")
count +=1
# 如果寫了十個字就換行
if count==10:
f.write("\n")
# 重置count
count = 0
到此這篇關于python讀取pdf格式文檔的文章就介紹到這了,更多相關python讀取pdf文檔內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!