日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

用Python把PDF转为Word方法总结

發布時間:2024/3/24 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Python把PDF转为Word方法总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先講一下為啥要寫這個文章,網上其實很多這種PDF轉化的代碼和軟件。我一直想用Python做,但是網上搜到的代碼很多都不能用,很多是2.7版本的代碼,再就是PDF需要用到的庫在導入的時候,很多的報錯,解決起來特別費勁,而且自從2021年初以來,似乎網上很少有關PDF轉化的代碼出現了。我在研究了很多代碼和pdfminer的用法后,總結了幾個方法,目前這幾種方法可以解決大多數格式的轉化,后面我也專門放了提取PDF表格的代碼,文末有高效的免費在線工具推薦。

--------------------------------------------------------------------------------------------------------------

下面這個是我最最推薦的方法 ,簡單高效 ,只要是標準PDF文檔,里面的圖片和表格都可以保留格式

# pip install pdf2docx #安裝依賴庫 from pdf2docx import Converterpdf_file = r'C:\Users\Administrator\Desktop\新建文件夾\mednine.pdf' docx_file = r'C:\Users\Administrator\Desktop\Python教程\02.docx'# convert pdf to docx cv = Converter(pdf_file) cv.convert(docx_file, start=0, end=None) cv.close()

--------------------------------------------------------------------------------------------------------------

------------------------------------下面是另外三種常用方法---------------------------------------

1 把標準格式的PDF轉為Word,測試環境Python3.6.5和3.6.6(注意PDF內容僅僅是文字為主的里面沒有圖片圖表的適用,不適合掃描版PDF,因為那只能用圖片識別的方式進行)

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import TextConverter from pdfminer.layout import LAParams from pdfminer.pdfpage import PDFPage from io import StringIO import sys import string from docx import Documentdef convert_pdf_2_text(path):rsrcmgr = PDFResourceManager()retstr = StringIO()device = TextConverter(rsrcmgr, retstr, codec='utf-8', laparams=LAParams())interpreter = PDFPageInterpreter(rsrcmgr, device)with open(path, 'rb') as fp:for page in PDFPage.get_pages(fp, set()):interpreter.process_page(page)#print(retstr.getvalue()) text = retstr.getvalue()device.close()retstr.close()return textdef pdf2txt():text=convert_pdf_2_text(path)with open('real.txt','a',encoding='utf-8') as f:for line in text.split('\n'):f.write(line+'\n')def remove_control_characters(content):mpa = dict.fromkeys(range(32))return content.translate(mpa)def save_text_to_word(content, file_path): doc = Document()for line in content.split(''):print(line)paragraph = doc.add_paragraph()paragraph.add_run(remove_control_characters(line))doc.save(file_path)if __name__ == '__main__':path = r'C:\Users\mayn\Desktop\程序臨時\培訓教材.pdf' # 你自己的pdf文件路徑及文件名 不適合掃描版 只適合標準PDF文件text = convert_pdf_2_text(path)save_text_to_word(text, 'output.doc') #PDF轉為word方法#pdf2txt() #PDF轉為txt方法

2專門提取PDF里面的表格,使用pdfplumber適合標準格式的PDF

import pdfplumber import pandas as pd import time from time import ctime import psutil as ps #import threading import gc pdf = pdfplumber.open(r"C:\Users\Administrator\Desktop\新建文件夾\mednine.pdf") N=len(pdf.pages) print('總共有',N,'頁')def pdf2exl(i): # 讀取了第i頁,第i頁是有表格的,print('********************************************************************************************************************************************************')print('正在輸出第',str(i+1),'頁表格')print('********************************************************************************************************************************************************') p0 = pdf.pages[i]try:table = p0.extract_table()print(table)df = pd.DataFrame(table[1:], columns=table[0])#print(df)df.to_excel(r"C:\Users\Administrator\Desktop\新建文件夾\Model"+str(i+1)+".xlsx")#df.info(memory_usage='deep')except Exception as e:print('第'+str(i+1)+'頁無表格,或者檢查是否存在表格') pass#print('目前內存占用率是百分之',str(ps.virtual_memory().percent),' 第',str(i+1),'頁輸出完畢')print('**********************************************************************************************************************************************************')print('\n\n\n') time.sleep(5)def dojob1(): #此函數 直接循環提取PDF里面各個頁面的表格 print('*********************')for i in range(0,N):pdf2exl(i)

3也可以提取PDF里面的表格,使用camelot(camelot的安裝可能需要點耐心,反正用的人不多)

import camelot import wand# 從PDF文件中提取表格def output(i): #print(tables)#for i in range(5):tables = camelot.read_pdf(r'C:\Users\Administrator\Desktop\新建文件夾\mednine.pdf', pages=str(i), flavor='stream')print(tables[i])# 表格數據print(tables[i].data)tables[i].to_csv(r'C:\Users\Administrator\Desktop\新建文件夾\002'+str(i)+r'.csv')def plotpdf():# 這個是畫pdf 結構的函數 現在不能用 不要打開#print(tables[0])tables = camelot.read_pdf(r'C:\Users\mayn\Desktop\vcode工作區\11\路基.pdf', pages='200', flavor='stream')camelot.plot(tables[0], kind='text')print(tables[0])plt.show()# 繪制PDF文檔的坐標,定位表格所在的位置 #plt = camelot.plot(tables[0],kind='text')#plt.show()#table_df = tables[0].df#plotpdf() #i=3 #output(i) for i in range(0,2):try: output(i)except Exception as e:print('第'+str(i)+'頁沒找到表格啊啊啊')pass continue

以下是pdfplumber測試效果

源文件如下

提取結果

最后補充2個免費轉換的網站感覺還比較好用,關鍵是免費
http://pdfdo.com/pdf-to-word.aspx
傳送門點這里

http://app.xunjiepdf.com/pdf2word/
傳送門點這里

總結

以上是生活随笔為你收集整理的用Python把PDF转为Word方法总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。