Table of Contents
一、安装依赖包
二、pdf转word
2.1 代码实现
2.2 pdf内容
2.3 转换后的word
补充
Home Backend Development Python Tutorial How to use two lines of Python code to convert pdf to word

How to use two lines of Python code to convert pdf to word

Apr 28, 2023 pm 06:25 PM
word python pdf

    一、安装依赖包

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

    二、pdf转word

    2.1 代码实现

    import office
    office.pdf.pdf2docx(file_path = 'test.pdf')
    Copy after login

    运行过程如下:

    [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内容

    How to use two lines of Python code to convert pdf to word

    2.3 转换后的word

    How to use two lines of Python code to convert pdf to word

    由上可见,效果还不错。

    补充

    除了上文的办法,小编还为大家整理了更多Python实现的PDF转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()
    Copy after login

    方法二:

    加密过的PDF转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
    #设置工作目录文件夹
    os.chdir(r'c:/users/dicey/desktop/codes/pdf-docx')
    #解析pdf文件函数
    def parse(pdf_path):
     fp = open('diya.pdf', 'rb') # 以二进制读模式打开
     # 用文件对象来创建一个pdf文档分析器
     parser = PDFParser(fp)
     # 创建一个PDF文档
     doc = PDFDocument()
     # 连接分析器 与文档对象
     parser.set_document(doc)
     doc.set_parser(parser)
     # 提供初始化密码
     # 如果没有密码 就创建一个空的字符串
     doc.initialize()
     # 检测文档是否提供txt转换,不提供就忽略
     if not doc.is_extractable:
      raise PDFTextExtractionNotAllowed
     else:
      # 创建PDf 资源管理器 来管理共享资源
      rsrcmgr = PDFResourceManager()
      # 创建一个PDF设备对象
      laparams = LAParams()
      device = PDFPageAggregator(rsrcmgr, laparams=laparams)
      # 创建一个PDF解释器对象
      interpreter = PDFPageInterpreter(rsrcmgr, device)
      # 用来计数页面,图片,曲线,figure,水平文本框等对象的数量
      num_page, num_image, num_curve, num_figure, num_TextBoxHorizontal = 0, 0, 0, 0, 0
      # 循环遍历列表,每次处理一个page的内容
      for page in doc.get_pages(): # doc.get_pages() 获取page列表
       num_page += 1 # 页面增一
       interpreter.process_page(page)
       # 接受该页面的LTPage对象
       layout = device.get_result()
       for x in layout:
        if isinstance(x,LTImage): # 图片对象
         num_image += 1
        if isinstance(x,LTCurve): # 曲线对象
         num_curve += 1
        if isinstance(x,LTFigure): # figure对象
         num_figure += 1
        if isinstance(x, LTTextBoxHorizontal): # 获取文本内容
         num_TextBoxHorizontal += 1 # 水平文本框对象增一
         # 保存文本内容
         with open(r'test2.doc', 'a',encoding='utf-8') as f: #生成doc文件的文件名及路径
          results = x.get_text()
          f.write(results)
          f.write('\n')
      print('对象数量:\n','页面数:%s\n'%num_page,'图片数:%s\n'%num_image,'曲线数:%s\n'%num_curve,'水平文本框:%s\n'
        %num_TextBoxHorizontal)
    
    if __name__ == '__main__':
     pdf_path = r'diya.pdf' #pdf文件路径及文件名
     parse(pdf_path)
    Copy after login

    The above is the detailed content of How to use two lines of Python code to convert pdf to word. For more information, please follow other related articles on the PHP Chinese website!

    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

    Hot AI Tools

    Undresser.AI Undress

    Undresser.AI Undress

    AI-powered app for creating realistic nude photos

    AI Clothes Remover

    AI Clothes Remover

    Online AI tool for removing clothes from photos.

    Undress AI Tool

    Undress AI Tool

    Undress images for free

    Clothoff.io

    Clothoff.io

    AI clothes remover

    Video Face Swap

    Video Face Swap

    Swap faces in any video effortlessly with our completely free AI face swap tool!

    Hot Tools

    Notepad++7.3.1

    Notepad++7.3.1

    Easy-to-use and free code editor

    SublimeText3 Chinese version

    SublimeText3 Chinese version

    Chinese version, very easy to use

    Zend Studio 13.0.1

    Zend Studio 13.0.1

    Powerful PHP integrated development environment

    Dreamweaver CS6

    Dreamweaver CS6

    Visual web development tools

    SublimeText3 Mac version

    SublimeText3 Mac version

    God-level code editing software (SublimeText3)

    Can vs code run in Windows 8 Can vs code run in Windows 8 Apr 15, 2025 pm 07:24 PM

    VS Code can run on Windows 8, but the experience may not be great. First make sure the system has been updated to the latest patch, then download the VS Code installation package that matches the system architecture and install it as prompted. After installation, be aware that some extensions may be incompatible with Windows 8 and need to look for alternative extensions or use newer Windows systems in a virtual machine. Install the necessary extensions to check whether they work properly. Although VS Code is feasible on Windows 8, it is recommended to upgrade to a newer Windows system for a better development experience and security.

    Is the vscode extension malicious? Is the vscode extension malicious? Apr 15, 2025 pm 07:57 PM

    VS Code extensions pose malicious risks, such as hiding malicious code, exploiting vulnerabilities, and masturbating as legitimate extensions. Methods to identify malicious extensions include: checking publishers, reading comments, checking code, and installing with caution. Security measures also include: security awareness, good habits, regular updates and antivirus software.

    How to run programs in terminal vscode How to run programs in terminal vscode Apr 15, 2025 pm 06:42 PM

    In VS Code, you can run the program in the terminal through the following steps: Prepare the code and open the integrated terminal to ensure that the code directory is consistent with the terminal working directory. Select the run command according to the programming language (such as Python's python your_file_name.py) to check whether it runs successfully and resolve errors. Use the debugger to improve debugging efficiency.

    Can visual studio code be used in python Can visual studio code be used in python Apr 15, 2025 pm 08:18 PM

    VS Code can be used to write Python and provides many features that make it an ideal tool for developing Python applications. It allows users to: install Python extensions to get functions such as code completion, syntax highlighting, and debugging. Use the debugger to track code step by step, find and fix errors. Integrate Git for version control. Use code formatting tools to maintain code consistency. Use the Linting tool to spot potential problems ahead of time.

    Python vs. JavaScript: The Learning Curve and Ease of Use Python vs. JavaScript: The Learning Curve and Ease of Use Apr 16, 2025 am 12:12 AM

    Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

    Golang vs. Python: Concurrency and Multithreading Golang vs. Python: Concurrency and Multithreading Apr 17, 2025 am 12:20 AM

    Golang is more suitable for high concurrency tasks, while Python has more advantages in flexibility. 1.Golang efficiently handles concurrency through goroutine and channel. 2. Python relies on threading and asyncio, which is affected by GIL, but provides multiple concurrency methods. The choice should be based on specific needs.

    What is vscode What is vscode for? What is vscode What is vscode for? Apr 15, 2025 pm 06:45 PM

    VS Code is the full name Visual Studio Code, which is a free and open source cross-platform code editor and development environment developed by Microsoft. It supports a wide range of programming languages ​​and provides syntax highlighting, code automatic completion, code snippets and smart prompts to improve development efficiency. Through a rich extension ecosystem, users can add extensions to specific needs and languages, such as debuggers, code formatting tools, and Git integrations. VS Code also includes an intuitive debugger that helps quickly find and resolve bugs in your code.

    Can vscode run ipynb Can vscode run ipynb Apr 15, 2025 pm 07:30 PM

    The key to running Jupyter Notebook in VS Code is to ensure that the Python environment is properly configured, understand that the code execution order is consistent with the cell order, and be aware of large files or external libraries that may affect performance. The code completion and debugging functions provided by VS Code can greatly improve coding efficiency and reduce errors.

    See all articles