python實(shí)現(xiàn)pdf轉(zhuǎn)換成word/txt純文本文件
本文實(shí)例為大家分享了python實(shí)現(xiàn)pdf轉(zhuǎn)word/txt,供大家參考,具體內(nèi)容如下
依賴(lài)包:pdfminer3k
可以通過(guò)pip安裝;也可以到官網(wǎng)下載,解壓,進(jìn)入文件夾,輸入命令setup.py install安裝軟件。
源代碼:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import importlib
importlib.reload(sys)
from pdfminer.pdfparser import PDFParser,PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import *
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
'''''
解析pdf文件,獲取文件中包含的各種對(duì)象
'''
# 解析pdf文件函數(shù)
def parse(pdf_path):
fp = open(pdf_path, 'rb') # 以二進(jìn)制讀模式打開(kāi)
# 用文件對(duì)象來(lái)創(chuàng)建一個(gè)pdf文檔分析器
parser = PDFParser(fp)
# 創(chuàng)建一個(gè)PDF文檔
doc = PDFDocument()
# 連接分析器 與文檔對(duì)象
parser.set_document(doc)
doc.set_parser(parser)
# 提供初始化密碼
# 如果沒(méi)有密碼 就創(chuàng)建一個(gè)空的字符串
doc.initialize()
# 檢測(cè)文檔是否提供txt轉(zhuǎn)換,不提供就忽略
if not doc.is_extractable:
raise PDFTextExtractionNotAllowed
else:
# 創(chuàng)建PDf 資源管理器 來(lái)管理共享資源
rsrcmgr = PDFResourceManager()
# 創(chuàng)建一個(gè)PDF設(shè)備對(duì)象
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
# 創(chuàng)建一個(gè)PDF解釋器對(duì)象
interpreter = PDFPageInterpreter(rsrcmgr, device)
# 用來(lái)計(jì)數(shù)頁(yè)面,圖片,曲線(xiàn),figure,水平文本框等對(duì)象的數(shù)量
num_page, num_image, num_curve, num_figure, num_TextBoxHorizontal = 0, 0, 0, 0, 0
# 循環(huán)遍歷列表,每次處理一個(gè)page的內(nèi)容
for page in doc.get_pages(): # doc.get_pages() 獲取page列表
num_page += 1 # 頁(yè)面增一
interpreter.process_page(page)
# 接受該頁(yè)面的LTPage對(duì)象
layout = device.get_result()
for x in layout:
if isinstance(x,LTImage): # 圖片對(duì)象
num_image += 1
if isinstance(x,LTCurve): # 曲線(xiàn)對(duì)象
num_curve += 1
if isinstance(x,LTFigure): # figure對(duì)象
num_figure += 1
if isinstance(x, LTTextBoxHorizontal): # 獲取文本內(nèi)容
num_TextBoxHorizontal += 1 # 水平文本框?qū)ο笤鲆?
# 保存文本內(nèi)容
with open(r'test.doc', 'a',encoding='utf-8') as f: #生成doc文件的文件名及路徑
results = x.get_text()
f.write(results)
f.write('\n')
print('對(duì)象數(shù)量:\n','頁(yè)面數(shù):%s\n'%num_page,'圖片數(shù):%s\n'%num_image,'曲線(xiàn)數(shù):%s\n'%num_curve,'水平文本框:%s\n'
%num_TextBoxHorizontal)
if __name__ == '__main__':
pdf_path = r'test.pdf' #pdf文件路徑及文件名
parse(pdf_path)
此腳本只能將pdf文件轉(zhuǎn)換成純文本文件,沒(méi)有任何格式。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python dict 字典 以及 賦值 引用的一些實(shí)例(詳解)
下面小編就為大家?guī)?lái)一篇python dict 字典 以及 賦值 引用的一些實(shí)例(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
django框架模板中定義變量(set variable in django template)的方法分析
這篇文章主要介紹了django框架模板中定義變量(set variable in django template)的方法,結(jié)合實(shí)例形式分析了Django框架實(shí)現(xiàn)模板中定義變量與變量賦值相關(guān)操作技巧,需要的朋友可以參考下2019-06-06
Python機(jī)器學(xué)習(xí)iris數(shù)據(jù)集預(yù)處理和模型訓(xùn)練方式
iris數(shù)據(jù)集包含150個(gè)樣本,每個(gè)樣本有4個(gè)特征及其類(lèi)別信息,本文介紹了iris數(shù)據(jù)集的基本操作和如何使用knn模型進(jìn)行花卉種類(lèi)預(yù)測(cè),是機(jī)器學(xué)習(xí)中的經(jīng)典案例,適用于監(jiān)督式學(xué)習(xí)2024-10-10
Python實(shí)現(xiàn)批量提取PPT中的文字
這篇文章主要為大家詳細(xì)介紹了如何使用Python中的pptx和docx庫(kù)來(lái)將PPT中的文字提取到Word中,文中的示例代碼講解詳細(xì),有需要的可以參考下2024-03-03
Python爬蟲(chóng)爬取一個(gè)網(wǎng)頁(yè)上的圖片地址實(shí)例代碼
這篇文章主要介紹了Python爬蟲(chóng)爬取一個(gè)網(wǎng)頁(yè)上的圖片地址實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Python中的HTTP請(qǐng)求超時(shí)處理方式
HTTP請(qǐng)求超時(shí)是指客戶(hù)端在設(shè)定的時(shí)間內(nèi)未收到服務(wù)器完整響應(yīng),合理設(shè)置超時(shí)時(shí)間可提高系統(tǒng)性能和用戶(hù)體驗(yàn),Python中,requests庫(kù)和aiohttp庫(kù)提供超時(shí)控制功能,通過(guò)timeout參數(shù)設(shè)置請(qǐng)求超時(shí),并利用try-except捕獲異常,合理超時(shí)設(shè)置和處理是開(kāi)發(fā)HTTP客戶(hù)端的重要技巧2024-11-11

