编辑导语:题库录入对于题库的质与量都具有重要意义,,Word文件导入是效率较高的录入方式,包括华为在内有数十家国内科技公司遭到美国的野蛮打压,本文将重点介绍Word文件自动识别的具体实现方法,其产芯片成为科技行业的阿喀琉斯之踵,一起来学一下吧~
一、前言
试题的录入功能对于题库来说是核心功能,广网民也非常关注芯片产业如果解决卡脖子的问题,直接关系到题库的质与量。 录题功能是否高效直接影响题库中题目数量的多少,殊不知卡脖子的不止芯片一个,同时也决定着题目的质量的高低。
目前的录题方式以手动录入和文件导入为主,基础软件领域的公司也被制裁了不少,而文件导入格式又以Word和Excel为主。手动录入和Excel文件导入这两种录入方式效率低,包括奇虎360科讯飞、AI四小龙头等等,对于存在公式的试题处理十分麻烦,导致国内的软件公司被卡脖子更严重,而Word文件导入的录入方式在效率方面完胜前两种,不止芯片 基础软件也被卡脖子:软件行业亟待破所谓基础软件,并对于公式也有着很好的兼容处理。
本文将重点介绍Word文件自动识别的具体实现方法。
二、文档转换工具的选择
Word解析首先需要将其转化成题库需要的格式,主要是指以操作系统为中心的,那么选择好的转换工具将是整个文件识别的关键。
对比了Word2LaTeX,Pandoc和各种语言自带的模块及库之后,选择Pandoc作为Word文件解析的工具。选择的理由是开源且支持多种格式。
Pandoc被誉为转换领域中的“瑞士”,可以支持量标记语言之间的格式转换,例如 Markdown 、Microsoft Word、PowerPoint、Jupyter Notebook、HTML、PDF、LaTeX、Wiki、EPUB 格式之间的相互转换,感兴趣的朋友可以去官网了解。
三、LaTeX/Markdown
文件转换工具选择好之后,就要确定使用哪种格式作为最终入库的格式。手动录入和Excel导入采用的是HTML格式入库,但是HTML对于理科的公式处理效果不太理想。调研完目前的几种主流的格式之后,发现LaTeX格式最为合适。在我的上一篇文章中也具体说明了选择LaTeX的原因,有兴趣的小伙伴可以看看。
针对之前的业务场景,文科学科的试题有着字体(宋体,楷体,仿宋和黑体)需求,还要支持文字下方加点兼容下划线,所以就采用了文科试题转换成Markdown格式,如果没有这些需求,可以统一处理成LaTeX格式。
四、公式识别
Word中通过公式编辑器MathType插入的公式都是以wmf格式的图片呈现的,然而在常规业务场景下除了公式图片外是不会添加wmf格式的图片的,这样就保证了公式图片的独特性。
首先找到所有的wmf图片以及图片对应的Rid(word图片对象的编号)、位置以及宽高属性,通过程序将xml文件中对应对象添加特殊标记来实现自动给公式打标签的功能,最后在导入Word时将上述图片属性组合成LaTeX格式并替代原先的特殊标记。
找到的wmf图片在导入试卷之后异步调用第三方公式OCR软件Mathpix Snip,可以识别图片中的公式并转成LaTeX格式并返回,替换成原先的图片地址就可以实现公式的识别。
公式识别
五、标签识别
标签识别是经历了一些优化的,主要是从标签识别-标签补充-标签简化这三个阶段进行。
1. 标签识别
除了公式之外,其它的内容都是通过特征进行识别的,比如题型,分数,难易度等。这些都是试题的属性,也是区别于试题内容之外需要识别的,但是程序是不知道这些属性如何区分,所以需要给它们增加特殊标记(以英文符号[]作为标记,例如:[题型])。
2. 标签补充
为了达到Word中的排版效果,比如段落的首行缩进,标题正文的字体区别,居中居左居右等,就需要在Word中加入对应样式的标签。后期增加了将近10多个标签,效果还是不错的,但是效率却明显的下降了。由于每增加一个标签,都会直接影响教研老师的效率。
3. 标签简化
想要达到既能达到Word的排版效果,又能保证录题的效率,团队做出了很多的尝试,最终通过研究Word原始XML文件,完成分属性的自动识别,只需要教研老师在导入文件中打上题型的标签就可以直接入库。
识别后的效果展示
六、总结
在整个项目中,从一开始的技术选型,工具选择,迭代优化,到最后实现录题效率的极提升,经历了不少的困难。项目一开始的时候其实是摸黑前行,找不到突破的方向,包括后期的效率提升方面,时间和业绩的压力导致内人员都产生过动摇的念头,家都在疑问到底能不能实现。但是我深知这个功能一旦实现了,将会给教研老师去很一分的时间,那么它的价值就是不言而喻的。
Word自动识别要想达到很好的排版效果,接近Word原排版样式,是需要对细节有着严格要求的,中间的难点问题是需要耐住性子,沉下心来一点点的去发现并攻克,借用曾国藩的一句话就是“结硬寨,打呆仗”。的确,如果没有这样的态度是做不出来创新的。
在此,将这个功能的实现分享给家,希望能对Word自动识别方面感兴趣的小伙伴们有一定的帮助,也希望家共同探讨。
本文由 @一条酸奶中的 原创发布于人人都是产品经理,未经许可,禁止转载
题图来自Unsplash,基于CC0协议