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

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

1、PDF转TXT

        首先需要安装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,word,pdf)