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