胡田
摘要:以空客A320系列飞机8C检例行工卡包编制为例,设计并实现了一种基于Python编程语言的工卡自动化编制方法。该方法能够有效减少人为因素在编制维修工卡中产生的影响,为开发低成本、高效率的工卡编制方法提供参考和借鉴。
关键词:A320飞机;维修工卡;编制
Keywords:A320 aircraft;maintenance task card;compiling
1 研究背景
维修工卡(Maintenance Task Card,MTC)也称维修工作单,是航空器运营人或维修单位编写、编译、核对和审批出版的维修工作文件,是航空器维修工作的基本依据[1]。目前国内航空维修单位使用的工卡编制方法有两种,一种是由符合S1000D标准的结构化手册系统自动生成[2],适用于机队规模较大、软件资金投入充足的中大型航空公司及附属维修单位,另一种是由工程技术人员参照维修技术文件手工编写,常见于规模较小的航空公司及第三方独立维修机构。
采取手工编卡方式时,由于人为因素的影响,工程技术人员会出现纰漏,这些纰漏可能成为导致航空器不安全事件的主要原因[3],因此,成本较低但准确高效的工卡编制方法将对飞行安全和维护效率起到重要作用。
Python是近年来流行的高级动态编程语言,具有语法简洁、学习曲线平稳、开发迅速等特点,广泛应用于数据分析、人工智能、自動化等领域。随着该语言的发展,大量开源工具库被开发出来,尤其是与办公自动化有关的工具,使低成本、高效率生成航空维修工卡成为可能。
2 算法思路
2.1 流程设计
下面以生成空客A320系列飞机8C检例行工卡包为例进行说明。首先按照局方要求,编制出例行工卡模板,至少应包含18项内容[1],下文中简称为要素。使用自动化的方式替代手工编卡,必须理清每一个工卡要素的信息流来源,手工编卡时这些要素的来源为MPD手册、AMM手册(一般情况下还包括SB/AD等资料,本文仅以AMM手册编制例行卡为例)、本公司标准(如必检项目清册)以及统一填写内容(如注册号)。对这些信息进行整理、提取,使之成为结构化的数据,再以特定格式自动输出到工卡模板中,即可得到一份完整有效的工卡。工卡自动生成流程设计如图1所示。
2.2 信息要素提取
1)提取逻辑分析
编制文件本质上是传递信息,编制MTC本质上是将手册内容与公司规范相结合。本例中需要使用的信息要素结构如表1所示。根据来源的不同,选择不同的方式提取要素信息,并将其存为结构化的数据。
2)MPD文件
对于空客AirN@v系统中给出的MPD文件,以XLS扩展名即电子表格的格式下载。使用Python的xlwings库能快捷读取电子表格信息,并以JSON格式保存以便下次访问。读取MPD文件中所有8C检涉及的例行维修项目,以嵌套字典的数据结构储存,键名分别是“MPD号”“工作类别”“工卡项目(标题)”“门槛间隔值”等,值分别取XLS表格中的数据。
3)AMM文件
对于空客AirN@v系统中给出的AMM文件,以PDF扩展名的格式下载。Python语言有许多支持PDF文件的工具库,如pdfminer、pypdf等,这里选用pdfplumber库是因其对读取表格信息的良好支持。对于表格形式的要素如“工具航材”“接近口盖”,使用extract_ table方法将信息存为列表再嵌套为字典;对于文字形式的要素“实施步骤”,首先使用extract_text方法提取PDF中的文字信息,再使用正则表达式将步骤分为“准备工作”“实施工作”“结束工作”,并按照AMTOSS(面向飞机维护工作的支持系统)规则标记不同的段落级别[5],以便调整格式。
4)公司标准和统一填写部分
公司标准指的是维修单位根据自身情况制定的标准,如工卡号的编号规则、必检项目清单、技术文件版本清册等。以电子表格作为信息来源,同样使用xlwings库提取信息;对于统一填写的内容,直接在代码中添加编辑字符串的函数。
各个来源的要素提取逻辑如图2所示。
2.3 信息要素输出
2.3.1 输出方式分析
类比手工编卡,将信息填入工卡模板中时,需要工程师处理下述几部分工作。
1)翻译
对于民航英文技术手册,波音空客之间虽略有差异[4],但均可依据ASDSTE100简化技术英语标准词汇实现绝大部分语句的自动翻译。剩余使用率不高的词汇可通过添加术语库的形式逐步完善,达到可接受的翻译准确率。本例中使用“百度翻译”的通用领域翻译API及自编术语库实现手册从英文至中文的自动翻译,经实践后确认准确率达到99%以上,见图3的示例。
2)格式
手工编制WORD文档形式的工卡时,格式调整的难点在于字体调整和多级段落的缩进对齐。使用Python-docx库中的add_paragraph和add_run方法,设置参数left_indent为前文提到的段落级别标记,即可实现多级段落自动缩进;设置font.element参数为所需字体、paragraph_format参数为所需段落对齐、对齐方式等,即可实现格式的自动化编辑。
3)图片
手工编卡时需要工程师查找参考图片并截图插入工卡尾部。本例中使用pymupdf库,查询并标记参考图所处的页码,将该页码的AMM手册截图并自动插入文档中。
2.3.2 输出方式设计
MTC的构成包括“正文前资料”和“正文”两大部分,其中正文前资料包含MTC识别信息、工程数据信息、构型管理信息,正文部分包含工作程序信息和施工记录信息,正文为MTC的核心内容。
1)正文前资料
以表格形式输出到MTC首页。先访问字典数据,然后按照一定逻辑编辑,最后通过docx库表格地址定位的方法输出到模板中,例如:
MTC编号=机型信息+厂家MTC编号+左右系统识别号;
MTC标题=MPD英文标题信息 +翻译API返回的中文;
MTC版本信息和改版日期=公司标准中的MTC版本信息+本次是否改版。
2)正文
“工具设备”“航材耗件”“区域及接近面板”:将字典内数据以表格的形式输出到MTC工作准备信息区域,使用docx库的add_table方法,若字典中为空,字符串则输出N/A。
“工作程序”:将字典中的工作程序文本用正则表达式切分为“准备工作”“步骤”“结束工作”,分别输出到模板中对应位置,使用docx库的add_paragraph和add_run方法,格式参数如上一小节所述。
“插图”:遍历字典中工作程序文本,正则表达式匹配范式为“Figure XX-XX-XX-XXX/SHEET X/X”,所处的页码即为参考图片在AMM手册的位置,使用pymupdf库的getPIxmap方法截图,再使用docx库的add_picture方法插入模板对应位置。
“施工记录栏”:如果“工作程序”的多级段落中正则表达式匹配到“subtaskxx-xx-xx”范式,该段落即为ATMOSS任务单元的起始,则在右侧记录栏添加一道横线作为工作者信息栏。检查者信息栏同理。
3 编程实现
程序逻辑如图4所示,由主函数引导数据提取、数据结构化、数据输出三个模块循环。主函数如图5所示,输出工卡示例如图6、图7所示。
1)主函数
原始数据文件导入,循环生成工卡。
2)數据提取模块
实现方式为pdfplumber库、xlwings库、pymupdf库、正则表达式及自编函数处理统一填写的字符串。
3)结构化数据字典
将各要素储存为嵌套字典的格式,如“MTC标题”的访问路径为“数据字典-MTC识别信息-MTC标题”。
4)数据输出模块
实现方式为docx库、网络翻译API、自编格式调整函数、图片插入函数。
4 结束语
由于缺乏大规模文件管理系统支持,中小型维修企业尤其是独立维修单位在工程文件管理上自动化程度偏低。基于Python的自动化工卡编制方法成本低、速度快、准确率高,是工程管理实践中良好的辅助工具。该系统已在实际工作中取得了良好的效果,在节约人力成本的同时,大幅减少了纰漏引起的人为差错。
参考文献
[1]中华人民共和国.航空维修工作单的编制 MT/T 3010-2006[S].
[2]邓文威,骆博雅.机务工程文件系统建设浅析[J].航空维修与工程,2015,293(11):88-89.
[3]史珂.民用航空器维修工作单编制常见问题分析[J].民航学报,2020(3):82-84.
[4]陈寿全.浅析空客和波音航空英语差异[J].成都航空职业技术学院学报,2019,35(2):84-88.
[5]谭斌.维修方案与S1000D定义标记元素对应分析[J].软件,2014,35(6).