掌桥专利:专业的专利平台
掌桥专利
首页

一种基于云服务的OFD版式发票解析方法、系统及设备

文献发布时间:2023-06-19 12:13:22


一种基于云服务的OFD版式发票解析方法、系统及设备

技术领域

本发明涉及电子发票技术领域,具体而言,涉及一种基于云服务的OFD版式发票解析方法、系统及设备。

背景技术

《电子文件存储与交换格式 版式文档》(GB/T 33190-2016)由国家电子文件管理部际联席会议办公室和工业和信息化部提出,该标准规定了版式电子文件的存储与交换格式。OFD文件是基于上述标准的板式文档,采用打包XML文件的架构格式,是我国电子发票未来主要的电子发票格式。

目前,针对OFD板式发票文件,存在无法大批量处理解析OFD文档和无法提供OFD文件元数据的问题。

发明内容

为解决上述问题,本发明的目的在于提供一种基于云服务大批量解析OFD板式发票文件并提供发票元数据的OFD版式发票解析方法、系统及设备。

本发明提供了一种基于云服务的OFD版式发票解析方法,该方法包括:

确定服务器集群中的一台服务器作为目标服务器,以使所述目标服务器在接收到至少一个OFD发票文件时,对至少一个所述OFD发票文件同时进行解析,

其中,所述目标服务器对一个OFD发票文件进行解析包括:

解压所述OFD发票文件得到XML文件,所述XML文件包括主入口文件OFD.xml;

解析所述XML文件得到发票元数据,包括:解析所述主入口文件OFD.xml,得到发票基本信息,以及OFD发票文件的根节点文件Document.xml和签名列表文件Signatures.xml;

输出所述发票元数据。

作为本发明进一步的改进,所述确定服务器集群中的一台服务器作为目标服务器,包括:

定时检测所述服务器集群中每台服务器的CPU和内存的空闲率,并计算每台服务器的空闲率平均值,选取空闲率平均值最高的一台服务器作为所述目标服务器。

作为本发明进一步的改进,所述选取空闲率平均值最高的一台服务器作为所述目标服务器,包括:

预选服务器:遍历所述服务器集群的所有服务器,筛选出符合预先设定条件的服务器,作为参考服务器;

优选服务器:对各个所述参考服务器的空闲率平均值进行排序;

选定服务器:选取所有参考服务器中空闲率平均值最高的一台参考服务器作为所述目标服务器,若空闲率平均值最高的参考服务器有多台时,则随机选取其中一台参考服务器作为所述目标服务器。

作为本发明进一步的改进,所述方法还包括:

当所述目标服务器确定后,在所述目标服务器上启动至少一个服务器容器,以对至少一个所述OFD发票文件同时进行解析,每个所述服务器容器对至少一个所述OFD发票文件进行接收、存储、解压、解析,并输出发票元数据。

作为本发明进一步的改进,所述解压所述OFD发票文件得到XML文件,还包括:

解析所述根节点文件Document.xml,得到所述OFD发票文件的自身资源索引文件DocumentRes.xml、公共资源索引文件PublicRes.xml、注释文件Annotations.xml、附件文件Attachments.xml和发票内容文件Content.xml。

作为本发明进一步的改进,所述解析所述XML文件得到发票元数据包括:

解析所述签名列表文件Signatures.xml,得到所述OFD发票文件的哈希值和电子签章数据,并在所述电子签章数据中得到所述OFD发票文件的印章数据;

解析所述注释文件Annotations.xml,得到所述OFD发票文件的注释数据;

解析所述附件文件Attachments.xml,得到所述OFD发票文件的附件文件;

解析所述自身资源索引文件DocumentRes.xml和所述公共资源索引文件PublicRes.xml,得到所述OFD发票文件的用于绘制图元的资源数据,所述资源数据包括颜色、字体和图片;

解析所述发票内容文件Content.xml,得到所述OFD发票文件的发票内容。

作为本发明进一步的改进,所述输出所述发票元数据,包括:

将解析得到的所述发票元数据全部或部分输出,其中,所述发票元数据以json格式输出。

本发明还提供了一种基于云服务的OFD版式发票解析系统,所述系统包括:

目标服务器选取模块,其用于在服务器集群中确定一台服务器作为目标服务器;

OFD发票文件发送模块,其用于向所述目标服务器发送OFD发票文件解析请求;

其中,所述目标服务器包括:

接收模块,其用于接收所述OFD发票文件发送模块发送的待解析的OFD发票文件;

解压模块:其用于解压所述接收模块接收的所述OFD发票文件,得到XML文件,所述XML文件包括主入口文件OFD.xml;

解析模块:其用于解析所述解压模块解压得到的所述XML文件,包括解析所述主入口文件OFD.xml,得到发票基本信息,以及OFD发票文件的根节点文件Document.xml和签名列表文件Signatures.xml,得到发票元数据;

输出模块:其用于将所述解析模块解析得到的发票元数据输出。

作为本发明进一步的改进,所述目标服务器选取模块确定服务器集群中的一台服务器作为目标服务器,包括:

定时检测所述服务器集群中每台服务器的CPU和内存的空闲率,并计算每台服务器的空闲率平均值,选取空闲率平均值最高的一台服务器作为所述目标服务器。

作为本发明进一步的改进,所述目标服务器选取模块选取空闲率平均值最高的一台服务器作为所述目标服务,包括:

预选服务器:遍历所述服务器集群的所有服务器,筛选出符合预先设定条件的服务器,作为参考服务器;

优选服务器:对各个所述参考服务器的空闲率平均值进行排序;

选定服务器:选取所有参考服务器中空闲率平均值最高的一台参考服务器作为所述目标服务器,若空闲率平均值最高的参考服务器有多台时,则随机选取其中一台参考服务器作为所述目标服务器。

作为本发明进一步的改进,所述系统还包括:

当所述目标服务器确定后,在所述目标服务器上启动至少一个服务器容器,以对至少一个所述OFD发票文件同时进行解析,每个所述服务器容器对至少一个所述OFD发票文件进行接收、存储、解压、解析,并输出发票元数据。

作为本发明进一步的改进,所述解压模块解压所述OFD发票文件得到XML文件,还包括:

解析所述根节点文件Document.xml,得到所述OFD发票文件的自身资源索引文件DocumentRes.xml、公共资源索引文件PublicRes.xml、注释文件Annotations.xml、附件文件Attachments.xml和发票内容文件Content.xml。

作为本发明进一步的改进,所述解析模块解析所述XML文件得到发票元数据包括:

解析所述签名列表文件Signatures.xml,得到所述OFD发票文件的哈希值和电子签章数据,并在所述电子签章数据中得到所述OFD发票文件的印章数据;

解析所述注释文件Annotations.xml,得到所述OFD发票文件的注释数据;

解析所述附件文件Attachments.xml,得到所述OFD发票文件的附件文件;

解析所述自身资源索引文件DocumentRes.xml和所述公共资源索引文件PublicRes.xml,得到所述OFD发票文件的用于绘制图元的资源数据,所述资源数据包括颜色、字体和图片;

解析所述发票内容文件Content.xml,得到所述OFD发票文件的发票内容。

作为本发明进一步的改进,所述输出模块输出所述发票元数据,包括:

将解析得到的所述发票元数据全部或部分输出,其中,所述发票元数据以json格式输出。

本发明提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被处理器执行以实现上述基于云服务的OFD版式发票解析方法。

本发明提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述基于云服务的OFD版式发票解析方法。

本发明的有益效果为:通过云计算对大批量OFD发票文件进行解析,处理效率高,并可以提供用户灵活使用的发票元数据,方便OFD发票文件的预览、转化和验签。

附图说明

图1为本发明实施例所述的一种基于云服务的OFD版式发票解析方法的方法流程图;

图2为本发明实施例所述的一种基于云服务的OFD版式发票解析方法的目标服务器选取流程示意图;

图3为本发明实施例所述的一种基于云服务的OFD版式发票解析方法的解析流程图;

图4为本发明实施例所述的一种基于云服务的OFD版式发票解析方法的OFD文件层次结构示意图;

图5为本发明实施例所述的一种基于云服务的OFD版式发票解析方法的OFD.xml文件的数据结构示意图;

图6为本发明实施例所述的一种基于云服务的OFD版式发票解析系统的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对发明开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例所述的一种基于云服务的OFD版式发票解析方法,如图1所示,该方法包括:确定服务器集群中的一台服务器作为目标服务器,所述目标服务器包括执行:接收OFD发票文件,解压所述OFD发票文件得到XML文件,解析所述XML文件得到发票元数据,输出所述发票元数据。

其中,确定服务器集群中的一台服务器作为目标服务器包括:服务器集群资源调度系统定时检测服务器集群中每台服务器的CPU和内存的空闲率,并计算其平均值,选取空闲率平均值最高的一台服务器作为目标服务器。接收、解压、解析OFD发票文件和输出解析得到的发票元数据均在目标服务器上执行。

一种可选的实施方式,如图2所示,选取一台目标服务器的步骤包括:

预选服务器:遍历服务器集群的所有服务器,筛选出符合预先设定条件的服务器;

优选服务器:对筛选出的符合预先设定条件的服务器根据其空闲率平均值进行排序;

选定服务器:选取空闲率平均值最高的一台服务器作为目标服务器。

上述服务器也可以为服务器节点。

其中,符合预先设定条件的服务器为CPU和内存满足OFD版式发票解析要求的服务器。例如需要1核CPU或2G内存,则筛选出有1核CPU或2G内存的服务器,作为参考服务器。

服务器的空闲率平均值计算方法为:空闲率平均值=((总核数-已用核数)/总核数+(总内存-已用内存)/总内存)/2。例如,8核16G服务器,已被用2核8G,则该服务器的空闲率平均值=((8-2)/8+(16-8)/16)/2=0.625。

根据各个参考服务器的空闲率平均值进行排序,选取空闲率平均值最高的一台服务器作为目标服务器。选定目标服务器时,若空闲率平均值最高的参考服务器有多台,则随机选取一台参考服务器作为目标服务器。

一个目标服务器可同时相应多个OFD版式发票解析请求,对多个OFD版式发票进行解析。一个目标服务器的资源全部被占用后选择当前时刻空闲率平均值最高的另一台服务器作为目标服务器继续响应OFD版式发票解析请求,多台目标服务器同时处理,实现大批量解析OFD板式发票文件。

一种可选的实施方式,目标服务器确定后,在目标服务器上启动服务器容器,服务器容器对所述OFD发票文件进行接收、存储、解压和解析,并输出发票元数据。其中,服务器容器的解压过程为:解压所述OFD发票文件得到XML文件。服务器容器的解析过程为:解析XML文件得到发票元数据。一台目标服务器上可启动多个服务器容器,一个服务器容器可处理多个OFD版式发票解析请求。当一个服务器容器资源全部被占用后,可再次选取目标服务器并启动服务器容器,实现大批量解析OFD板式发票文件。

一种可选的实施方式,解压所述OFD发票文件得到XML文件,XML文件包括主入口文件OFD.xml,其数据结构如图5所示,解析所述主入口文件得到发票基本信息,发票基本信息包括:发票代码、发票号码、合计税额、合计金额、开票日期、校验码、购买方纳税人识别号和销售方纳税人识别号等,以及获取OFD发票文件的根节点文件Document.xml和签名列表文件Signatures.xml的文件路径。通过文件路径可以得到相应文件的文件夹位置。解压得到的OFD发票文件的文件结构如图4所示,其中,

OFD.xml为主入口文件,一个OFD发票文件中只存在一个OFD.xml文件。

DOC_N为第N个文件的文件夹。

DocumentRes.xm为自身资源索引文件。

Document.xml为根节点文件,根节点文件中存有OFD发票文件中数据文件的索引。

PublicRes.xm为公共资源索引文件。

Annotations.xml为注释文件。

Attachments.xml为附件文件。

Page_N为第N页文件夹。

Content.xml为第N页的内容文件。

Res为资源文件夹。

Image_N为第N页的资源文件。

Signs 为数字签名存储目录。

Sign_N 为第N个签名或签章。

Singatures.xml为签名列表文件。

Signature.xml为签名或签章描述文件。

SignedValue.dat 为电子签章数据。

一种可选的实施方式,如图3所示,解析所述XML文件得到发票元数据包括:

解析签名列表文件Signatures.xml,得到OFD发票文件的哈希值和电子签章数据,并在所述电子签章数据中得到OFD发票文件的印章数据。其中,电子签章数据SignedValue.dat为der编码的数据,并用asn1格式解析der编码电子签章数据,得到ans1格式的结构体,印章数据就在结构体中。

解析注释文件Annotations.xml得到OFD发票文件的注释数据。

解析附件文件Attachments.xml得到OFD发票文件的附件文件,通过遍历的方式得到每个附件文件,例如origin_invoice附件。

解析自身资源索引文件DocumentRes.xml和公共资源索引文件PublicRes.xml得到OFD发票文件的用于绘制图元的资源数据,包括颜色、字体和图片等。

解析发票内容文件Content.xml得到OFD发票文件的每页发票内容,其中,发票内容包括:发票代码、发票号码、开票日期、验证码、机器编号、密码区、购买方(名称、纳税人识别号、地 址、电 话、开户行及账号)、销售方(名称、纳税人识别号、地 址、电 话、开户行及账号)、价税合计、开票人、收款人、复核人、税额、不含税金额、货物或服务列表(项目名称、规格型号、单位、价格、数量、金额、税率和税额)。

一种可选的实施方式,输出发票元数据包括将解析得到的发票元数据全部或部分输出,需要输出发票元数据时,将需要输出的元数据组装以json格式输出。例如,部分输出发票元数据只包括发票票面上的数据。输出的发票元数据可以供用户灵活使用。

本发明实施例所述的一种基于云服务的OFD版式发票解析系统,如图6所示,该系统包括:目标服务器选取模块,其用于在服务器集群中确定一台服务器作为目标服务器;选取目标服务器的步骤采用上述基于云服务的OFD版式发票解析方法中选取方法。

OFD发票文件发送模块,其用于向所述目标服务器发送OFD发票文件解析请求;

其中,所述目标服务器包括:接收模块、解压模块、解析模块和输出模块;

接收模块用于接收所述OFD版式发票文件发送模块发送的待解析的OFD发票文件;

解压模块用于解压所述接收模块接收的所述OFD发票文件,得到XML文件;解压方法采用上述基于云服务的OFD版式发票解析方法中解压方法。

解析模块用于解析所述解压模块解压得到的所述XML文件,得到发票元数据;解解析方法采用上述基于云服务的OFD版式发票解析方法中解析方法。

输出模块用于将解析模块解析得到的发票元数据输出,输出模块可将解析得到的发票元数据全部或部分以json格式输出。

一种可选的实施方式,目标服务器选取模块确定服务器集群中的一台服务器作为目标服务器,包括定时检测所述服务器集群中每台服务器的CPU和内存的空闲率,并计算每台服务器的空闲率平均值,选取空闲率平均值最高的一台服务器作为目标服务器。

目标服务器选取模块选取空闲率平均值最高的一台服务器作为所述目标服务,包括:

预选服务器:遍历服务器集群的所有服务器,筛选出符合预先设定条件的服务器,作为参考服务器;

优选服务器:对各个参考服务器的空闲率平均值进行排序;

选定服务器:选取所有参考服务器中空闲率平均值最高的一台参考服务器作为目标服务器。

一种可选实施方式,所述目标服务器选取模块选定服务器,若空闲率平均值最高的参考服务器有多台时,则随机选取其中一台参考服务器作为所述目标服务器。

一种可选实施方式,当目标服务器确定后,在目标服务器上启动至少一个服务器容器,以对至少一个所述OFD发票文件同时进行解析,每个所述服务器容器对至少一个所述OFD发票文件进行接收、存储、解压、解析,并输出发票元数据。服务器容器的解析过程为:解析XML文件得到发票元数据。一台目标服务器上可启动多个服务器容器,一个服务器容器可处理多个OFD版式发票解析请求。当一个服务器容器资源全部被占用后,可再次选取目标服务器并启动服务器容器,实现大批量解析OFD板式发票文件。解压所述OFD发票文件得到XML文件,XML文件包括主入口文件OFD.xml,其数据结构如图5所示,解析所述主入口文件得到发票基本信息,发票基本信息包括:发票代码、发票号码、合计税额、合计金额、开票日期、校验码、购买方纳税人识别号和销售方纳税人识别号等,以及获取OFD发票文件的根节点文件Document.xml和签名列表文件Signatures.xml的文件路径。

一种可选的实施方式,如图3所示,解析所述XML文件得到发票元数据包括:

解析签名列表文件Signatures.xml,得到OFD发票文件的哈希值和电子签章数据,并在所述电子签章数据中得到OFD发票文件的印章数据。其中,电子签章数据SignedValue.dat为der编码的数据,并用asn1格式解析der编码电子签章数据,得到ans1格式的结构体,印章数据就在结构体中。

解析注释文件Annotations.xml得到OFD发票文件的注释数据。

解析附件文件Attachments.xml得到OFD发票文件的附件文件,通过遍历的方式得到每个附件文件,例如origin_invoice附件。

解析自身资源索引文件DocumentRes.xml和公共资源索引文件PublicRes.xml得到OFD发票文件的用于绘制图元的资源数据,资源数据包括颜色、字体和图片等。

解析发票内容文件Content.xml得到OFD发票文件的每页发票内容。

一种可选的实施方式,输出发票元数据包括将解析得到的发票元数据全部或部分输出,需要输出发票元数据时,将需要输出的元数据组装以json格式输出。

本发明还涉及一种电子设备,包括服务器、终端等。该电子设备包括:至少一个处理器;与至少一个处理器通信连接的存储器;以及与存储介质通信连接的通信组件,所述通信组件在处理器的控制下接收和发送数据;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行以实现上述实施例中的方法。

在一种可选的实施方式中,存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现方法。

存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

一个或者多个模块存储在存储器中,当被一个或者多个处理器执行时,执行上述任意方法实施例中的方法。

上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。

本发明还涉及一种计算机可读存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

此外,本领域普通技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本领域技术人员应理解,尽管已经参考示例性实施例描述了本发明,但是在不脱离本发明的范围的情况下,可进行各种改变并可用等同物替换其元件。另外,在不脱离本发明的实质范围的情况下,可进行许多修改以使特定情况或材料适应本发明的教导。因此,本发明不限于所公开的特定实施例,而是本发明将包括落入所附权利要求范围内的所有实施例。

相关技术
  • 一种基于云服务的OFD版式发票解析方法、系统及设备
  • 一种OFD版式发票文件的解析系统及装置
技术分类

06120113211812