Python抽取world文档文本内容

2019-08-15  本文已影响0人  一笑乘风凉

1、基础准备:

 运行环境:win10系统、python3.7
 插件:pywin32

2、world转text算法实现

算法思路:
(1)定义文件路径和转存路径:使用split切分
(2)修改新的文件名
(3)设置完整的保存路径:使用join
(4)启动应用程序进行格式转换
(5)保存文本
image.png

结构如下图所示:首先读取要提取的word文件路径,截取文件路径和文件名称,通过文件名称后缀判断是否是world文件,若是,修改文件名后缀,与前面的文件路径合并形成新的文件保存路径,然后进行文本提取,最后将提取的内容保存到新的路径下并保存。

3、工程目录如下

image.png

4、代码实现

# coding=utf-8
import fnmatch
import os
from win32com import client as wc

'''
功能描述:world文件转存txt
参数描述:1、file_path文件路径;2、save_path:保存路径
'''
class WorldToText(object):

    def world_to_text(self, file_path, save_path=""):

        # 1、切分文件路径为文件目录和文件名
        dirs, file_name = os.path.split(file_path)
        # print(dirs, '\n', file_name)
        # 2、修改切分后的文件后缀
        new_name = ""
        if fnmatch.fnmatch(file_name,"*.doc"):
            new_name = file_name[:-4] + ".txt"
        elif fnmatch.fnmatch(file_name,"*.docx"):
            new_name = file_name[:-5] + ".txt"
        else:
            print("格式不正确,仅支持doc or docx 格式")
            return
        # 3、设置新的文件保存路径
        if save_path == "":
            save_path = dirs
        else:
            save_path = save_path
        world2txtPath = os.path.join(save_path, new_name)
        print(world2txtPath)
        # 4、加载文本提取的处理程序,world---txt
        # pythoncom.CoInitialize()
        world_app = wc.Dispatch("Word.Application")
        mytxt = world_app.Documents.Open(file_path)
        # 5、保存文本信息
        mytxt.SaveAs(world2txtPath, 4)#参数4代表抽取文本

if __name__ == '__main__':
    world_text = WorldToText()
    file_path = os.path.abspath(r'../extractWorld/测试文本.docx')
    world_text.world_to_text(file_path)

成功运行后,工程目录为:


image.png

注:此方法同样适用于提取pdf

5、抽取文本小工具

# coding=utf-8
import fnmatch
import os
from win32com import client as wc
'''
Description:多格式文档文本抽取工具
功能描述:文件转存txt
参数描述:1、file_path文件路径;2、save_path:保存路径
'''

class TextTool(object):
    
    def FileToText(self,file_path, save_path=""):
        # 1、切分文件路径为文件目录和文件名
        dirs, file_name = os.path.split(file_path)
        # print(dirs, '\n', file_name)
        # 2、修改切分后的文件后缀
        type_name = os.path.splitext(file_name)[-1].lower()
        new_name = self.TranType(file_name, type_name)
        # 3、设置新的文件保存路径
        if save_path == "":
            save_path = dirs
        else:
            save_path = save_path
        new2txtPath = os.path.join(save_path, new_name)
        print(new2txtPath)
        # 4、加载文本提取的处理程序,world---txt
        # pythoncom.CoInitialize()
        world_app = wc.Dispatch("Word.Application")
        mytxt = world_app.Documents.Open(file_path)
        # 5、保存文本信息
        mytxt.SaveAs(new2txtPath, 4)  # 参数4代表抽取文本
        mytxt.Close()
        
    def TranType(self,file_name, type_name):
        new_name = ""
        if type_name == ".pdf":
            if fnmatch.fnmatch(file_name, "*.pdf"):
                new_name = file_name[:-4] + ".txt"
            else:
                return
        elif type_name == ".doc" or type_name == '.docx':
            if fnmatch.fnmatch(file_name, "*.doc"):
                new_name = file_name[:-4] + ".txt"
            elif fnmatch.fnmatch(file_name, "*.docx"):
                new_name = file_name[:-5] + ".txt"
            else:
                return
        else:
            print("警告:\n 您输入【',type_name,'】的数据不合法,本抽取工具仅支持doc/docx/pdf格式")
        return new_name

        
if __name__ == '__main__':
    file_path = os.path.abspath(r'../extractWorld/测试文本.docx')
    texttool = TextTool()
    texttool.FileToText(file_path)
上一篇 下一篇

猜你喜欢

热点阅读