一种药品申报文件的对比分析方法、系统和存储介质与流程

文档序号:25281753发布日期:2021-06-01 17:28阅读:70来源:国知局
本发明涉及数据处理和分析
技术领域
:,尤其涉及一种药品申报文件的对比分析方法、系统和存储介质。
背景技术
::近些年来国家对药企的监管越来越严,出台的法规越来越多,执行也是越来越严格。按照法规要求,药企在申报新药的时候需要提交数量庞大的文档资料,所有提交的文档都必须是真实合规的。如果文档中的内容出现前后不一致等情况,将导致整个产品的合规性得不到满足,企业将被处以整改等强制措施,药品的上市将会受到严重影响。因此企业内会设有专门团队来负责所有文档的审核;若后续出现对实验方法或使用物料的调整,原先审核通过的文档也必需一一修改,因此药品申报文档的审核是件非常细致且极其重要的工作。在药品申报材料处理工作中,经常需要处理大量的文档,而这些文档中又存在大量表格,这些表格具有相似度高,相互引用、嵌套的情况,同时由于处理工作量大等原因,经常需要多个用户协作进行文档编辑。例如,药企研发机构在准备整理药品申报资料时存在大量文档,文档中存在大量表格。这些表格存在相似度高、相互引用、和嵌套等各类情况。同时,由于这些关联表格由多人人为整理,往往存在对应单元格内容不一致、表格行列丢失、表格行列顺序错乱等各种错误情况。但是由于表格众多,而其分布在大量不同文档中,这就造成后期人为检查的工作量极大,且上述错误情况难以发现,最终直接导致资料错误,合规性需求难以满足,严重拖延了药品申报进度。技术实现要素:本发明针对现有技术中的不足,提供了一种药品申报文件的对比分析方法,包括如下步骤:s1,获取待分析的药品申报文件内表格的各单元格坐标和内容,识别内容一致单元格;s2,获取两表格的最小表格矩阵,所述最小表格矩阵为包含有该表格内所有内容一致单元格的最小矩形表格区域;s3,根据两表格的最小表格矩阵间差异与在对应表格中的位置,获取异常单元格组,所述异常单元格组包括但不限于内容不一致单元格坐标和内容,具体包括:当第一表格最小表格矩阵的行列数和第二表格最小表格矩阵的行列相同时,遍历最小表格矩阵的每一单元格,比较两最小表格矩阵对应位置的内容是否相等,若相等则不记录,否则记录为第一异常单元格组;若第一表格最小表格矩阵的行数和列数也相同,则将第一表格转置形成第一转置表格;将第二表格的最小表格矩阵与所述第一转置表格的最小表格矩阵进行比较并识别记录内容不一致单元格作为第二异常单元格组;将第一异常单元格组和第二异常单元格组中内容一致单元格数量较小的作为两表格的异常单元格组。优选的,所述步骤s2包括:对药品申报文件内各表格结构化数据逐对进行比较,获取两表格中的内容一致单元格的坐标及内容,判断两表格是否存在关联关系,对存在关联关系的两表格进行后续异常单元格组的分析。优选的,所述步骤s2具体包括:对两表格结构化数据逐对进行比较,获取两表格中的内容一致单元格的坐标及内容;根据内容一致单元格的数量和/或分布位置来判断所述两表格的关联状态。优选的,述步骤根据内容一致单元格的数量和/或分布位置来判断所述两表格的关联状态,具体包括:获取各表格的内容一致单元格数量和其在表格中的分布位置;获取各表格的最小表格矩阵,所述最小表格矩阵为包含有该表格内所有内容一致单元格的最小矩形表格区域;当内容一致单元格数量大于预设值时,和/或内容一致单元格数量的两倍要大于所在两表格所包含单元格数量之和的预设比例时,和/或内容一致单元格数量大于其所在最小表格矩阵内的单元格总数的预设比例时,判断该两表格为具有关联关系的关联表格对。优选的,所述步骤s3还包括:当第二表格最小表格矩阵经转置后与第一表格最小表格矩阵的行数和列数均相等时,将第二表格转至形成第二转置表格;比较第二转置表格和第一表格的两最小表格矩阵对应位置的内容是否相等,若相等则不记录所述异常单元格组,否则记录异常单元格组。优选的,所述步骤s3还包括:若第二转置表格和第一表格的两最小表格矩阵存在内容不一致单元格,则将所述内容不一致单元格的坐标和内容记录到第一、二表格对应的异常单元格组中。优选的,所述第一表格和第二表格位于药品申报文件的不同电子文档内。本发明还公开了一种药品申报文件的对比分析系统,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述任一所述药品申报文件的对比分析方法的步骤。本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如上述任一所述药品申报文件的对比分析方法的步骤。本发明公开的药品申报文件的对比分析方法通过分别获取待分析的第一表格和第二表格内的单元格坐标和内容,识别内容一致单元格,并通过两表格对进行后续对比分析,大大减少对比分析的计算量。在对两表格进行对比分析过程中,充分考虑小表格嵌入大表格,表格行列转置,表格行列顺序错乱,表格内部及四周行列缺失等各类情况,根据两表格各情况状态分别进行分析,找出两表格间的不一致单元格坐标及位置。最后异常结果处理步骤可以通过排除行列顺序错乱和行列缺失产生的不一致单元格,根据找出的真实不一致单元格、及不一致单元格内容中的不一致字符集合,筛选出真正异常的表格对以及不一致单元格内不一致字符集合,最终减少呈现给用户的结果数量,便于用户快速排查发现错误、异常表格。可以实现对两个表格的对比分析,发现和定位关联表格不一致的单元格及单元格内容差异。适用于需要处理大量相似表格,表格多处嵌套、复用的场景,可以减少人工检查表格一致性的大量重复性工作,避免关联表格对应单元格内容不一致的错误。本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。附图说明此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1为本实施例公开的药品申报文件的对比分析方法的流程示意图。图2为本实施例公开的步骤s21的具体流程示意图。图3为本实施例公开的待分析表格的转化示意图。图4为本实施例公开的步骤s212的具体流程示意图。图5为本实施例公开的步骤s3的具体流程示意图。图6为本实施例公开的步骤s32在状态一时的具体流程示意图。图7为本实施例公开的步骤s32在状态二时的具体流程示意图。图8为本实施例公开的步骤s32在状态三一情形时的具体流程示意图。图9为本实施例公开的步骤s32在状态三另一情形时的具体流程示意图。图10为本实施例公开的步骤s32在状态四一情形时的具体流程示意图。图11为本实施例公开的步骤s32在状态四另一情形时的具体流程示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。在本发明中,除非另有明确的规定和限定,第一特征在第二特征之“上”或之“下”可以包括第一和第二特征直接接触,也可以包括第一和第二特征不是直接接触而是通过它们之间的另外的特征接触。而且,第一特征在第二特征“之上”、“上方”和“上面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”包括第一特征在第二特征正下方和斜下方,或仅仅表示第一特征水平高度小于第二特征。除非另作定义,此处使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本发明专利申请说明书以及权利要求书中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”或者“一”等类似词语也不表示数量限制,而是表示存在至少一个。目前各类企业例如药企研发机构等在准备整理药品申报资料时存在大量文档,文档中存在大量表格。而这些表格中普遍存在相似度高、相互引用、嵌套的情况。由于这些关联表格往往是由多人人为整理,导致在这些表格中不开避免的出现对应单元格内容不一致、表格丢失行列、行列顺序错乱等各类错误情况。另外由于表格众多,且分布在大量不同文档中,后期人为检查的工作量极大,使得上述错误情况难以被完整的、快速的发现,导致资料错误,材料合规性需求难以满足。针对这些技术问题,如附图1所示,本实施例公开了一种药品申报文件的对比分析方法,具体包括:步骤s1,获取待分析的药品申报文件内表格的各单元格坐标和内容,识别内容一致单元格。具体的,获取待分析的两份表格的各单元格坐标和内容,分别生成各表格单元格坐标与内容相对应的表格结构化数据。其中该表格结构化数据可以包括表格所属文档信息、表格在文档中位置、表格内单元格坐标、和/或单元格内容等信息。其中第一表格和第二表格可以位于不同电子文档内,也可以位于同一电子文档内。通过获取表格各单元格的坐标和内容,将每个表格处理成单元格坐标和单元格内容一一对应的数据结构。具体的,可以通过现有工具、方法读取word、excel、pdf等各种格式文档中的表格,遍历表格的每一个单元格,将所有单元格的坐标以空格为分隔符,形成一个字符串;所有单元格的内容也以空格为分隔符,形成一个字符串,要保证单元格的坐标与内容一一对应。在一些具体实施例中,由于表格存在合并单元格的情况,在读取表格各单元格坐标时,要确保同一行单元格的行坐标相等,同一列单元格的列坐标相等。对于这类情况中的合并单元格产生的缺失单元格坐标,可以用空内容补充,可以是对应坐标的单元格内容为空。具体的,每个表格可以形成如下形成的数据结构,{stringfileid;//表格所在文档的idintegerlocation;//表格在文档中的位置stringcoordinate;//表格所有单元格的坐标信息stringcontent;//表格所有单元格的内容信息}其中fileid和location字段用于标明表格所属文档及其在该文档中的位置,用于向用户呈现表格分析对比结果时定位表格。coordinate和content字段为单元格坐标及内容信息,用于表格关联分析和对比分析。表格结构化后的数据可直接用于后续分析,但当表格数量很大时,结构化数据将占用大量内存;其为了避免每次分析都进行结构化运算,推荐将表格结构化数据进行持久化。可选择任何关系型、非关系型数据库,如mysql、sqlserver、oracle、mongodb、elasticsearch等进行表格结构化数据的持久化。通过提取表格单元格坐标和内容形成表格结构化数据,确保同一行列单元格的行列坐标一致,为后续分析做准备。步骤s2,获取两表格的最小表格矩阵,所述最小表格矩阵为包含有该表格内所有内容一致单元格的最小矩形表格区域。在一些具体实施例中,该步骤还包括:步骤s21,对各表格结构化数据逐对进行比较,获取两表格中的内容一致单元格的坐标及内容,判断两表格是否存在关联关系。该步骤用于筛选出内容关联的表格以便进行下一步的对比分析,对非关联表格当作是完全不同的两个表格,不再进行对比分析。即当两个表格不存在关联关系时,可以认为是正常的不同表格,无需将没有关联关系的不同表格间的区别呈现给用户。因为本发明所公开的方法是用于向用户标识那些在不同文档或同一文档的不同表格中内容本应相同但由于人为错误而可能产生了不一致的单元格。如附图2所示,所述步骤s21具体包括:步骤s211,对两表格结构化数据逐对进行比较,获取两表格中的内容一致单元格的坐标及内容。步骤s212,根据内容一致单元格的数量和/或分布位置来判断所述两表格的关联状态。如附图4所示,其中所述步骤s212还包括:步骤s2121,获取各表格的内容一致单元格数量和其在表格中的分布位置步骤s2122,获取各表格的最小表格矩阵,所述最小表格矩阵为包含有该表格内所有内容一致单元格的最小矩形表格区域。具体的,以a、b两个表格为例,取a表格结构化数据,将coordinate和content字段分别解析为两个链表,coordinatelista和contentlista。两个链表相应索引位置的坐标和内容一一对应。同样地,取b表格结构化数据解析得到coordinatelistb和contentlistb。遍历链表contentlista和contentlistb,找到其中相等的元素;分别根据内容元素在coordinatelista和coordinatelistb中找到相应的坐标。a、b表格内容一致单元格的坐标可以形成一个字典samecell,key值为a表格一致单元格坐标,value为b表格一致单元格坐标。将a、b表格转换为矩阵,如附图3所示,以a表格为例,图3所示表格为原始表格矩阵,根据坐标初始化a表格矩阵为原始矩阵,各元素值初始为0。根据字典samecell,将一致单元格坐标位置的元素改写为1,以右下角1的坐标形成大矩阵。去除大矩阵上部和左侧全为0的行列得到最小表格矩阵和最小表格矩阵首元素坐标。具体的,虚线边框所包围的多个单元格组成大矩阵,灰色填充的多个单元格组成最小表格矩阵。最小表格矩阵可以看做是嵌入大表格的小表格。各矩阵坐标从0开始,上图中最小表格矩阵第一个元素[0,0]在大矩阵中的坐标为[2,2],即最小表格矩阵首元素坐标。步骤s2123,当内容一致单元格数量大于预设值时,和/或内容一致单元格数量的两倍要大于所在两表格所包含单元格数量之和的预设比例时,和/或内容一致单元格数量大于其所在最小表格矩阵内的单元格总数的预设比例时,判断该两表格为具有关联的关联表格对。具体的,得到表格a、b的矩阵后,判断两个表格a、b是否是关联表格。其中关联表格的判断规则可以根据经验和实际情况进行制定。本实施例中预设的判断规则可以为:两个表格至少要有n个单元格内容一致,即最小表格矩阵中1的个数大于n。一致单元格数的二倍要大于两表格单元格数和的百分之m。a表格和b表格的最小表格矩阵的行列数要大于1,且1的个数要大于最小表格矩阵元素总数的百分之l。只有满足上面的一个或多个规则才是具有关联关系的关联表格,否则可能是两个无关表格。在本实施例中,其中n可以优先选择推荐值为3,m推荐值为50,l推荐值为50,当然也可根据具体文档情况另行设定。通过对两表格的最小表格矩阵来进行分析,可以充分的考虑到部分表格内容嵌套的情形,即考虑小表格嵌入其余大表格中的情况下,只有嵌入的小表格内容才与另一表格具有关联关系,此时即需要通过获取最小表格矩阵的形式来分辨出该表格内嵌入的小表格所在区域,然后再将该嵌入表格区域与其它表格或其它表格中的嵌套区域进行比较来确定相互间的关联关系。另外,由于通常情况下,人为错误只会造成少量错误,即在关联表格中产生少量不一致单元格。因此当被分析的两表格中不一致单元格数量过多时,即两个表格差异较大,可以认为是正常的无关联的不同表格,不用呈现给用户。通过以上步骤,遍历所有结构化后的表格,找出关联表格对,及其一致单元格坐标字典samecell,和表格矩阵,作为下一步对比分析的输入参数。通过比较各表格的单元格内容进行表格关联分析,建立由内容一致单元格形成的最小表格矩阵,通过预设的自定义准则筛选两个表格是否为关联表格对。仅对关联表格对进行后续对比分析,大大减少对比分析的计算量。步骤s3,根据两表格的最小表格矩阵间差异与在对应表格中的位置,获取异常单元格组,所述异常单元格组包括但不限于内容不一致单元格坐标和内容。如附图5所示,所述步骤s3具体包括:s31,分别获取所述第一表格和第二表格的行数和列数;s32,当所述第一表格与第二表格的行数或列数差值小于预设值时,根据两表格的最小表格矩阵间差异与在对应表格中的位置来获取所述异常单元格组,否则不进行后续差异分析。在本实施例中,该步骤s3具体可以分成以下几种状态分别进行处理:状态一,被判断为关联表格对的两个表格内的最小表格矩阵的行列数一致。状态二,被判断为关联表格对的两个表格中的一个表格的最小表格矩阵进过转置后,与另一表格的最小表格矩阵的行列数一致。状态三,被判断为关联表格对的两个表格内的最小表格矩阵的行数相差n,或列数相差n,其中n小于预设值。状态四,被判断为关联表格对的两个表格的行数相差n,或列数相差n,其中n小于预设值。对于状态一,步骤根据两表格的最小表格矩阵间差异与在对应表格中的位置获取异常单元格组,如附图6所示,具体包括:步骤s101,当第一表格最小表格矩阵的行列数和第二表格最小表格矩阵的行列数相同时,遍历最小表格矩阵的每一单元格。步骤s102,比较两最小表格矩阵对应位置的内容是否相等,若相等则不记录所述异常单元格组,否则记录异常单元格组。即如果两最小表格矩阵对应位置的单元格内容相同,则不进行记录。即关联表格对中没有内容错误的异常单元格。具体的,以本实施例中关联表格对a和b为例,在a、b两表格的最小表格矩阵的行数和列数相同时。遍历最小表格矩阵的每个元素,比较a、b最小表格矩阵对应坐标的内容是否相等,分别记录a、b中所有不相等的单元格坐标和内容,同时记录该关联表格对,生成异常单元格组。该异常单元格组可采用字典数据结构diftablecells,key值为关联表格对,如ab。value值为数组形成的链表,链表的每个元素为两个表格不一致单元格的坐标和内容,如[a单元格坐标,a单元格内容,b单元格坐标,b单元格内容]。若a、b最小表格矩阵对应坐标的内容都相等,则表格a、b内容一致,不进行记录。对于状态一中的情形,步骤其中根据内容不一致单元格的分布位置筛选出关联表格对上的异常单元格组具体还可以包括如下步骤:s103,若第一表格最小表格矩阵的行数和列数也相同,则将第一表格转置形成第一转置表格;s104,将第二表格的最小表格矩阵与所述第一转置表格的最小表格矩阵进行比较并识别内容不一致单元格;s105,如果不存在内容不一致单元格则不进行后续差异分析,否则生成第二异常单元格组,所述第二异常单元格组包括但不限于第一转置表格最小表格矩阵和第二表格最小表格矩阵间内容不一致单元格坐标和内容。s106,将第一、二表格的两最小表格矩阵间不一致单元格数量,与第一转置表格和第二表格的两最小表格矩阵的不一致单元格数量进行比较;s107,如果第一转置表格和第二表格的两最小表格矩阵间不一致单元格数量较小,则获取第一转置表格和第二表格的两最小表格矩阵间不一致单元格坐标和内容,并更新所述异常单元格组中的第一、二表格对应的内容不一致单元格坐标和内容。s108,如果第一转置表格和第二表格的两最小表格矩阵间不一致单元格数量不小于第一、二表格的两最小表格矩阵间不一致单元格数量,则不对所述异常单元格组进行更新。例如在本实施例中,如果a、b的最小表格矩阵行数和列数相等,也可能存在两个表格转置后内容一致的可能。将一个表格转置后,比较对应坐标的元素是否相等,得到的内容不一致单元格数量与前面的a和b表格间内容不一致单元格数量进行比较,数量较小者则为正确的比较结果。例如,在a表格转置后形成的转置表格c,遍历转置表格c和表格b的最小表格矩阵区域内的每个单元格,比较c和b的最小表格矩阵对应坐标的元素或内容是否相等,分别记录c和b最小表格矩阵中所有对应的内容不一致单元格坐标和内容,同时记录该关联表格对。如果表格a转置后形成的转置表格c与表格b的最小表格矩阵经分析后获得的内容不一致单元格数量,要小于前述步骤获得的表格a和b的最小表格矩阵的内容不一致单元格数量。则表明可能a表格的行内容刚好对应关联的是b表格的列内容,而a表格的列内容刚好对应关联的是b表格的行内容,只有这样经过转置后的表格才会比原表格与另一表格间的内容不一致单元格数量更少。通过对最小表格矩阵行数和列数相等的两表格进行转置前和转置后的两次内容不一致单元格的获取和筛选,可以有效分辨出那些仅仅是将表格行列内容进行调换的表格,此类仅对行列内容进行调换的表格可以认为是正常的内容相同的关联表格,无需呈现给用户。对于状态二,如附图7所示,步骤根据两表格的最小表格矩阵间差异与在对应表格中的位置获取异常单元格组,具体包括:s201,当第二表格最小表格矩阵经转置后与第一表格最小表格矩阵的行数和列数均相等时,将第二表格转至形成第二转置表格。s202,比较第二转置表格和第一表格的两最小表格矩阵对应位置的内容是否相等,若相等则不记录所述异常单元格组,否则记录异常单元格组。其中具体的,如果第二转置表格和第一表格的两最小表格矩阵存在内容不一致单元格,则将所述内容不一致单元格的坐标和内容记录到第一、二表格对应的异常单元格组中。具体的,在本实施例中,即当a、b最小表格矩阵中的一个转置后,两个矩阵的行列数一致的情况下。对于该情况,将一个表格转置后,再遍历最小表格矩阵内的每个单元格,比较a、b最小表格矩阵对应坐标的单元格内容或元素是否相等,分别记录a、b中所有不相等的单元格坐标和内容,同时记录该关联表格对,生成或录入异常单元格组中,其中异常单元格组的数据格式可参数前述步骤。若比较结果都相等,则表格a、b内容一致,不进行记录。在本实施例中,当a和b的最小表格矩阵中的一个转置后,两个矩阵的行列数一致,即表明a表格中嵌套的小表格与b表格中嵌套的小表格上的内容很有可能仅仅只是行内容和列内容间进行了互相替换,而表格行列内容的转换仅仅只是表现方式的不同,可以认为是正常的内容相同的关联表格,无需呈现给用户,只需将其中一小表格经过转置后与另一小表格进行对应比对,找出真正的内容不一致单元格并呈现给用户即可。对于状态三中的两个表格内最小表格矩阵的行数相差n,如附图8所示,步骤根据两表格的最小表格矩阵间差异与在对应表格中的位置获取异常单元格组,具体包括:步骤s301,当关联表格对中的第一表格最小表格矩阵的行数比第二表格的最小表格矩阵多n行,且n小于预设值时,获取第一表格最小表格矩阵中不一致单元格最多的n行,并记录这n行各单元格的坐标和内容;步骤s302,在第一表格的最小表格矩阵中去除该n行后形成过渡表格矩阵;步骤s303,依次比较过渡表格矩阵与第二表格最小表格矩阵对应位置的单元格内容是否相同,若存在不相同单元格则生成或录入异常单元格组,所述异常单元格组包括但不限于关联表格对、过渡表格矩阵与第二表格中内容不一致单元格坐标和内容、以及所述n行单元格的坐标和内容。其中在本实施例中,n值可以根据实际使用环境进行预先设定,在本实施例中以n为2进行举例说明。具体的,当a和b的最小表格矩阵行数相差超过2行时,认为a和b两个表格不是关联表格,不进行对比分析。以a的最小表格矩阵比b的最小表格矩阵多一行的情况来具体说明。找出a的最小表格矩阵中“0”最多的一行,该行则为多出来的一行,记录该行各单元格元素的坐标和内容。在a的最小表格矩阵中去除该行,将该行下方的各元素上移,形成表格a’。比较a’的最小表格矩阵和b的最小表格矩阵对应坐标的单元格内容或元素是否相等,如不相等则分别记录所有不相等的单元格坐标和内容,同时记录该关联表格对,生成或录入异常单元格组中,其中异常单元格组包括但不限于关联表格对、过渡表格矩阵与第二表格中内容不一致单元格坐标和内容、以及多出来的n行单元格的坐标和内容。其它相差行的情况可以参照上述方法进行对比分析。对于状态三中的两个表格内最小表格矩阵的列数相差n,如附图9所示,步骤根据两表格的最小表格矩阵间差异与在对应表格中的位置获取异常单元格组,具体包括:步骤s401,当关联表格对中的第一表格最小表格矩阵的列数比第二表格的最小表格矩阵多n列,且n小于预设值时,获取第一表格最小表格矩阵中不一致单元格最多的n列,并记录这n列各单元格的坐标和内容;步骤s402,在第一表格的最小表格矩阵中去除该n列后形成过渡表格矩阵;步骤s403,依次比较过渡表格矩阵与第二表格最小表格矩阵对应位置的单元格内容是否相同,若存在不相同单元格则生成或录入异常单元格组,所述异常单元格组包括但不限于关联表格对、过渡表格矩阵与第二表格中内容不一致单元格坐标和内容、以及所述n列单元格的坐标和内容。其中在本实施例中,n值可以根据实际使用环境进列预先设定,在本实施例中以n为2进列举例说明。具体的,当a和b的最小表格矩阵列数相差超过2列时,认为a和b两个表格不是关联表格,不进列对比分析。以a的最小表格矩阵比b的最小表格矩阵多一列的情况来具体说明。找出a的最小表格矩阵中“0”最多的一列,该列则为多出来的一列,记录该列各单元格元素的坐标和内容。在a的最小表格矩阵中去除该列,将该列右侧的各元素左移,形成表格a’。比较a’的最小表格矩阵和b的最小表格矩阵对应坐标的单元格内容或元素是否相等,如不相等则分别记录所有不相等的单元格坐标和内容,同时记录该关联表格对,生成或录入异常单元格组中,其中异常单元格组包括但不限于关联表格对、过渡表格矩阵与第二表格中内容不一致单元格坐标和内容、以及多出来的n列单元格的坐标和内容。其它相差列的情况可以参照上述方法进列对比分析。在本实施例中,当表格a和b的最小表格矩阵的行数或者列数相差为n行或n列时。即表明a表格中嵌套的小表格与b表格中嵌套的小表格上的内容上成行的或成列的单元格不一致很可能是由于在具体表格处理时由于人为疏忽导致表格内某一些行列顺序错乱和行列丢失产生的。因此需要首先排除掉这些因人为错误导致的嵌套表格内成行或成列的不一致单元格后,再进行对应的单元格内容的比对分析,避免其它单元格比对受到这些整行或整列不一致单元格的影响,从而能更加精确和快速的找到这些可能的因行列顺序错乱或行列丢失造成的内容不一致单元格,以及其它因输入错误导致的单个内容不一致单元格。对于状态四的其中一种情形,即关联表格对的两个表格的列数相差n,其中n小于预设值。如附图10所示,步骤根据两表格的最小表格矩阵间差异与在对应表格中的位置获取异常单元格组,具体包括:步骤s501,当两表格的列数相差大于r时,其中r为预设值,认为两个表格不是关联表格,不进列对比分析;步骤s502,否则当两表格的列数相差n列时,其中n不大于r,获取具有较多列数的表格中的全部为不一致单元格的列位置,如果该列部分或全部位于该表格的最小表格矩阵内,则按前述状态三的步骤进行处理;步骤s503,如果该列位于该表格的最小表格矩阵外,则记录该列所有单元格坐标和内容,生成或录入该关联表格对的异常单元格组中。具体的,在本实施例中,由于表格最小表格矩阵是去除了四周的不一致单元格形成的,而两个表格可能存在四周的最外层相差行列的情况。r值可以根据实际情况指定,在该实施例中设定r为2,例如当表格a和b相差超过2时,认为两个表格不是关联表格,不进行对比分析。以表格a比表格b多一列的情况来具体说明。判断a比b多出的一列是第一列还是最后一列,若多出的一列不再两侧,则属于情况3,已经分析处理。判断表格a第一列是否全部为0,若是则第一列为多出的一列,若否则判断最后一列是否全部为0,若是则最后一列为多出的一列,若否则多出的一列不在表格两侧,属于状态三,不再进行对比分析。找多出的一列后,若diftablecells中已存在该关联表格对a、b,则将value增加该列单元格的坐标和内容;若diftablecells中不存在该关联表格对a、b,则将关联表格对ab,及该列单元格的坐标和内容加入字典diftablecells中,其中表格b对应单元格的坐标和内容为空。对于状态四的另一种情形,即关联表格对的两个表格的行数相差n,其中n小于预设值。如附图11所示,步骤根据两表格的最小表格矩阵间差异与在对应表格中的位置获取异常单元格组,具体包括:步骤s601,当两表格的行数相差大于r时,其中r为预设值,认为两个表格不是关联表格,不进行对比分析;步骤s602,否则当两表格的行数相差n行时,其中n不大于r,获取具有较多行数的表格中的全部为不一致单元格的行位置,如果该行部分或全部位于该表格的最小表格矩阵内,则按前述状态三的步骤进行处理;步骤s603,如果该行位于该表格的最小表格矩阵外,则记录该行所有单元格坐标和内容,生成或录入该关联表格对的异常单元格组中。具体的,在本实施例中,由于表格最小表格矩阵是去除了四周的不一致单元格形成的,而两个表格可能存在四周的最外层相差行行的情况。r值可以根据实际情况指定,在该实施例中设定r为2,例如当表格a和b相差超过2时,认为两个表格不是关联表格,不进行对比分析。以表格a比表格b多一行的情况来具体说明。判断a比b多出的一行是第一行还是最后一行,若多出的一行不再两侧,则属于情况3,已经分析处理。判断表格a第一行是否全部为0,若是则第一行为多出的一行,若否则判断最后一行是否全部为0,若是则最后一行为多出的一行,若否则多出的一行不在表格两侧,属于状态三,不再进行对比分析。找多出的一行后,若diftablecells中已存在该关联表格对a、b,则将value增加该行单元格的坐标和内容;若diftablecells中不存在该关联表格对a、b,则将关联表格对ab,及该行单元格的坐标和内容加入字典diftablecells中,其中表格b对应单元格的坐标和内容为空。上述各步骤中得到的字典diftablecells可作为下面步骤s4差异内容处理的输入参数。对比分析算法可以考虑小表格嵌入大表格,表格行列转置,表格行列顺序错乱,表格内部及四周行列缺失的情况,找出关联表格对的不一致单元格坐标及位置。上述步骤s3的表格对比分析充分考虑了小表格嵌入大表格,表格行列转置,表格行列顺序错乱,表格内部及四周行列缺失的情况,找出关联表格对的不一致单元格坐标及位置,对各类表格的适用性和通用性更强,可以帮助用户对各种类型的表格进行对比分析。在一些具体实施例中,该药品申报文件的对比分析方法还包括步骤s4,将异常单元格组中内容不一致单元格的内容进行对比,找出并标记单元格内容中不一致的字符集合。具体的,上述步骤s4用于对上述的关联表格对根据内容不一致单元格数量进行筛选,同时对内容不一致单元格的内容进行对比,找出并标记单元格内容中不一致的字符集合。由于通常情况下,人为错误只会造成少量错误,产生少量不一致单元格。当关联表格对中不一致单元格数量过多时,两个表格差异较大,可以认为是正常的不同表格,不呈现给用户。除去这种情况外,可以认为是各种原因造成的异常表格,需要呈现给用户进行检查和处理。由于一个人为错误可能产生一个或多个相对离散的不一致单元格,也或者可能造成行列顺序错乱或行列丢失,从而产生成行或成列的多个不一致单元格。所以定义所有内容不一致单元格数量减去由行列顺序错乱和行列丢失产生的单元格数量,得到的单元格数量为真实不一致单元格数。当真实不一致单元格数小于等于m时,认为关联表格对为异常表格,需要呈现给用户进行处理;否则认为是正常的不同表格,不呈现给用户,在本实施例中,优选的m值可以为3。通过遍历异常单元格组,即遍历字典diftablecells,首先去除由于行列缺失而产生的不一致单元格,即去除字典value值链表中a表格单元格坐标为空或b表格单元格坐标为空的数组元素。然后再去除由于行列顺序错乱而产生的不一致单元格。a、b表格差异结果去除由于行列缺失而产生的不一致单元格后的不一致单元格链表为difcell,数据结构为list<string[]>,其中数组string[]为[a单元格坐标,a单元格内容,b单元格坐标,b单元格内容]。取出difcell中的所有a单元格坐标,采用表格转换为最小表格矩阵的方法,转换为差异结果最小表格矩阵difma,对于该最小表格矩阵,元素值为1的坐标代表不一致单元格的坐标。存在两列单元格顺序错乱的充要条件是difma中有两列值全部为1,交换这两列单元格的列坐标后与b表格相应单元格的内容相等。存在两行单元格顺序错乱的充要条件是difma中有两行值全部为1,交换这两行单元格的行坐标后与b表格相应单元格的内容相等。存在大于2列或2行单元格顺序错乱的情况可参考上述条件进行扩展。推荐最多考虑3行或3列单元格顺序错乱的情况,其它情况认为是正常的不同表格,不呈现给用户。根据上述充要条件判断,找出行列顺序错乱的单元格,从difcell中去除这些单元格,最终剩下的单元格数量即为真实不一致单元格数量。从字典diftablecells中去除真实不一致单元格数量大于n的关联表格对,剩下的结果即为需要呈现给用户的差异表格对。由于两个对应不一致单元格的内容可能很多很相似,用户难以快速发现两个单元格内容的真正不一致处。所以需要对差异表格对的对应不一致单元格内容进行对比分析,标识出不一致的字符集合。两个单元格内容可以当做是两个字符串a、b,寻找a、b的最长公共子序列l,a、b中除去l后的字符集合则是不一致的字符集合,可以通过在字符前后添加标签将其进行高亮显示。上述步骤s4根据真实不一致单元格数量再次过滤筛选分析结果,可以排除行列顺序错乱和行列缺失产生的不一致单元格,根据找出的真实不一致单元格,及不一致单元格内容的不一致字符集合。筛选出真正异常的表格对,和不一致单元格内的不一致字符集合,减少呈现给用户的结果数量,便于用户快速排查发现错误、异常表格。同时对不一致单元格的内容进行对比分析,可以找出并高亮不一致的字符集合,便于用户发现表格异常内容。本发明所公开的药品申报文件的对比分析方法,通过分别获取待分析的第一表格和第二表格内的单元格坐标和内容,识别内容一致单元格,并通过两表格对进行后续对比分析,大大减少对比分析的计算量。在对两表格进行对比分析过程中,充分考虑小表格嵌入大表格,表格行列转置,表格行列顺序错乱,表格内部及四周行列缺失等各类情况,根据两表格各情况状态分别进行分析,找出两表格间的不一致单元格坐标及位置。最后异常结果处理步骤可以通过排除行列顺序错乱和行列缺失产生的不一致单元格,根据找出的真实不一致单元格、及不一致单元格内容中的不一致字符集合,筛选出真正异常的表格对以及不一致单元格内不一致字符集合,最终减少呈现给用户的结果数量,便于用户快速排查发现错误、异常表格。可以实现对两个表格的对比分析,发现和定位关联表格不一致的单元格及单元格内容差异。适用于需要处理大量相似表格,表格多处嵌套、复用的场景,可以减少人工检查表格一致性的大量重复性工作,避免关联表格对应单元格内容不一致的错误。本发明还提供了一种药品申报文件的对比分析系统,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述各实施例中描述的药品申报文件的对比分析方法的各个步骤。所述药品申报文件的对比分析系统可包括但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图仅仅是药品申报文件的对比分析系统的示例,并不构成对药品申报文件的对比分析系统设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述药品申报文件的对比分析系统设备还可以包括输入输出设备、网络接入设备、总线等。所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述药品申报文件的对比分析系统设备的控制中心,利用各种接口和线路连接整个药品申报文件的对比分析系统设备的各个部分。所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述药品申报文件的对比分析系统设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。所述药品申报文件的对比分析系统如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个药品申报文件的对比分析方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。总之,以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所作的均等变化与修饰,皆应属本发明专利的涵盖范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1