利用Python实现PDF、Word文档转为TXT文档

        使用Python批量将PDF、Word(.docx)和Word(.doc)文件转换为TXT文件

1、PDF转TXT

        首先需要安装Python当中的PyMuPDF库。

pip install PyMuPDF

        将PDF文件保存在文件夹“C:\Users\merit\Desktop\测试文件”下,输出TXT文件同样保存在“C:\Users\merit\Desktop\测试文件”当中,具体调用代码如下:

import fitz
import os

# 指定PDF文件夹的路径
pdf_folder = r'C:\Users\merit\Desktop\测试文件'

# 确保指定的文件夹存在
if not os.path.exists(pdf_folder):
    print("指定的文件夹不存在。")
else:
    # 遍历PDF文件夹中的所有PDF文件
    for pdf_filename in os.listdir(pdf_folder):
        if pdf_filename.endswith('.pdf'):
            pdf_path = os.path.join(pdf_folder, pdf_filename)

            # 打开PDF文件
            pdf_document = fitz.open(pdf_path)

            # 获取PDF中的所有页面并将它们合并为一个字符串
            pdf_text = ""
            for page_num in range(pdf_document.page_count):
                page = pdf_document.load_page(page_num)
                pdf_text += page.get_text()

            # 创建一个TXT文件并将PDF内容写入其中
            txt_filename = os.path.splitext(pdf_filename)[0] + '.txt'
            txt_path = os.path.join(pdf_folder, txt_filename)
            with open(txt_path, 'w', encoding='utf-8') as txt_file:
                txt_file.write(pdf_text)

            pdf_document.close()

            # 重新打开TXT文件,将编码更改为UTF-8
            with open(txt_path, 'r', encoding='utf-8') as txt_file:
                content = txt_file.read()

            with open(txt_path, 'w', encoding='utf-8') as txt_file:
                txt_file.write(content)

    print("PDF文件已成功转换为UTF-8编码的TXT文件并保留相同的文件名。")

2、Word(.docx)转TXT

        需要使用Python中的python-docx库,首先安装python-docx库。

pip install python-docx

         将Word(.docx)文件保存在文件夹“C:\Users\merit\Desktop\测试文件”下,输出TXT文件同样保存在“C:\Users\merit\Desktop\测试文件”当中,具体调用代码如下:

import os
from docx import Document

# 指定Word文档文件夹的路径
docx_folder = r'C:\Users\merit\Desktop\测试文件'

# 确保指定的文件夹存在
if not os.path.exists(docx_folder):
    print("指定的文件夹不存在。")
else:
    # 遍历Word文档文件夹中的所有Word文档
    for docx_filename in os.listdir(docx_folder):
        if docx_filename.endswith('.docx'):
            docx_path = os.path.join(docx_folder, docx_filename)
            txt_filename = os.path.splitext(docx_filename)[0] + '.txt'
            txt_path = os.path.join(docx_folder, txt_filename)

            # 打开Word文档
            doc = Document(docx_path)

            # 创建一个TXT文件并将Word文档内容写入其中
            with open(txt_path, 'w', encoding='utf-8') as txt_file:
                for paragraph in doc.paragraphs:
                    txt_file.write(paragraph.text + '\n')

    print("Word文档已成功转换为UTF-8编码的TXT文件。")

3、Word(.doc)转TXT

        在Windows系统中使用Python将.doc文件转换为.txt文件,可以使用pywin32库。对于包含非UTF-8字符的文本文件,尝试将编码强制更改为UTF-8时可能会导致解码错误。需要先确定原始文件的编码,然后进行相应的转换。使用 chardet 来检测文件的编码,并将其转换为UTF-8。

pip install pywin32
pip install chardet

        将Word(.doc)文件保存在文件夹“C:\Users\merit\Desktop\测试文件”下,输出TXT文件同样保存在“C:\Users\merit\Desktop\测试文件”当中,具体调用代码如下:

import os
import win32com.client
import chardet

# 指定.doc文件夹的路径
doc_folder = r'C:\Users\merit\Desktop\测试文件'

# 确保指定的文件夹存在
if not os.path.exists(doc_folder):
    print("指定的文件夹不存在。")
else:
    # 遍历.doc文件夹中的所有.doc文件
    for doc_filename in os.listdir(doc_folder):
        if doc_filename.endswith('.doc'):
            doc_path = os.path.join(doc_folder, doc_filename)
            txt_filename = os.path.splitext(doc_filename)[0] + '.txt'
            txt_path = os.path.join(doc_folder, txt_filename)

            # 使用pywin32库将.doc文件转换为.txt文件
            word = win32com.client.Dispatch("Word.Application")
            doc = word.Documents.Open(doc_path)
            doc.SaveAs(txt_path, FileFormat=2)  # FileFormat 2 表示.txt格式
            doc.Close()
            word.Quit()

            # 使用chardet库检测TXT文件的编码
            with open(txt_path, 'rb') as txt_file:
                raw_data = txt_file.read()
                result = chardet.detect(raw_data)
                encoding = result['encoding']

                if encoding != 'utf-8':
                    # 如果编码不是UTF-8,转换为UTF-8编码
                    with open(txt_path, 'r', encoding=encoding, errors='ignore') as txt_file:
                        content = txt_file.read()
                    
                    with open(txt_path, 'w', encoding='utf-8') as txt_file:
                        txt_file.write(content)

    print(".doc文件已成功转换为UTF-8编码的.txt文件。")

### Python 实现 PDFWord 的功能 在 Python 中,可以使用多个库来完成 PDFWord 的转换任务。以下是几个常用的库及其简单介绍: #### 使用 `pdf2docx` 库 `pdf2docx` 是一个专门用于将 PDF 文件转换为 DOCX 文件的 Python 库[^3]。它支持多种复杂的布局结构,并能较好地保留原始文档中的样式。 安装方法如下: ```bash pip install pdf2docx ``` 下面是一个简单的代码示例展示如何使用该库进行文件转换: ```python from pdf2docx import Converter def convert_pdf_to_word(pdf_file, docx_file): cv = Converter(pdf_file) cv.convert(docx_file, start=0, end=None) # 将整个PDF文件转换成Word cv.close() # 示例调用 convert_pdf_to_word('example.pdf', 'output.docx') ``` #### 使用 PyMuPDF (Fitz) PyMuPDF 或 Fitz 是另一个强大的工具包,能够处理各种类型的文档操作,包括从 PDF 提取文本并保存到其他格式中去[^4]。虽然其主要用途不是直接做 PDFWord 的转化,但是通过中间步骤也可以达到目的。 首先需要提取 PDF 页面上的文字和其他元素,之后再写入 Microsoft Office 文档兼容的形式里头比如 .rtf 或者借助 pandas 和 openpyxl 等进一步加工成为真正的 MS Word 可读形式。 安装命令如下所示: ```bash pip install pymupdf ``` 这里给出一段基础示范程序片段: ```python import fitz # 这就是 PyMuPDF def extract_text_from_pdf(pdf_path): document = fitz.open(pdf_path) text = "" for page_num in range(len(document)): page = document.load_page(page_num) text += page.get_text() return text text_content = extract_text_from_pdf("input.pdf") with open("output.txt", "w") as f: f.write(text_content) print("Text extracted and saved.") ``` 注意这仅导出了纯文本数据而非完整的富媒体内容;如果追求更高保真度,则需探索更高级别的 API 接口或者商业解决方案。 --- ### 总结 对于希望快速简便地实现 PDFWord 格式的转变需求来说,推荐优先尝试开源项目如 **pdf2docx** ,因为它已经封装好了大部分复杂逻辑供开发者轻松调用。而当面临更加定制化的要求时,考虑采用像 PyMuPDF 那样的底层框架自行构建解析流程会更为灵活一些。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值