胡田
摘要:以空客A320系列飛機(jī)8C檢例行工卡包編制為例,設(shè)計(jì)并實(shí)現(xiàn)了一種基于Python編程語言的工卡自動化編制方法。該方法能夠有效減少人為因素在編制維修工卡中產(chǎn)生的影響,為開發(fā)低成本、高效率的工卡編制方法提供參考和借鑒。
關(guān)鍵詞:A320飛機(jī);維修工卡;編制
Keywords:A320 aircraft;maintenance task card;compiling
1 研究背景
維修工卡(Maintenance Task Card,MTC)也稱維修工作單,是航空器運(yùn)營人或維修單位編寫、編譯、核對和審批出版的維修工作文件,是航空器維修工作的基本依據(jù)[1]。目前國內(nèi)航空維修單位使用的工卡編制方法有兩種,一種是由符合S1000D標(biāo)準(zhǔn)的結(jié)構(gòu)化手冊系統(tǒng)自動生成[2],適用于機(jī)隊(duì)規(guī)模較大、軟件資金投入充足的中大型航空公司及附屬維修單位,另一種是由工程技術(shù)人員參照維修技術(shù)文件手工編寫,常見于規(guī)模較小的航空公司及第三方獨(dú)立維修機(jī)構(gòu)。
采取手工編卡方式時,由于人為因素的影響,工程技術(shù)人員會出現(xiàn)紕漏,這些紕漏可能成為導(dǎo)致航空器不安全事件的主要原因[3],因此,成本較低但準(zhǔn)確高效的工卡編制方法將對飛行安全和維護(hù)效率起到重要作用。
Python是近年來流行的高級動態(tài)編程語言,具有語法簡潔、學(xué)習(xí)曲線平穩(wěn)、開發(fā)迅速等特點(diǎn),廣泛應(yīng)用于數(shù)據(jù)分析、人工智能、自動化等領(lǐng)域。隨著該語言的發(fā)展,大量開源工具庫被開發(fā)出來,尤其是與辦公自動化有關(guān)的工具,使低成本、高效率生成航空維修工卡成為可能。
2 算法思路
2.1 流程設(shè)計(jì)
下面以生成空客A320系列飛機(jī)8C檢例行工卡包為例進(jìn)行說明。首先按照局方要求,編制出例行工卡模板,至少應(yīng)包含18項(xiàng)內(nèi)容[1],下文中簡稱為要素。使用自動化的方式替代手工編卡,必須理清每一個工卡要素的信息流來源,手工編卡時這些要素的來源為MPD手冊、AMM手冊(一般情況下還包括SB/AD等資料,本文僅以AMM手冊編制例行卡為例)、本公司標(biāo)準(zhǔn)(如必檢項(xiàng)目清冊)以及統(tǒng)一填寫內(nèi)容(如注冊號)。對這些信息進(jìn)行整理、提取,使之成為結(jié)構(gòu)化的數(shù)據(jù),再以特定格式自動輸出到工卡模板中,即可得到一份完整有效的工卡。工卡自動生成流程設(shè)計(jì)如圖1所示。
2.2 信息要素提取
1)提取邏輯分析
編制文件本質(zhì)上是傳遞信息,編制MTC本質(zhì)上是將手冊內(nèi)容與公司規(guī)范相結(jié)合。本例中需要使用的信息要素結(jié)構(gòu)如表1所示。根據(jù)來源的不同,選擇不同的方式提取要素信息,并將其存為結(jié)構(gòu)化的數(shù)據(jù)。
2)MPD文件
對于空客AirN@v系統(tǒng)中給出的MPD文件,以XLS擴(kuò)展名即電子表格的格式下載。使用Python的xlwings庫能快捷讀取電子表格信息,并以JSON格式保存以便下次訪問。讀取MPD文件中所有8C檢涉及的例行維修項(xiàng)目,以嵌套字典的數(shù)據(jù)結(jié)構(gòu)儲存,鍵名分別是“MPD號”“工作類別”“工卡項(xiàng)目(標(biāo)題)”“門檻間隔值”等,值分別取XLS表格中的數(shù)據(jù)。
3)AMM文件
對于空客AirN@v系統(tǒng)中給出的AMM文件,以PDF擴(kuò)展名的格式下載。Python語言有許多支持PDF文件的工具庫,如pdfminer、pypdf等,這里選用pdfplumber庫是因其對讀取表格信息的良好支持。對于表格形式的要素如“工具航材”“接近口蓋”,使用extract_ table方法將信息存為列表再嵌套為字典;對于文字形式的要素“實(shí)施步驟”,首先使用extract_text方法提取PDF中的文字信息,再使用正則表達(dá)式將步驟分為“準(zhǔn)備工作”“實(shí)施工作”“結(jié)束工作”,并按照AMTOSS(面向飛機(jī)維護(hù)工作的支持系統(tǒng))規(guī)則標(biāo)記不同的段落級別[5],以便調(diào)整格式。
4)公司標(biāo)準(zhǔn)和統(tǒng)一填寫部分
公司標(biāo)準(zhǔn)指的是維修單位根據(jù)自身情況制定的標(biāo)準(zhǔn),如工卡號的編號規(guī)則、必檢項(xiàng)目清單、技術(shù)文件版本清冊等。以電子表格作為信息來源,同樣使用xlwings庫提取信息;對于統(tǒng)一填寫的內(nèi)容,直接在代碼中添加編輯字符串的函數(shù)。
各個來源的要素提取邏輯如圖2所示。
2.3 信息要素輸出
2.3.1 輸出方式分析
類比手工編卡,將信息填入工卡模板中時,需要工程師處理下述幾部分工作。
1)翻譯
對于民航英文技術(shù)手冊,波音空客之間雖略有差異[4],但均可依據(jù)ASDSTE100簡化技術(shù)英語標(biāo)準(zhǔn)詞匯實(shí)現(xiàn)絕大部分語句的自動翻譯。剩余使用率不高的詞匯可通過添加術(shù)語庫的形式逐步完善,達(dá)到可接受的翻譯準(zhǔn)確率。本例中使用“百度翻譯”的通用領(lǐng)域翻譯API及自編術(shù)語庫實(shí)現(xiàn)手冊從英文至中文的自動翻譯,經(jīng)實(shí)踐后確認(rèn)準(zhǔn)確率達(dá)到99%以上,見圖3的示例。
2)格式
手工編制WORD文檔形式的工卡時,格式調(diào)整的難點(diǎn)在于字體調(diào)整和多級段落的縮進(jìn)對齊。使用Python-docx庫中的add_paragraph和add_run方法,設(shè)置參數(shù)left_indent為前文提到的段落級別標(biāo)記,即可實(shí)現(xiàn)多級段落自動縮進(jìn);設(shè)置font.element參數(shù)為所需字體、paragraph_format參數(shù)為所需段落對齊、對齊方式等,即可實(shí)現(xiàn)格式的自動化編輯。
3)圖片
手工編卡時需要工程師查找參考圖片并截圖插入工卡尾部。本例中使用pymupdf庫,查詢并標(biāo)記參考圖所處的頁碼,將該頁碼的AMM手冊截圖并自動插入文檔中。
2.3.2 輸出方式設(shè)計(jì)
MTC的構(gòu)成包括“正文前資料”和“正文”兩大部分,其中正文前資料包含MTC識別信息、工程數(shù)據(jù)信息、構(gòu)型管理信息,正文部分包含工作程序信息和施工記錄信息,正文為MTC的核心內(nèi)容。
1)正文前資料
以表格形式輸出到MTC首頁。先訪問字典數(shù)據(jù),然后按照一定邏輯編輯,最后通過docx庫表格地址定位的方法輸出到模板中,例如:
MTC編號=機(jī)型信息+廠家MTC編號+左右系統(tǒng)識別號;
MTC標(biāo)題=MPD英文標(biāo)題信息 +翻譯API返回的中文;
MTC版本信息和改版日期=公司標(biāo)準(zhǔn)中的MTC版本信息+本次是否改版。
2)正文
“工具設(shè)備”“航材耗件”“區(qū)域及接近面板”:將字典內(nèi)數(shù)據(jù)以表格的形式輸出到MTC工作準(zhǔn)備信息區(qū)域,使用docx庫的add_table方法,若字典中為空,字符串則輸出N/A。
“工作程序”:將字典中的工作程序文本用正則表達(dá)式切分為“準(zhǔn)備工作”“步驟”“結(jié)束工作”,分別輸出到模板中對應(yīng)位置,使用docx庫的add_paragraph和add_run方法,格式參數(shù)如上一小節(jié)所述。
“插圖”:遍歷字典中工作程序文本,正則表達(dá)式匹配范式為“Figure XX-XX-XX-XXX/SHEET X/X”,所處的頁碼即為參考圖片在AMM手冊的位置,使用pymupdf庫的getPIxmap方法截圖,再使用docx庫的add_picture方法插入模板對應(yīng)位置。
“施工記錄欄”:如果“工作程序”的多級段落中正則表達(dá)式匹配到“subtaskxx-xx-xx”范式,該段落即為ATMOSS任務(wù)單元的起始,則在右側(cè)記錄欄添加一道橫線作為工作者信息欄。檢查者信息欄同理。
3 編程實(shí)現(xiàn)
程序邏輯如圖4所示,由主函數(shù)引導(dǎo)數(shù)據(jù)提取、數(shù)據(jù)結(jié)構(gòu)化、數(shù)據(jù)輸出三個模塊循環(huán)。主函數(shù)如圖5所示,輸出工卡示例如圖6、圖7所示。
1)主函數(shù)
原始數(shù)據(jù)文件導(dǎo)入,循環(huán)生成工卡。
2)數(shù)據(jù)提取模塊
實(shí)現(xiàn)方式為pdfplumber庫、xlwings庫、pymupdf庫、正則表達(dá)式及自編函數(shù)處理統(tǒng)一填寫的字符串。
3)結(jié)構(gòu)化數(shù)據(jù)字典
將各要素儲存為嵌套字典的格式,如“MTC標(biāo)題”的訪問路徑為“數(shù)據(jù)字典-MTC識別信息-MTC標(biāo)題”。
4)數(shù)據(jù)輸出模塊
實(shí)現(xiàn)方式為docx庫、網(wǎng)絡(luò)翻譯API、自編格式調(diào)整函數(shù)、圖片插入函數(shù)。
4 結(jié)束語
由于缺乏大規(guī)模文件管理系統(tǒng)支持,中小型維修企業(yè)尤其是獨(dú)立維修單位在工程文件管理上自動化程度偏低?;赑ython的自動化工卡編制方法成本低、速度快、準(zhǔn)確率高,是工程管理實(shí)踐中良好的輔助工具。該系統(tǒng)已在實(shí)際工作中取得了良好的效果,在節(jié)約人力成本的同時,大幅減少了紕漏引起的人為差錯。
參考文獻(xiàn)
[1]中華人民共和國.航空維修工作單的編制 MT/T 3010-2006[S].
[2]鄧文威,駱博雅.機(jī)務(wù)工程文件系統(tǒng)建設(shè)淺析[J].航空維修與工程,2015,293(11):88-89.
[3]史珂.民用航空器維修工作單編制常見問題分析[J].民航學(xué)報,2020(3):82-84.
[4]陳壽全.淺析空客和波音航空英語差異[J].成都航空職業(yè)技術(shù)學(xué)院學(xué)報,2019,35(2):84-88.
[5]譚斌.維修方案與S1000D定義標(biāo)記元素對應(yīng)分析[J].軟件,2014,35(6).