鄧鵬杰 張錫 馮向萍



摘要:畢業論文是高等院校教育計劃的重要部分,其格式要求非常嚴格,一直以來都是人工審查的,費時費力。在對word文檔的結構及其具體實現進行深入研究的基礎上,使用Java實現了基于Apache POI的論文格式檢錯及部分修改軟件。該軟件將待檢測論文格式和預先設定的論文格式進行比較,實現對論文的內容與格式檢測,以及部分格式的自動修改,不能自動修改的則生成詳細的錯誤說明文件。
關鍵詞:畢業論文;POI;格式檢錯;Java;Word;XML
中圖分類號:TP311 文獻標識碼:A 文章編號:1006-8228(2020)07-50-03
0引言
隨著網絡技術與信息化技術的普及與發展,各高校的學生已普遍使用MicrosoftOfficeWord文檔完成畢業論文的撰寫,每所高校的教務管理部門對畢業論文的撰寫格式和文獻的引用方面都有明確的要求,長期以來,論文格式的檢查主要由學生本人、畢業設計指導教師或者專職人員審核,這種手工操作方式費時費力,所以開發一個可以自動進行格式檢錯與修改的軟件是做好人工論文格式檢查的最優解決方案。
2017年葉秀云,劉德正的研究生學位論文格式自動檢測系統設計與實現研究了鑒于論文格式檢測的背景與現狀,但是沒有對論文的格式錯誤進行指出與部分糾正。在前人研究基礎上,本文使用POI工具包開發了一個可以對確定論文格式的畢業論文進行格式檢測與部分修改的軟件,為論文格式審查工作人員減輕負擔。
1Word文檔的分析及研究
目前Word文檔使用的是基于微軟提出的國際文檔格式標準OOXML為底層資源存儲的,為了便于分析,可以直接把docx文件以zip方式解壓,解壓出來的文件結構如圖所示。其中為本文用戶存儲的數據主要是在word文件下,用戶文字與排版數據主要在document,xml文件中,其他xml文件是輔助document.xml排版的文件,其內部資源結構如圖l所示。
整個document.xml文件內容是層級分布嘲的,按照最近原則來對文本的內容與樣式進行修飾。
document下一級是p標簽或tbl標簽。tbl標簽下包含的是表格,p下包含的是文本內容及文本修飾。p標簽內有pStyle,對整個p進行修飾,然后可能會有hyperlink標簽,此級標簽一般將本p的內容封裝,有此標簽,則說明此p是對下文的引用,即:可能是文檔的目錄。p下一級是r級。下面有t標簽一文字內容,instrText標簽一引用的標記文本,fldChar標簽一規定目錄后面連續多個點的格式,成對的bookmarkStart與bookmarkEnd-用于和引用對應,drawing標簽一圖片資源,obiect標簽一其他內容。
由于所有的內容與修飾標簽是按照層級的結構組織起來的,而且是按照最近原則來修飾的。在做檢測模塊時,可以使用層級向上檢測的方法檢測最終的顯示字體,在做修改模塊時,可以直接修改最底層層級上的的屬性從而達到修改最終顯示字體的目的。
2相關技術說明
目前Word使用的OOXML文件的格式來組織文檔的資源與內容的,所以本文在實現對論文的格式檢測的時候,需要使用到對OOXMLt21文件進行解析的工具。Apache維護的POI可以對OOXML進行解析,還可以提供直接解析Word的一些工具,支持XML塊兒修改等相關處理,在獲取到源文檔的路徑之后可以使用POI提供的XWPFDocument類將其所有的內容傳到Java程序中的某個對象,在獲取到文檔的對象之后可以使用POI提供的其他工具深層解析與分析以及相關處理。POI是完全開源的,它為開發者提供了一套處理OOXML的實用工具,可以讓開發者方便地對上層的Word文檔內容進行更高級的處理。由于它的開源,可以基于原項目繼續深入探索并添加原項目沒有的操作為本文所用。
3核心功能實現步驟
用戶可以某種方式將自己的文件上傳到目標處理的平臺,目標平臺接收到用戶上傳的文檔之后開始調用核心處理邏輯對文檔進行處理。
本軟件首先從目錄檢出每條目錄條目,之后將目錄使用其中的鏈接標簽對應到正文中去,當用戶生成的目錄是標準的目錄時,即可對正文內容進行劃分,之后再進行后續的各種板塊的正確性檢測與相關修改,最后生成提示文檔反饋給用戶,用來幫助用戶撰寫規范的論文,從而在老師這邊減少一部分審閱負擔。
本軟件的大部分邏輯的實現是基于POI包中帶的XML解析工具,部分使用XWPF提供的API接口實現,整個實現邏輯框架如圖2所示。
(1)若目錄中的標題與正文的標題無法匹配,則生成目錄錯誤報告,在報告中加入修改說明,直到修改為正確目錄,在進行以下步驟。
(2)若目錄匹配成功,將文章中的正文段以及標題劃分出來,直接使用目標格式與原文檔對比,部分可以直接使用目標格式覆蓋,對文本段的rpr標簽下的rStyle內容進行修改即可達到對最終顯示文本格式的修改。
(3)從文檔中檢測表格與圖,在畢業論文中表名和圖名是在表和圖的固定位置,當檢測到表和圖的時候若在相應位置沒有發現“表”與“圖”文字則加入在反饋條目中加入此圖或表的警告條目。
(4)畢業論文的表格采用的都是三線表格式,在Word文檔中檢測到表的時候直接使用三線表格式對表進行糾正。
(5)畢業論文使用的是GB/T 7714-1987標準的參考文獻引用格式,若正確使用了此標準的引用,則使用符合此標準的正則匹配可以正確通過,若未通過,則說明引用有誤,將錯誤引用條目加入警告條目。
(6)最終從各個模塊中的反饋條目中提取反饋條目生成反饋報告文件。
4測試結果及分析
4.1運行成效
圖3是運行后的回饋文件,可見輸出邏輯清晰方便學生糾錯。
使用100份真實的大學生畢業論文來用于檢測,其中20份結果符合預期情況,80份不符合預期情況,主要問題在于:目錄不符合要求,本軟件可以在有限范圍內,輔助學生修改為正確目錄。在完成目錄修改后,測試結果如表l所示。
由于WORD的底層實現的復雜程度較高,有以下幾種情況無法進行處理。
(1)Word的底層實現中,圖片有多種實現方式,且同種效果的底層實現可能是不同的,對于未知的實現方式,不能處理。
(2)在已知的圖片實現方式中,由于同種效果的底層實現不同,不能兼容所有的情況。
(3)參考文獻采用正則表達式來匹配,對于部分英文文獻的引用無法進行匹配。
4.2運行效率
運行時間:60個樣本使用時間9780ms;40個樣本使用時間6297ms;20個樣本使用時間4655ms;10個樣本使用時間3245ms。由運行數據可以看到隨著樣本數目的增加所需要的時間以同數量級增加,其所需時間與具體的文件大小相關,平均大小1.6MB平均使用時間163ms。
5總結
此項目在實現中遇到了不少問題,在前期本文對整個項目實現的邏輯只是有比較模糊的構建,在具體實現上還是沒有非常明確的規劃,在不斷查閱資料、翻閱官方文檔過程中,首先對Word文檔的結構與調用邏輯有了相對較清晰的認識,在理解了整個Word文檔邏輯的基礎上,本文重新對實現邏輯與實現步驟進行規整。在程序完成之后再進行大量測試,對更廣泛的格式錯誤類型進行適配,目前可以對大多數文檔進行處理,且與預期基本一致,若使用此軟件對學生論文進行處理可以極大減輕教師的論文修改負擔。
通過實現此項目我們發現,現在的Word文件的內部組織格式與結構還需要進一步的優化,要是有更加清晰且結構分明的框架與組織結構,將會更加方便開發者對Word文檔的內容進行各種邏輯處理,同時方便更多使用Word的用戶。進而對未來的電子辦公系統有更好的推進作用。