最近需要处理各种格式的文档提取字符,有关于word提取字符串记录一下遇到的问题,这里需要用到两个库:
- docx , 在终端按照下面的命令装就行了
!pip install python-docx
- win32com, 在终端按照下面的命令装就行了
!pip install win32com
docx可以直接处理docx文件,但是对于doc格式的文件需要转换一下,转换代码如下,其中fn是文件绝对路径,一定要绝对路径要不然word软件是没法存的 , 其次需要注意的是由于我电脑只装了wps,所以在下面的clinet.启动的是kwps.Application 如果你装了word 就启动word。
import docx
from win32com import client
def doc2docx(fn):
word = client.DispatchEx('kwps.Application') # 打开word应用程序
doc = word.Documents.Open(fn) # 打开word文件
a = os.path.split(fn) # 分离路径和文件
b = os.path.splitext(a[-1])[0] # 拿到文件名
docx_path = "{}\\{}.docx".format(a[0], b)
doc.SaveAs(docx_path, 12) # 另存为后缀为".docx"的文件,其中参数12或16指docx文件
doc.Close() # 关闭原来word文件
word.Quit()
return docx_path
最后就利用docx直接提取里面的文字就行了,但是如果是图片格式的话,需要利用OCR,感兴趣的可以留言,可以后期发
def extract_text_from_docx(docx_path):
doc = docx.Document(docx_path)
text = ""
for paragraph in doc.paragraphs:
text += paragraph.text + "\n"
return text , os.path.splitext(os.path.basename(docx_path))[0] #返回所有文字 , 文件名称