python 提升生活和办公效率

web开发---word文档的内容检索和展示

2019-03-02  本文已影响0人  alue

周五快下班接到一个活儿, 描述如下:

办公室之前有很多案例记录, 零散分布在很多docx文档中, 需要设计一个方便内容检索和展示的方案

正好最近业余时间在看Django框架, 就打算将文档上传到web服务器, 然后在页面上提供展示和检索的服务.
目前web开发的思路是这样:

  1. 建立一个model用于存储docx文件, 字段包括文件名, 日期, 存储路径, 和文字内容. 文字内容用于检索.
  2. 提供批量上传文件的功能, 后台将各文件相关字段存入数据库
  3. 提供展示和检索视图

谷歌了一下, 发现有很多docx转html的方法. 实际尝试了两个:pydocxmammoth.
用于测试的docx如下:

案例测试.docx

pydocx转换的代码如下

"""用pydocx转换为html"""
from pydocx import PyDocX
html = PyDocX.to_html("案例测试.docx")
f = open("PyDocX案例测试.html", 'w', encoding="utf-8")
f.write(html)
f.close()
pydocx生成的html

mammoth转换的代码如下:

"""用mammoth转换为html"""
import mammoth
with open("案例测试.docx", "rb") as docx_file:
    with open('案例测试.html','w',encoding='utf-8') as f:
        result = mammoth.convert_to_html(docx_file)
        html = result.value # The generated HTML
        messages = result.messages # Any messages, such as warnings during conversion
        f.write(html)
mammoth生成的html

可见, 默认配置下pydocx生成的html能够保留颜色,下划线,粗体,斜体,表格,图片等信息. 而mammoth则没有了表格,颜色,下划线信息.
不过mammoth有个extract_raw_text方法,能够提取出文本, 将这些文本存入数据库,可以方便做内容检索.

"""利用extract_raw_text提取docx的文本"""
import mammoth

with open("案例测试.docx", "rb") as docx_file:
    result = mammoth.extract_raw_text(docx_file)
    text = result.value
print(text)

周末还有别的安排, 下周一开始实现这些功能.

上一篇下一篇

猜你喜欢

热点阅读