亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解用Python把PDF轉為Word方法總結

 更新時間:2021年04月26日 14:35:21   作者:琪老師606  
這篇文章主要介紹了詳解用Python把PDF轉為Word方法總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

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

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

在這里插入圖片描述

# pip install pdf2docx #安裝依賴庫
from pdf2docx import Converter

pdf_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,測試環(huán)境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 Document


def 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 text


def 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():  #此函數  直接循環(huán)提取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 結構的函數 現(xiàn)在不能用 不要打開
    
    #print(tables[0])
    tables = camelot.read_pdf(r'C:\Users\mayn\Desktop\vcode工作區(qū)\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方法總結的文章就介紹到這了,更多相關Python把PDF轉為Word內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python全棧之文件操作

    Python全棧之文件操作

    這篇文章主要為大家介紹了Python文件操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>
    2021-11-11
  • python 實現(xiàn)矩陣按對角線打印

    python 實現(xiàn)矩陣按對角線打印

    今天小編就為大家分享一篇python 實現(xiàn)矩陣按對角線打印,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Tornado Web Server框架編寫簡易Python服務器

    Tornado Web Server框架編寫簡易Python服務器

    這篇文章主要為大家詳細介紹了Tornado Web Server框架編寫簡易Python服務器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • PYTHON繪制雷達圖代碼實例

    PYTHON繪制雷達圖代碼實例

    這篇文章主要介紹了PYTHON繪制雷達圖代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • Python利用3D引擎寫一個Pong游戲

    Python利用3D引擎寫一個Pong游戲

    之前,我們嘗試過用pygame做了一個2D的Pong游戲。本文將利用強大的3D引擎Ursina制作一個3D版的Pong游戲。文中的示例代碼講解詳細,感興趣的可以了解一下
    2023-01-01
  • 如何基于OpenCV&Python實現(xiàn)霍夫變換圓形檢測

    如何基于OpenCV&Python實現(xiàn)霍夫變換圓形檢測

    最近開始學習opencv,想檢測圖片上的圓環(huán),發(fā)現(xiàn)霍夫變換可以做這樣的效果出來,于是嘗試用霍夫變換做了下圓環(huán)檢測,這篇文章主要給大家介紹了基于OpenCV&Python實現(xiàn)霍夫變換圓形檢測的相關資料,需要的朋友可以參考下
    2021-08-08
  • Python爬蟲獲取op.gg英雄聯(lián)盟英雄對位勝率的源碼

    Python爬蟲獲取op.gg英雄聯(lián)盟英雄對位勝率的源碼

    這篇文章主要介紹了Python爬蟲獲取op.gg英雄聯(lián)盟英雄對位勝率,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • python socket多線程通訊實例分析(聊天室)

    python socket多線程通訊實例分析(聊天室)

    這篇文章主要介紹了python socket多線程通訊方法,以聊天室程序實例分析了Python基于Socket實現(xiàn)多線程通信的相關技巧,需要的朋友可以參考下
    2016-04-04
  • Python 對Excel求和、合并居中的操作

    Python 對Excel求和、合并居中的操作

    這篇文章主要介紹了Python 對Excel求和、合并居中的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 一文詳解為什么運行Python就是找不到文件路徑

    一文詳解為什么運行Python就是找不到文件路徑

    這篇文章主要介紹了在編程中遇到文件路徑找不到問題的原因和解決方法,包括路徑錯誤、路徑分隔符問題、工作目錄錯誤、權限問題以及虛擬環(huán)境的影響,并提供了一些實用的解決方案,通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-01-01

最新評論