Skip to content

kinkir/paper_checking_system

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简体中文论文查重系统

写在前面

大二的时候,学校严抓研究生论文抄袭,遂希望开发一套校内论文查重系统,将新的论文和校内历年的研究生毕业论文进行查重(学校有自己的论文库,保存学校历年所有毕业研究生论文)作为万方和CNKI查重的补充,于是找到了我。当时也没学过C#,只是感觉界面可以直接拖拉拽很方便,校方对做PC客户端还是web端也没要求,于是就整出来了第一版。后面经过两年的稳定运行和维护,有了目前决定开源的这一版。

关联项目

辅助写作工具:https://github.com/tianlian0/aided_writing

安装使用教程

1、clone源代码
2、使用vs打开、编译(我使用的是vs2017)
3、运行paper_checking.exe文件即可
重要提示:如果运行时报pdfbox相关错误可将引用中的pdfbox-app.dll删掉重新添加,然后尝试重新编译。

项目介绍与功能说明

该系统目前支持对简体中文的论文进行横向查重和纵向查重。
两个核心功能点说明如下:
1、纵向查重
选择一批待查重论文后,将该批论文和论文库中的历年论文进行查重比对,用以检查该批论文有没有抄袭往年论文的情况。查重过程中查重按钮就会变灰,查重完毕即恢复正常。
2、横向查重
选择一批待查重论文后,在该批次论文之间进行查重比对,用以检查该批次论文有没有论文之间互相抄袭的情况。查重过程中查重按钮会变灰,查重完毕即恢复正常。这个功能是目前主流查重平台(万方、CNKI等)没有提供的。

软件中涉及的其它功能点及名词解释如下:
1、添加到论文库:
这个功能时将往年的论文添加到论文库,纵向查重功能的说明中提到,纵向查重功能时将一批论文和论文库中的论文进行查重比对。所以这个功能就是服务于纵向查重的,只有将历年的论文通过这个功能添加到论文库中,在使用纵向查重功能的时候才能与历年的论文进行比对。该功能使用时只需要选中存放历年论文的文件夹,然后点击“添加到论文库”按钮,按钮会变灰,等待按钮恢复正常即添加完毕。该功能只会扫描文件夹中的pdf、doc、docx、txt文件,其它类型的文件将被忽略。该过程需要耗费一定时间。
2、查重阈值的设置
顾名思义,该值的设置决定了待查论文连续多少个字与其它论文相同即判定为抄袭。推荐值为12——16,用户亦可根据实际情况自行设定为1~99之间的任意整数值。
3、保存查重报告的文件夹
选择好一个文件夹,待查重完毕后查重报告将会输出到这个文件夹中。
4、生成统计表
如果勾选此复选框,查重结束后将会生成csv格式的统计表,复选框默认勾选。
5、中断恢复
如果选中复选框,软件将不会清除上一次查重的结果继续查重。该复选框适用于应用程序中途意外退出,想从当时的进度继续进行查重时使用。
6、查重进程数
该值的设置影响查重速度,默认为当前机器CPU逻辑核心数-1。
7、格式转换线程数
论文在查重前会进行格式转换,该值的设置影响论文格式转换的速度,默认为当前机器CPU逻辑核心数-2。

几个注意事项:
①系统支持支pdf、doc、docx、txt格式的论文,文件夹中存在的其余格式的文件将被直接忽略。②非标准格式的论文查重时可能会由于转换失败导致查重失败。③如果有查重失败的论文,会在查重结束后弹窗提示。④如果待查论文在论文库中存在,且文件名不相同,则可能会导致查重重复率高于90%的情况(因为相当于是两篇一样的论文进行比对,至于为什么不是100%,下方的整体流程的第一段有说明)。

查重整体流程说明

查重的原理:
每两篇论文之间比对连续相同的字符串,超过查重阈值即认为这些字是重复的。但是,如果但篇论文重复率在0.25%以下或重复字数在30字以下,将不认为重复。也就是说,如果一个人每篇论文只重复0.25%以下,或着每篇论文只抄30字,将不配判定为重复。如果一篇论文从其它论文抄袭了某句话抄袭了很多次,那么只认为其中的一次为重复。也就是说,如果一片论文,抄袭了另一篇论文中的一段话,且这段话在论文中出现了三次,只认为其中的一次是抄袭,另外两次忽略。

整个查重的流程如下:
将论文转换为txt->将txt内容格式化->调用xc_core进行查重比对并生成中间文件->根据中间文件生成查重报告和统计表
分步说明:
论文格式转换:经大量对比、实验后选用pdfbox和spire word free。
文本格式化:去掉论文摘要、目录、参考文献及非中文字符。参考文献都是论文名书名,肯定会影响重复率。同时很多论文目录是很相似的,也会影响重复率。这一部分万方和CNKI也是这么处理的。
调用xc_core进行查重比对并生成中间文件:xc_core是一个独立模块,是用c++实现的一个AC自动机,也是这个论文查重系统的一个核心算法。这个模块并没有开源。目前使用ProcessStartInfo直接启动exe所需的参数通过启动传参传进去,还没做成dll,后续有时间会逐步改为dll调用。xc_core启动时会校验key文件,所以key文件一定和xc_core放在同一目录下。
生成查重报告:中间文件中,0为未重复,1为重复,把重复的部分标红导出rtf就好了。

引用的库

1、IKVM
2、Spire.Doc Free
3、pdfbox

后续的开发计划

1、代码重构。
2、xc_core改为动态链接库。
3、交互优化。比如查重的进度条提示等。
4、其它功能的完善。

项目目前实际运行情况

项目自2016年于生产环境上稳定运行至今,已产出5000+篇查重报告。有些万方、CNKI查重重复率为个位数的,在这个系统上可以重率80+(经人工核验为抄袭无误)。可见学校自有的论文库中还是有很多万方和CNKI没有收录的。

其它说明

1、18年和同学尝试过本项目改为web版(源代码地址:https://gitee.com/mark_liu_admin/PaperCheckSys ),后面也因为合作开发配合的不好、过度设计等原因烂尾了
2、该开源版本和目前学校内使用的版本并不相同,该版本功能较少,相当于是一个简化版本。

项目截图

image
image
项目运行演示视频:链接:链接:https://pan.baidu.com/s/1VM9g4CT4nAwlZXOHePkoXQ 提取码:t059

欢迎打赏

image

商业合作

本项目遵守AGPL3.0协议,同时本项目已申请软件著作权(登记号:2019SR0425632)
本项目可以提供c#版本的相关技术支持,也可提供java版sdk开发包及技术支持。欢迎各高校、机构合作。商业合作可联系微信/QQ:654062779

About

基于C#和C++开发的论文查重系统。千万字次级论文库秒级查重。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%