淺談題庫試題錄入之Word自動識別
編輯導語:題庫錄入對于題庫的質與量都具有重要意義,Word文件導入是效率較高的錄入方式,本文將重點介紹Word文件自動識別的具體實現方法,一起來學習一下吧~
一、前言
試題的錄入功能對于題庫來說是核心功能,直接關系到題庫的質與量。 錄題功能是否高效直接影響題庫中題目數量的多少,同時也決定著題目的質量的高低。
目前的錄題方式以手動錄入和文件導入為主,而文件導入格式又以Word和Excel為主。手動錄入和Excel文件導入這兩種錄入方式效率低,對于存在公式的試題處理十分麻煩,而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協議
您好,想合作如何聯系您
通過這種方法就可以識別出word的公式了嗎? 還有表格是否可以識別?
如何通過程序實現難度、知識點這些屬性的標簽呢?
兩種方式:
1. 人為手動在Word中增加相應的標簽,入庫時程序校驗識別
2. 題目先入庫,再在題庫里給題目打難度和知識點等標簽
聽君一席話,聽君一席話。自動識別體現在哪里?
整個識別過程除了簡單的人為預處理,其它的都是通過程序實現的
拋開內容不說,你說的都對。