由于测试数据不够等问题,很可惜最终没有参选成功,仍记录一下。

基于大学计算机基础课程研发的辅助教学工具,自动审核和批改学生提交的作业。

本人负责word板块的功能函数编写,主要采取的是通过答案属性和学生文件的对比,来判断赋分,根据前端选取的考察内容来调用内部函数。

主要写了一下的模块,需要导入第三方库docx(这个库不是很全,属性有限)

# *文字基本格式(字体,颜色,大小,加粗,斜体,高亮,下划线)
# 标题:标题文本内容,标题对齐方式,文字基本格式
# 页面设置:纸张版式,纸张方向,上下左右页边距
# 正文:首行缩进,首字字体名称,行间距,段前间距,段后间距
# 查找和替换:替换文字的文字内容,文字基本格式
# 页眉和页脚:奇数偶数页不同,文字内容,文字基本格式
# 正文文字替换
from docx import Document# 文字格式替换
# 格式包括:文字颜色,文字大小,文字是否加粗,文字字体名称def total_test(testpath,answerpath,Score,shorttext):doc1=Document(testpath)doc2=Document(answerpath)# 获取文档所有段落对象paragraphs1 = doc1.paragraphsparagraphs2 = doc2.paragraphsword_count1=0word_count2=0for pra2 in paragraphs2[1::]:word_count2=pra2.text.count(shorttext)+word_count2for pra1 in paragraphs1[1::]:word_count1=pra1.text.count(shorttext)+word_count1# 检查文字内容是否替换if word_count1 != word_count2:return 0for pra2 in paragraphs2[1::]:for run2 in pra2.runs:if shorttext in run2.text:# 文字颜色rgb_answer = run2.font.color.rgb# 字体名称fontname_answer = run2.font.name# 文字大小size_answer = run2.font.size# 是否加粗bold_answer = run2.font.boldbreakfor pra1 in paragraphs1[1::]:for run1 in pra1.runs:if shorttext in run1.text:if run1.font.color.rgb != rgb_answer:Score=0passif run1.font.name != fontname_answer:Score=0passif run1.font.size != size_answer:Score=0passif run1.font.bold != bold_answer:Score =0passreturn Score
# 纸张设置
from docx import Documentdef Papersize_test(testpath,answerpath,Score):doc1=Document(testpath)doc2=Document(answerpath)# 获取文档所有章节sections1 = doc1.sectionssections2 = doc2.sections# 获取章节对象的页边距等信息sec01 = sections1[0]sec02 = sections2[0]if sec02.page_width != sec01.page_width:Score=0passif sec02.page_height != sec01.page_height:Score=0passreturn Scoredef orientation_test(testpath,answerpath,Score):doc1=Document(testpath)doc2=Document(answerpath)# 获取文档所有章节sections1 = doc1.sectionssections2 = doc2.sections# 获取章节对象的页边距等信息sec01 = sections1[0]sec02 = sections2[0]if sec01.orientation != sec02.orientation:Score = 0passreturn Score
# 页面边距
from docx import Documentdef Margin_test(testpath,answerpath,Score):doc1=Document(testpath)doc2=Document(answerpath)# 获取文档所有章节sections1 = doc1.sectionssections2 = doc2.sections# 获取章节对象的页边距等信息sec01 = sections1[0]sec02 = sections2[0]"class Section(object):"'''官方解释:文档节,提供对节和页面设置的访问。还提供对页眉和页脚的访问。'''if sec02.left_margin != sec01.left_margin:Score=0passif sec02.right_margin != sec01.right_margin:Score=0passif sec01.top_margin != sec01.top_margin:Score=0passif sec01.bottom_margin != sec01.bottom_margin:Score=0passreturn Score
# 基本的文字属性判定def basic_test(title_run1,title_run2):Score=1# 字体if title_run2.font.name != title_run1.font.name:Score = 0pass# 字体颜色if title_run2.font.color.rgb != title_run1.font.color.rgb:Score = 0pass# 文字大小if title_run2.font.size != title_run1.font.size:Score = 0pass# 是否加粗if title_run2.font.bold != title_run1.font.bold:Score = 0pass# 是否高亮if title_run2.font.highlight_color != title_run1.font.highlight_color:Score = 0pass# 是否有下划线if title_run2.font.underline != title_run1.font.underline:Score = 0pass# 是否斜体if title_run2.font.italic != title_run1.font.italic:Score = 0passreturn Score
# 标题
from docx import Document
import basic# 文本检测
def text_test(testpath,answerpath,Score):doc1=Document(testpath)doc2=Document(answerpath)# 获取文档所有段落对象paragraphs1 = doc1.paragraphsparagraphs2 = doc2.paragraphs# 获取标题信息title1 = paragraphs1[0]title2 = paragraphs2[0]# 标题内容判定if title2.text != title1.text:Score=0passreturn Score# 对齐方式
def aligment_test(testpath,answerpath,Score):doc1=Document(testpath)doc2=Document(answerpath)# 获取文档所有段落对象paragraphs1 = doc1.paragraphsparagraphs2 = doc2.paragraphs# 获取标题信息title1 = paragraphs1[0]title2 = paragraphs2[0]# 标题对齐方式判定if title2.paragraph_format.alignment != title1.paragraph_format.alignment:Score=0passreturn Score# 文字基本属性
def basic_test(testpath,answerpath,Score):doc1=Document(testpath)doc2=Document(answerpath)# 获取文档所有段落对象paragraphs1 = doc1.paragraphsparagraphs2 = doc2.paragraphs# 获取标题信息title1 = paragraphs1[0]title2 = paragraphs2[0]# 获取段落的 run 对象列表runs1 = title1.runstitle_run1=runs1[0]runs2 = title2.runstitle_run2=runs2[0]if basic.basic_test(title_run1,title_run2) == 0:return 0return Score
# 页眉页脚
from docx import Document
import basicdef header_test(testpath,answerpath,Score):doc1 = Document(testpath)doc2 = Document(answerpath)# 获取文档所有章节sections1 = doc1.sectionssections2 = doc2.sections# 获取章节对象的页边距等信息sec01 = sections1[0]sec02 = sections2[0]# 偶数页页眉head01even = sec01.even_page_header  # 返回页眉对象head02even = sec02.even_page_header  # 返回页眉对象head01even = head01even.paragraphs[0]head02even = head02even.paragraphs[0]# 奇数页页眉head01odd = sec01.header  # 返回页眉对象head02odd = sec02.header  # 返回页眉对象head01odd = head01odd.paragraphs[0]head02odd = head02odd.paragraphs[0]# 页眉文字内容检测if head01even.text != head02even.text:Score =0passif head01odd.text != head02odd.text:Score = 0passrun1e=head01even.runs[0]run2e=head02even.runs[0]run1o=head01odd.runs[0]run2o=head02odd.runs[0]# 页眉文字字体内容检测if basic.basic_test(run1e,run2e) == 0:return 0if basic.basic_test(run1o,run2o) == 0:return 0return Scoredef footer_test(testpath, answerpath, Score):doc1 = Document(testpath)doc2 = Document(answerpath)# 获取文档所有章节sections1 = doc1.sectionssections2 = doc2.sections# 获取章节对象的页边距等信息sec01 = sections1[0]sec02 = sections2[0]# 偶数页页眉foot01even = sec01.even_page_footer  # 返回页眉对象foot02even = sec02.even_page_footer  # 返回页眉对象foot01even = foot01even.paragraphs[0]foot02even = foot02even.paragraphs[0]# 奇数页页眉foot01odd = sec01.footer  # 返回页眉对象foot02odd = sec02.footer  # 返回页眉对象foot01odd = foot01odd.paragraphs[0]foot02odd = foot02odd.paragraphs[0]# 页眉文字内容检测if foot01even.text != foot02even.text:Score = 0passif foot01odd.text != foot02odd.text:Score = 0passrun1e = foot01even.runs[0]run2e = foot02even.runs[0]run1o = foot01odd.runs[0]run2o = foot02odd.runs[0]# 页眉文字字体内容检测if basic.basic_test(run1e, run2e) == 0:return 0if basic.basic_test(run1o, run2o) == 0:return 0return Score

【office】自动评阅(word)相关推荐

  1. 语文作文自动评阅技术及其应用

    来自:哈工大讯飞联合实验室 阅卷是老师教学工作中非常重要的一环,但也是耗时费力的一环.如果机器能够替代或辅助老师对考试和作业评分,将极大减轻老师负担,有效支持教育的结果评价.过程评价和个性化 &quo ...

  2. 阅卷管理用c语言编程,模拟人工阅卷C语言编程题自动评阅系统设计与实现.doc

    模拟人工阅卷C语言编程题自动评阅系统设计与实现 模拟人工阅卷C语言编程题自动评阅系统设计与实现 摘要:传统的C语言在线考试系统对编程题的评阅比较机械,无法反映考生的真实水平.本文在分析人工阅卷流程的基 ...

  3. java计算机毕业设计作业自动评阅系统的设计和开发源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计作业自动评阅系统的设计和开发源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计作业自动评阅系统的设计和开发源程序+mysql+系统+lw文档+远程调试 本源码技 ...

  4. Office 2010 体验之Word 2010篇

    Office 2010 体验之Word 2010篇   Office 2010已经开放公测 ,小弟已经下载安装并开始使用,使用体验相当不错O(∩_∩)O---- 51CTO携手微软开展了"O ...

  5. office右键没有新建word,Visio等解决办法

    本文用于解决office右键没有新建word,Visio等,因系统不同或者电脑区别,未必适用于所有用户,只是作为参考,但对本人来讲确实解决了问题,如果对您有用,无需好评,如果无用,不喜勿喷,您的差评可 ...

  6. 评阅上百篇博士学位论文后专家发现:博士生SCI发的越多,通常科研能力越差...

    作者:秦四清,中国科学院地质与地球物理研究所研究员 原标题:破"SCI至上"新政有助于有志博士生做出卓越成果 多年来,我评阅了上百部博士学位论文,也参加了上百次的博士学位论文答辩会 ...

  7. 评阅百篇博士论文后我发现:博士生发SCI越多,通常科研能力越差!

    来源:秦四清科学网博客  作者:秦四清 多年来,我评阅了上百部博士学位论文,也参加了上百次的博士学位论文答辩会,我和不少老师有一个共同的深刻感受:在攻读博士期间,发表了多篇sci论文的博士生,在科研基 ...

  8. 计算机系本科毕业论文评阅评语,毕业论文评阅教师评语

    毕业论文评阅教师评语 一段忙碌又充实的大学生活要即将结束,大学生们毕业前都要通过最后的毕业论文,毕业论文是一种有计划的检验学生学习成果的形式,写毕业论文需要注意哪些格式呢?以下是小编帮大家整理的毕业论 ...

  9. iwrite提交不了作业_iWrite英语写作教学与评阅系统移动端——学生使用手册

    通过微信搜索公众号:iWrite爱写作,点击"关注". 一.注册 iWrite英语写作教学与评阅系统移动端首页底端显示"登录"按钮. 首次关注,点击" ...

最新文章

  1. 使用NetBeans IDE开发C程序
  2. innodb表空间结构
  3. 在Fedora8上安装MySQL5.0.45的过程
  4. The Preliminary Contest for ICPC China Nanchang National Invitational
  5. 每日英语:Vender Assault Shines Ugly Light on China's Urban Enforcers
  6. Dynamics 365执行操作报SQL Server已超时,更改这个超时设置的方法
  7. Android传感器编程入门(三)
  8. [UI]抽屉菜单DrawerLayout分析(三)
  9. HTTP的请求头 Last-Modified 与 If-Modified-Since 和 If-None-Match 与 ETags
  10. 2g内存用linux的哪个版本,Linux 下安装sql server 时 2G内存限制的最新(2019-08-15) 解决方案...
  11. 微信红包和转账有哪些区别?原来还有这些不同!涨知识了
  12. SonarQube 初探
  13. 仿b站demo(效果图)
  14. 修炼内功的融云,以通讯中台赋能企业数字化升级
  15. WinForm开发钉钉(1) 调用机器人发送消息到钉钉群
  16. 利用python open-cv aimageio完成avi png mp4 gif间的转换
  17. blast的相关概念
  18. Metasploit(MSF)基础超级详细版
  19. 用企业微信如何做私域运营?
  20. 汉语真奇妙:“吾”与“汝”

热门文章

  1. oracle习题练习
  2. SKIL/配置/日志
  3. 福建高职单招本科学校计算机,纯数据!福建高职分类考生500分+能报哪些大学?附录取最低分...
  4. vulnhub-durian
  5. [工作助手]-更新中-软件著作权写作注意
  6. 基于STM32单片机智能手表GSM短信GPS定位设计(毕业设计资料)
  7. MySQL建库建表(初识MySQL)
  8. 关于TureNas的Vdev
  9. c语言中后缀字母如 d h b l i,10 C语言中常量的表示.ppt
  10. 芯科EmberZNet_ZigBee3.0_EFR32MG开发日记三:开发平台搭建1