基于Python 的高校电子文档管理系统①
黄 昇
(上海旅游高等专科学校 设备处, 上海 201418)
通讯作者: 黄 昇摘 要: 随着高校采购任务的剧增, 采购业务积累了大量的电子文档资料, 原一站式采购管理平台的文档管理功能已经无法满足现有的工作需要. 综合分析现有文件和资料管理的需求, 并根据文档实际生命周期的业务流程, 确定了系统功能模块的划分. 利用模型驱动工程思想建立系统的对象模型,
使用Rational 建模工具建立系统类图和时序图来描述系统整体架构和业务逻辑, 选择轻量级Flask 框架模型进行研发, 采用文档型数据库MongoDB 解决大并发量和数据服务器的读写压力, 为今后大数据分析提供保障提出PyPDF 方法解决PDF 元数据提取功能. 最终解决了电子文档流转最后归档环节缺乏信息化管理的问题.
关键词: 文档管理; 模型驱动; 非关系型数据库; Flask 框架; 元数据
引用格式:  黄昇.基于Python 的高校电子文档管理系统.计算机系统应用,2021,30(4):69–76. /1003-3254/7843.html
Electronic Document Management System in Colleges and Universities Based on Python
HUANG Sheng
(Equipment Department, Shanghai Institute of Tourism, Shanghai 201418, China)
Abstract : Amid the leap in procurement tasks in colleges, a large number of electronic documents have been accumulated. The original one-stop procurement management platform has been unable to manage such a great number of documents. In light of current demand for data management, the system function modules are divided according to the business process throughout the actual life cyc
le of documents. The object model of the system is built based on the idea of model-driven engineering, and class and sequence diagrams are drawn by rational modeling tools to describe the overall architecture and business logic of the system. Besides, the lightweight flask framework is adopted for research and development, and a document-oriented database (MongoDB) is relied on to tackle the problem of the large concurrent and release the pressure on the data server during reading and writing. For future big data analysis, a PyPDF method is proposed to facilitate the extraction of PDF metadata. As a result, information management is ensured for the final filing during electronic document circulation.
Key words : document management; model driven; non-relational database; flask framework; metadata
随着高校信息化建设的高速发展, 越来越多的电子文档出现在日常的工作中, PDF 作为电子文档归档的首选格式, 在文件格式的保存完整性方面和平台兼容性方面有显著的优势[1]. 本电子文档归档管理系统的研发主旨是将采购管理平台的文档管理与档案归档管理过程合并成一个整体, 解决电子文档流转过程中信
息化管理缺失的情况, 同时提出一种对电子文档元数据自动提取来代替传统的手工提取元数据, 并且建立索引库, 为大数据分析奠定了基础, 同时为学校今后的工作决策提供依据.
国内对元数据提取的相关探索起步较晚, 主要研究方向也集中在基于正则表达式和基于规则的元数据
计算机系统应用 ISSN 1003-3254, CODEN CSAOBN
E-mail: Computer Systems & Applications,2021,30(4):69−76 [doi: 10.15888/jki.csa.007843] ©中国科学院软件研究所版权所有.
Tel: +86-10-62661041
①  收稿时间: 2020-07-27; 修改时间: 2020-08-26; 采用时间: 2020-09-01; csa 在线出版时间: 2021-03-30
提取的相关研究[2–6]. 2001年贺亚锋首次将元数据提取的相关研究带入到中国[7], 主要对两种常用的基于网站的元数据的自动生成进行了介绍, 并对ROADS元数据编辑器和MeatWeb元数据生成器做的使用和原理进行了深入的阐释[8,9].
2004年, 王守芳等提出了如何从HTML文件中提取元数据的方案. 该方案主要是基于规则模板, 通过对HTML 文档进行分词, 配合使用归约算法实现元数据的自动提取[10]. 该方法虽然对元数据提取的准确性却并不太高, 但基本可以实现HTML文档元数据的自动提取.
2007年, 于江德等首次将条件随机场应用在中文论文的元数据提取上, 该方法主要通过利用论文中换行符、回车符等标志性符号对论文内容进行分割, 然后应用条件随机场对分割内容进行元数据抽取[11,12]. 该方法对于学术论文的论文头中的元数据的提取具有比较高的准确度, 可以高达90%, 但是该方法也局限于论文的头部进行元数据的提取操作.
2017年, 杜秋霞等为了地名文化遗产的保护将隐马尔可夫模型应用在提取文献中的地名元数据上[13].该方法主要通过对电子文档的地名关键词的标注, 然后对文本进行分割, 进而对元数据进行提取. 该方法可以对文献中的地名进行比较细粒度的抽取, 相比传统地名提取的准确度明显提升, 但该方法却无法对消失的地名准确的进行抽取.
通过阅读相关的文献, 研究对比目前流行提取PDF 元数据的各种方式, 结合实际需求提出一种最适合本课题的提取方法. 通过对Flask框架的学习, 以模型驱动工程的思想设计实现一款基于Python的能够自动、高效、准确地提取PDF中元数据的电子文档归档管理系统.
1  系统需求分析
目前线下归档流程仍旧是文档在各部门之间通过复印和填写文档属性表格资料的方式传递. 职能部门为执行科研项目建立文档库, 将其他各类格式的电子文档和实体文档转换或扫描成PDF格式保存, 同时在项目执行过程中不断更新该文档库, 项目完成后发起归档任务将数据迁移至档案部门审核, 然后根据项
目分类存入对应的档案系统中[14–16]. 期间需要经历很多繁琐的流程, 而且还有诸多弊端: (1)项目庞大, 涉及的供应商有多家, 文档的完整性无法保证; (2)项目执行过程只有职能部门参与其中, 对归档工作没有一个过程把控的机制, 档案部门只是在归档任务发起才参与进来; (3)归档任务通常集中在年末, 会积压大量的资料, 这就势必在文档流转审核过程中产生错误和审核不严格的情况.
因此, 需要将归档管理功能一并纳入一站式采购平台且做进一步的完善. (1)增加文档数据导入功能,保证项目执行期间文档实时保存; (2)增加监督审核机制, 保证上传电子文档的准确性, 避免项目后期返工的情况; (3)增加电子文档元数据提取功能, 解决目前针对海量数据缺乏大数据分析的情况. 这样电子文档管理和归档管理就涵盖了整个文档生命周期, 如图1所示.
图1    文档生命周期
计算机系统应用2021 年 第 30 卷 第 4 期
2  系统概要设计
2.1  系统基本思想
(1)系统以形成高校一体化的信息高度集成为基准, 设计标准数据接口防止信息“孤岛”的产生, 做到新系统与一站式采购管理平台的无缝结合[17–19].
(2)出于对安全性的考虑, 系统对数据库管理要采取必要的定期自动数据备份、防灾预案和数据恢复等措施; 在数据传输方面要充分利用校园数据交互中心的标准接口, 确保系统数据的安全性、可靠性和一致性[20]; 对所有用户的权限必须要有有效的管控机制(如: 归档角、审批权限).
(3)设计阶段充分考虑后期需求的变化, 系统后台配置应具备灵活性, 例如需要增加新的文档属性项时只要通过系统后台配置即可, 无需修改系统程序和数据结构.
2.2  系统功能设计
根据需求分析和设计思路可以得到系统的用例图,如图2所示, 将本系统分为项目文档整理、检索与统计、移交接收管理和系统管理4个功能区.
图2    归档系统用例图
(1) “项目文档整理”包含6项子功能: 文档导入(自动导入、人工录入、本地导入), 文档补充, 项目信息补录, 删除文档, 文档格式转换, 文档元数据提取.
(2) “检索与统计”包含4项子功能: 归档任务进度查询, 电子文档查询, 数据统计, 报表管理(包含模板管理).
(3) “移交接收管理”包含3项子功能: 预审, 资料移交审核, 归档内容审核.
(4) “系统管理”包含3项子功能: 用户和权限配置,文件扩展属性管理, 各类标准接口配置.
2.3  数据库设计
在大数据背景下, 要求应用系统具有高性能、弱事务的特性, 因此数据结构需要以横向扩展的方式进行分布式存储, 数据模式多元化, 数据相对独立存在.通过功能业务分析电子文档归档系统并非事务性系统,为了使本系统在扩展性、并发处理和读/写方面更有优势, 而且需要考虑到系统后期的升级与功能扩展, 摒弃使用传统关系数据库, 采用MongoDB半结构化的非关系型数据库, 它有着分布式的存储架构, 这样数据之间分散存储更容易扩展, 数据库不需要事先定义数据字段, 可以随时自定义写入数据的格式. NoSQL来处理大量多元化数据存储运算与高并发访问有更显著的效果[21–23]. 数据库采用1主节点+1副节点+1仲裁节点的基本架构, 以减轻数据服务器的访问压力, 同时提升容灾能力, 如图3所示.
3  系统对象模型的建立
3.1  业务逻辑分析
通过对实际业务进行系统建模更有利于把握系统的整体格局, 在更高的抽象水平上考虑系统的设计, 而不是程序编码, 这样可以降低前期出错率, 缩短系统实现的周期[24,25]. 由于篇幅有限仅以文档迁移导入为例,其包括的主要功能: 文档锁定, 项目移交接收, 文档信息补充, 本地导入, 具体业务逻辑如表1所示.
2021 年 第 30 卷 第 4 期计算机系统应用
表1    文档迁移导入主要业务逻辑序号操作名逻辑处理内涵
1文档锁定①在归档任务发起的情况下, 系统将该项目资料库的文档进行锁定封存, 并整体迁移至归档库.
②锁定后的文档无法操作, 并自动转换PDF格式. 元数据提取过程执行平台的依赖性, 采取单独开发文档格式转换和元数据提取插件功能块来实现.
2项目移交
接收
①项目移交任务审核过程中, 系统允许“文档迁移导
入”、“文档信息补录”和“本地导入”等操作.
②点击“文档迁移导入”, 弹出归档库项目的选择/查
询页面, 选中要迁移的归档项目, 点击“确定迁移”.
③文档导入操作在送审之前允许多次操作. “确定迁
移”即为进入送审阶段, 导入功能被锁定, 只能对文
档信息进行补录, 只有审批驳回情况下能够解锁并
重新导入.
3文档信息
补充
如归档的文件信息不完整, 具体补录操作如下:
①根据归档项目的类型弹出填写相关信息的输入
界面.
②根据归档项目的类型补录上传相关的文档.
③补录的归档项目资料信息将同步写入数据库. 文
档则要通过审核流程才能上传.
4本地导入在项目移交审核不合格, 还需补充文档时, 从本地客户端直接上传至归档库对应项目, 无需再上传至项目库然后迁移, 同时上传过程中完成格式转换和元数据提取.
3.2  类定义与类间关系
根据模型驱动工程的思想方法, 首先建立系统的对象模型, 接着通过对象模型建立系统类集, 并对每个类都定义属性和操作方法, 如表2所示.
(1) ModelManager属于EJB类, 封装的组件为前台与服务端的交互提供数据访问接口.
(2)公共类(ConDefiner), 它主要封装了基本查询、第三方插件调用和翻页等方法, 前台只需要实例化这个类就能继承并使用.
(3)对象抽象类: 将实体类AmObject类作为系统Model类的基类, Model类就是把数据库的字段映射为各类中各个对象的属性, 为模型操作类提供数据来源.
(4)数据操作抽象类: 将AmObjectDAO类作为数据操作类的基类, 除了从父类AmObject继承的一些通用对象数据操作, 还自定义特殊的数据对象操作方法.如图4所示.
3.3  数据操作类的逻辑实现
利用UML序列图能描述对象间的交互和消息传递顺序的特性, 完成系统核心功能模块对象间的输入输出. 以文档迁移导入、文档数据补充、本地导入和移交接收的逻辑实现为例.
表2    整个系统的类定义集合(类集)
序号类的英文名称类的说明
1AmObject对象抽象类, 系统所有模型类的基类
2AmObjectDAO
对象数据操作抽象类, 其他模型
数据操作的基类
3ConDefiner
公共类(包含系统通用类, 翻页,
日期格式等等)
4ModelManager EJB类
5AmAuthority权限验证类, 负责所有和权限相关的操作6AmRules归档类型类
7AmRulesDAO归档类型操作类
8AmModelProperty文件属性类
9
AmModelPropertyD
AO
文件属性操作类
python中文文档10AmInitTask归档任务类
11AmInitTaskDAO归档任务操作类
12AmProcTask过程任务类
13AmProcTaskDAO过程任务操作类
14AmRollInfo案卷类
15AmProcOpinion审批意见类
16AmProcOpinionDAO审批意见操作类
17AmDocModel文件模型类
18AmDocModelDAO文件模型操作类
19AmDocType文件类型模型类
20AmDocTypeDAO文件类型操作类
文档迁移导入设计思路: 根据前台应用操作通过EJB类调用文件模型操作类的具体方法, 数据库返回对应的项目列表. 对项目列表内的项目文件进行锁定操作, 调取文件模型操作类的Lock()方法. 前台应用根据界面操作选择锁定后的项目, 调取文件模型操作类的Move()迁移方法, 对项目列表内的对象迁移至归档任务库, 如果迁移未成功的文件仍保存在项目资料库,文档迁移导入模块序列图如图5所示.
数据补录的设计思想: 前台应用通过EJB层调取文件模型操作类的ReInput()方法, 同时利用对象模型类显示对应的操作界面, 并写入到数据库. 本地导入的设计思想: 前台应用通过EJB层调取文件模型操作类的LocalImport()方法, 本地导入数据直接写入归档任务库. 移交接收的设计思想: 前台应用通过EJB层验证用户身份权限, 同时调取归档任务操作类的Check()方法, 如果操作成功则返回审批意见信息并写入归档任务库, 等待后续的归档完成操作, 否则返回驳回信息并告知原因.
最后通过使用UML建模工具IBM Rational Architect 绘制系统主要功能模块的时序图和类图, 有助于完成后续系统框架设计和编码工作.
计算机系统应用2021 年 第 30 卷 第 4 期
图4    模型数据操作类中各类间的继承关系
图5    文档迁移导入时序图
4  系统核心功能实现
4.1  系统框架设计
目前基于Python的Web开发的框架有很多, 例如: Flask、Django和Web2Py等. Django如同Java 的EJB (Enterprise+JavaBeans+JavaEE服务器端组件模型)多被用于大型网站的开发, 而且所有资源每次都要全部加载, 造成一定资源的浪费. 对于大多数的小型网站的开发, Web2Py的管理接口没有权限, 没有内建的单元测试, 不方便系统的调试. Flask的优点是保持代码简洁且具有很强的扩展性和兼容性, 通过框架后台的自由配置, 可以使归档管理系统支持表单验证、权限判断、数据库操作等基本功能, 更符合本系统的实
2021 年 第 30 卷 第 4 期计算机系统应用

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。