欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

兩行Python代碼實(shí)現(xiàn)pdf轉(zhuǎn)word功能

 更新時(shí)間:2023年03月30日 15:38:56   作者:Dr.sky_  
這篇文章主要為大家詳細(xì)介紹了如何利用兩行Python代碼就能實(shí)現(xiàn)pdf轉(zhuǎn)word功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

一、安裝依賴(lài)包

pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ python-office

二、pdf轉(zhuǎn)word

2.1 代碼實(shí)現(xiàn)

import office
office.pdf.pdf2docx(file_path = 'test.pdf')

運(yùn)行過(guò)程如下:

[1/4] Opening document...
[INFO] [2/4] Analyzing document...
[WARNING] 'created' timestamp seems very low; regarding as unix timestamp
[WARNING] 'modified' timestamp seems very low; regarding as unix timestamp
[WARNING] 'created' timestamp seems very low; regarding as unix timestamp
[WARNING] 'modified' timestamp seems very low; regarding as unix timestamp
[INFO] [3/4] Parsing pages...
[INFO] (1/9) Page 1
[INFO] (2/9) Page 2
[INFO] (3/9) Page 3
[INFO] (4/9) Page 4
[INFO] (5/9) Page 5
[INFO] (6/9) Page 6
[INFO] (7/9) Page 7
[INFO] (8/9) Page 8
[INFO] (9/9) Page 9
[INFO] [4/4] Creating pages...
[INFO] (1/9) Page 1
[INFO] (2/9) Page 2
[INFO] (3/9) Page 3
[INFO] (4/9) Page 4
[INFO] (5/9) Page 5
[INFO] (6/9) Page 6
[INFO] (7/9) Page 7
[INFO] (8/9) Page 8
[INFO] (9/9) Page 9
[INFO] Terminated in 1.30s.
 
Process finished with exit code 0

2.2 pdf內(nèi)容

2.3 轉(zhuǎn)換后的word

由上可見(jiàn),效果還不錯(cuò)。

補(bǔ)充

除了上文的辦法,小編還為大家整理了更多Python實(shí)現(xiàn)的PDF轉(zhuǎn)Word方法,需要的可以參考一下

方法一:

import os
from configparser import ConfigParser
from io import StringIO
from io import open
from concurrent.futures import ProcessPoolExecutor

from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from docx import Document


def read_from_pdf(file_path):
    with open(file_path, 'rb') as file:
        resource_manager = PDFResourceManager()
        return_str = StringIO()
        lap_params = LAParams()

        device = TextConverter(
            resource_manager, return_str, laparams=lap_params)
        process_pdf(resource_manager, device, file)
        device.close()

        content = return_str.getvalue()
        return_str.close()
        return content


def save_text_to_word(content, file_path):
    doc = Document()
    for line in content.split('\n'):
        paragraph = doc.add_paragraph()
        paragraph.add_run(remove_control_characters(line))
    doc.save(file_path)


def remove_control_characters(content):
    mpa = dict.fromkeys(range(32))
    return content.translate(mpa)


def pdf_to_word(pdf_file_path, word_file_path):
    content = read_from_pdf(pdf_file_path)
    save_text_to_word(content, word_file_path)


def main():
    config_parser = ConfigParser()
    config_parser.read('config.cfg')
    config = config_parser['default']

    tasks = []
    with ProcessPoolExecutor(max_workers=int(config['max_worker'])) as executor:
        for file in os.listdir(config['pdf_folder']):
            extension_name = os.path.splitext(file)[1]
            if extension_name != '.pdf':
                continue
            file_name = os.path.splitext(file)[0]
            pdf_file = config['pdf_folder'] + '/' + file
            word_file = config['word_folder'] + '/' + file_name + '.docx'
            print('正在處理: ', file)
            result = executor.submit(pdf_to_word, pdf_file, word_file)
            tasks.append(result)
    while True:
        exit_flag = True
        for task in tasks:
            if not task.done():
                exit_flag = False
        if exit_flag:
            print('完成')
            exit(0)


if __name__ == '__main__':
    main()

方法二:

加密過(guò)的PDF轉(zhuǎn)word

#-*- coding: UTF-8 -*- 
#!/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
import os
#設(shè)置工作目錄文件夾
os.chdir(r'c:/users/dicey/desktop/codes/pdf-docx')
#解析pdf文件函數(shù)
def parse(pdf_path):
 fp = open('diya.pdf', '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è)面,圖片,曲線,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): # 曲線對(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'test2.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,'曲線數(shù):%s\n'%num_curve,'水平文本框:%s\n'
    %num_TextBoxHorizontal)

if __name__ == '__main__':
 pdf_path = r'diya.pdf' #pdf文件路徑及文件名
 parse(pdf_path)

到此這篇關(guān)于兩行Python代碼實(shí)現(xiàn)pdf轉(zhuǎn)word功能的文章就介紹到這了,更多相關(guān)Python實(shí)現(xiàn)pdf轉(zhuǎn)word內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python UDP(udp)協(xié)議發(fā)送和接收的實(shí)例

    python UDP(udp)協(xié)議發(fā)送和接收的實(shí)例

    今天小編就為大家分享一篇python UDP(udp)協(xié)議發(fā)送和接收的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • python3代碼輸出嵌套式對(duì)象實(shí)例詳解

    python3代碼輸出嵌套式對(duì)象實(shí)例詳解

    在本篇文章里小編給大家整理了關(guān)于python3代碼輸出嵌套式對(duì)象實(shí)例詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • Python?multiprocessing?共享對(duì)象的示例代碼

    Python?multiprocessing?共享對(duì)象的示例代碼

    在 Python 中使用 multiprocessing,一個(gè)新的進(jìn)程可以獨(dú)立運(yùn)行并擁有自己的內(nèi)存空間,下面通過(guò)示例代碼講解Python multiprocessing共享對(duì)象的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2023-07-07
  • Opencv實(shí)現(xiàn)計(jì)算兩條直線或線段角度方法詳解

    Opencv實(shí)現(xiàn)計(jì)算兩條直線或線段角度方法詳解

    這篇文章主要介紹了Opencv實(shí)現(xiàn)計(jì)算兩條直線或線段角度方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-12-12
  • 如何生成對(duì)角矩陣 numpy.diag

    如何生成對(duì)角矩陣 numpy.diag

    這篇文章主要介紹了如何生成對(duì)角矩陣 numpy.diag,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python3+selenium4實(shí)現(xiàn)切換窗口與iframe的方法

    python3+selenium4實(shí)現(xiàn)切換窗口與iframe的方法

    在自動(dòng)化測(cè)試過(guò)程中,有時(shí)后會(huì)遇到元素定位方式?jīng)]有問(wèn)題,但是依舊拋出無(wú)法找到元素的異常的問(wèn)題,有可能是由于當(dāng)前焦點(diǎn)不在指定頁(yè)面或iframe導(dǎo)致的,本文就來(lái)說(shuō)明 一下
    2021-05-05
  • python交換兩個(gè)變量的值方法

    python交換兩個(gè)變量的值方法

    今天小編就為大家分享一篇python交換兩個(gè)變量的值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 基于python實(shí)現(xiàn)操作git過(guò)程代碼解析

    基于python實(shí)現(xiàn)操作git過(guò)程代碼解析

    這篇文章主要介紹了基于python實(shí)現(xiàn)操作git過(guò)程代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Python不使用int()函數(shù)把字符串轉(zhuǎn)換為數(shù)字的方法

    Python不使用int()函數(shù)把字符串轉(zhuǎn)換為數(shù)字的方法

    今天小編就為大家分享一篇Python不使用int()函數(shù)把字符串轉(zhuǎn)換為數(shù)字的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python連接mysql數(shù)據(jù)庫(kù)的正確姿勢(shì)

    Python連接mysql數(shù)據(jù)庫(kù)的正確姿勢(shì)

    這篇文章主要為大家詳細(xì)介紹了Python連接mysql數(shù)據(jù)庫(kù)的正確姿勢(shì),如何使用Python連接mysql數(shù)據(jù)庫(kù),本文為大家揭曉,感興趣的小伙伴們可以參考一下
    2016-02-02

最新評(píng)論