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