伍依依,張入通,婁亞軍,徐士鐸,張 超
(北京機械工業(yè)自動化研究所有限公司,北京 100120)
近幾年,制造業(yè)在工業(yè)4.0時代的影響下正在蓬勃發(fā)展,相關(guān)的制造合同數(shù)量猛增,所以對合同的合理高效管理是十分有必要的。目前對制造合同比較普遍的管理方式是根據(jù)雙方簽訂的紙質(zhì)合同,人工手動編寫設(shè)備生產(chǎn)進度管理的Excel表格,這樣不僅降低了合同的有效利用率,也會增加平時工作的繁瑣程度,手動編寫的過程中也很容易出現(xiàn)錯誤和紕漏,所以傳統(tǒng)的合同管理方式顯然無法滿足現(xiàn)狀。
現(xiàn)如今,計算機技術(shù)被廣泛運用在各個行業(yè),并且國家大力倡導(dǎo)互聯(lián)網(wǎng)+的概念,在工業(yè)生產(chǎn)管理上也有其非常重要的作用,隨著時代的發(fā)展,技術(shù)也會不斷地革新創(chuàng)新,人們對工業(yè)自動化越來越好的要求及各種種類繁多的工程合同的出現(xiàn),讓傳統(tǒng)的制造合同管理系統(tǒng)開始向網(wǎng)絡(luò)化和自動化方向發(fā)展。Python在這之中就有著很廣泛的應(yīng)用,Python語言是一種解釋型高級程序語言,支持面向?qū)ο缶幊淘O(shè)計,對動態(tài)數(shù)據(jù)類型的處理非常方便,有不少實用性較強的應(yīng)用工具,而且有很多第三方的數(shù)據(jù)庫已經(jīng)被研發(fā)出來?;谝陨咸攸c,加上其語法簡單易懂,類庫豐富多樣,應(yīng)用在快速開發(fā)活動中非常方便,在當(dāng)下是一種被廣泛運用的腳本語言[1]。
本文主要通過分析一些供應(yīng)商加工制造合同,利用Python對加工制造合同里的關(guān)鍵信息進行提取,然后再自動生成相應(yīng)的生產(chǎn)進度管理表格,初步實現(xiàn)合同的自動化管理。
Python語言是一種解釋型高級程序語言,能夠面向?qū)ο缶幊淘O(shè)計,支持處理動態(tài)數(shù)據(jù)類型,已經(jīng)研發(fā)出很多第三方的數(shù)據(jù)庫和不少實用性較強的應(yīng)用工具。由于其語法簡潔、類庫豐富,適用于快速開發(fā)活動,已經(jīng)成為當(dāng)下較為流行的一種腳本語言[2]。
Python的最大的優(yōu)勢之一是其具有豐富并且功能全面的庫,能夠跨平臺使用并且具備很好的兼容性。模塊是在代碼量變得相當(dāng)大之后,為了將需要重復(fù)使用的有組織的代碼段放在一起,這部分代碼可以附加到現(xiàn)有程序中,附加的過程叫導(dǎo)入。接下來對需要用到的一些模塊進行介紹。
1)docx模塊
Docx模塊是在Python用來處理word文檔的模塊,其處理方式是面向?qū)ο蟮摹ocx模塊將word文檔中的段落,格式,文本等都看作對象,能夠編寫word文檔,也可以導(dǎo)入word文檔,對文檔中進行處理。
2)re模塊
正則表達式是一個Python庫,也是一種邏輯公式,主要用來對字符串進行操作。在Python中導(dǎo)入re模塊,就可以通過正則表達式對字符串進行匹配。這是一個很實用的庫,和文檔相關(guān)的很多操作都需要用到它。
正則表達式就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規(guī)則字符串”,這個“規(guī)則字符串”用來表達對字符串的一種過濾邏輯。對文檔中的關(guān)鍵信息進行提取就需要用到re模塊中的相關(guān)代碼。
3)Pandas模塊
Pandas模塊是Python用于數(shù)據(jù)導(dǎo)入及整理的模塊,經(jīng)常被用來對數(shù)據(jù)挖掘中的前期數(shù)據(jù)進行處理。Pandas是基于NumPy的一種工具,該工具是為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas納入了大量庫和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。同時Pandas還提供了表格的處理方式,它能夠?qū)xcel表格進行讀取,也能對表格中的數(shù)據(jù)進行處理,為了生成生產(chǎn)加工監(jiān)測系統(tǒng)的表格就需要用到這個功能。
要實現(xiàn)整個功能需要克服兩個難點,一是如何在整個合同中只提取自己想要的信息出來,這需要用到正則表達式的匹配功能;二是如何設(shè)計并自動生成相應(yīng)的設(shè)備生產(chǎn)管理表格,然后將文檔中的信息填寫進去?;诖?,為了實現(xiàn)整個功能包括了這三個部分:
1)確定好要提取的關(guān)鍵信息并進行匹配
2)確定好表格的格式
3)將word文檔中的表格內(nèi)容提取并匹配到生成的表格中
基于上訴,整個實現(xiàn)過程如圖1的程序流程圖所示,具體步驟如下:
圖1 程序流程圖
1)先導(dǎo)入相關(guān)的工程合同,對之前確定好的關(guān)鍵信息進行正則表達式匹配;
2)遍歷整個word文檔提取關(guān)鍵信息;
3)依據(jù)設(shè)備生產(chǎn)進度管理的需求和實際情況,設(shè)計表格并利用正則表達式進行匹配;
4)生成一個字典用來存儲表格內(nèi)容,然后讀取合同文檔中的相關(guān)設(shè)備表格,將信息一一對應(yīng)填入字典中,最后生成所需要的表格。
在vs code平臺上通過Python語言,實現(xiàn)對制造合同的關(guān)鍵信息提取,并生成設(shè)備生產(chǎn)進度管理的表格,其主要包括以下功能模塊。
利用docx庫中對文檔的編輯功能,將相應(yīng)的合同路徑導(dǎo)入,作為輸入。相關(guān)的代碼如下:
合同導(dǎo)入后根據(jù)需要確定好相應(yīng)的關(guān)鍵信息,利用正則表達式中的匹配規(guī)則進行匹配,遍歷整個合同,提取關(guān)鍵信息,利用append函數(shù)將其添加到新列表中,然后輸出。部分相關(guān)代碼如下所示:
#匹配要提取的關(guān)鍵信息
關(guān)鍵信息提取完成之后需要根據(jù)具體的實際需求設(shè)計并生成設(shè)備生產(chǎn)管理表格,為了實現(xiàn)這個功能,需要用到Pandas模塊,Pandas模塊是Python用于數(shù)據(jù)導(dǎo)入及整理的模塊。部分相關(guān)代碼如下所示:
#設(shè)計表頭
接下來根據(jù)對實驗結(jié)果的分析,檢驗程序是否具有實用性和可靠性。首先需要檢驗的是關(guān)鍵信息的提取功能是否能夠?qū)崿F(xiàn),在一份合同中最重要的就是合同名稱,甲方和乙方的信息,簽約的時間地點等,所以先就這些關(guān)鍵信息進行一個提取。選擇《合同-西南鋁氣墊爐前后配套設(shè)備開收卷機(浙江通力)》,合同的部分具體信息如圖2所示。
圖2 合同信息1
導(dǎo)入此合同后運行,得到圖3的結(jié)果,可以看到,按照規(guī)定提取出來的關(guān)鍵信息,比如制造名稱,委托方和承制方等信息和word文檔里是完全匹配的,而且能夠根據(jù)需求做出相應(yīng)的改變,保證了其準(zhǔn)確性和靈活性。
圖3 信息提取結(jié)果
圖4合同信息2是這份合同中承制方和供貨方所負責(zé)的一些設(shè)備情況,通過表格可以看到有圖號,設(shè)備名稱,數(shù)量等信息。
圖4 合同信息2
在這份合同中委托方負責(zé)供貨,承制方負責(zé)制造,裝配,負責(zé)安裝,售后服務(wù)等。所以對生成的表格的要求不僅僅是能夠?qū)ord文檔中的信息提取出來,還需要添加表頭的內(nèi)容,供承制方后期填寫,讓表格實現(xiàn)生產(chǎn)加工監(jiān)測的功能。觀察圖5,發(fā)現(xiàn)表格能夠滿足上訴提到的要求,通過程序?qū)⒏鱾€設(shè)備的信息調(diào)取出來,同時表頭部分還包含了設(shè)備的其他信息,供承制方更新設(shè)備之后的狀態(tài),讓表格的部分也根據(jù)實際的生產(chǎn)設(shè)備管理要求進行了自動匹配。
圖5 表格生成結(jié)果
本文針對目前工程項目中生產(chǎn)加工監(jiān)測中出現(xiàn)的繁瑣情況,希望能夠通過工程合同做一個連接,對合同的信息進行有選擇的提取和有效利用,減少加工監(jiān)測管理上面臨的不便。所以利用Python中的相關(guān)知識,設(shè)計這樣一個既能夠?qū)こ毯贤M行信息提取又能夠生成對設(shè)備生產(chǎn)加工進度進行監(jiān)測的系統(tǒng),對未來的工程合同管理帶來非常大的便利,將自動化辦公的思想也沿用到生產(chǎn)加工中設(shè)備的管理上。這樣不僅可以節(jié)約人力成本和節(jié)省時間,也能夠減少紕漏,而且又能夠根據(jù)需求進行個性化的改變和設(shè)計,應(yīng)用范圍廣,實用性強。