CN109661779B - 用于压缩数据的方法和系统 - Google Patents

用于压缩数据的方法和系统 Download PDF

Info

Publication number
CN109661779B
CN109661779B CN201780052077.5A CN201780052077A CN109661779B CN 109661779 B CN109661779 B CN 109661779B CN 201780052077 A CN201780052077 A CN 201780052077A CN 109661779 B CN109661779 B CN 109661779B
Authority
CN
China
Prior art keywords
template
data
templates
processor
sub
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201780052077.5A
Other languages
English (en)
Other versions
CN109661779A (zh
Inventor
李泽民
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Authpaper Ltd
Original Assignee
Authpaper Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Authpaper Ltd filed Critical Authpaper Ltd
Publication of CN109661779A publication Critical patent/CN109661779A/zh
Application granted granted Critical
Publication of CN109661779B publication Critical patent/CN109661779B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/149Adaptation of the text data for streaming purposes, e.g. Efficient XML Interchange [EXI] format
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3091Data deduplication
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • H03M7/3077Sorting
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/70Type of the data to be coded, other than image and sound
    • H03M7/707Structured documents, e.g. XML

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

一种用于包含使计算机执行用于压缩数据的方法的程序指令的非暂时性计算机可读介质的系统和方法,其包括以下步骤:接收用于压缩的数据串,所述数据串包括多个数据元素;基于处理所述数据串创建模板,所述模板包括所述数据串的所有数据元素间的通用信息,创建一个或多个条目,其中所述一个或多个条目包括与所述模板不同的信息,并且存储所述模板和所述一个或多个的条目。

Description

用于压缩数据的方法和系统
技术领域
本发明涉及用于数据压缩方法及系统,尤其涉及一种用于压缩数据的方法及用于压缩数据的硬件系统,其中,该方法及系统适用于压缩任何合适格式的大容量数据。
背景技术
数据压缩在当今世界是很平常的。计算设备中的电子内存/存储器/传输带宽总是有限的。内存/存储器空间是有限的,因此压缩数据通常用于保存存储器/存储空间或传输带宽。内存/存储器空间或数据传输带宽已成为交易和销售的商品。数据压缩是这种商品的重要组成部分,以便最大化可以存储在可用存储空间中的数据或信息。
有多种已知的数据压缩方法可用于多种不同的数据格式。例如,可以压缩文档、视频、音频和任何其他数据格式。目前使用和已知的压缩算法和方法通常是通用网页压缩。这意味着这些已知的压缩算法和方法使用相同的过程来压缩诸如文档、图像、视频和音频数据的所有格式的数据。
然而,通用网页压缩方法的无损数据压缩率低于2:1,因此节省了不超过50%的存储空间,尤其是当应用于内置数据压缩的文件格式,例如jpeg、mp3或docx、pptx或pdf文件。为了获得更高的压缩比,例如20:1或40:1,实际数据的许多细节常常被移除。为了实现更高的压缩比率,有损压缩算法或方法应用于数据。这些有损压缩算法或方法通常从待压缩的数据串或数据文件或数据流中移除一些信息以提高压缩率。这可能是有问题的,因为有时候关键信息可能会丢失。进一步解压缩已使用有损压缩算法或方法压缩的文件导致未压缩文件或流或字符串与预压缩文件或流或字符串不匹配。
Deflate、bzip2、LZMA是一些众所周知的用于归档文件的无损压缩算法或压缩方法。这些压缩算法通常是常用归档数据格式(如zip、rar、tar.gz和7z)中的默认压缩算法。这三种算法通过将所有输入文件组合成长数据串并基于串内符号的排列和频率对串进行压缩而起作用。但是这些算法不会导致大的压缩比。
图像和视频数据通常定义数据压缩算法来压缩数据。像Deflate和RLE这样的算法通常用于以无损方式压缩图像或视频数据。然而,通常无损压缩算法不足以充分压缩图像或视频帧。由于信息的丢失,有损压缩算法不是优选的。需要一种数据压缩方法或压缩算法,其能够以足够高的压缩比无损地压缩输入数据。
本公开中对任何现有技术的参考不是也不应被视为承认或以任何形式暗示该现有技术构成世界上任何国家的努力的领域中公知常识的一部分。
发明内容
本文公开的某些实施方式的目的可能是提供一种压缩数据的方法或数据压缩算法,其可以改善上述一个或多个问题,或者至少在一定程度上至少为公众或计算机行业或数据压缩行业提供有用的选择。
本公开涉及数据压缩方法和数据压缩系统。数据压缩系统是一个硬件计算系统。数据压缩方法由硬件数据压缩系统执行。由数据压缩系统执行的数据压缩方法是有利的,因为它导致压缩数据的大小比至少一种已知的压缩方法小。数据压缩方法是有利的,因为较小的压缩数据使用较少的存储器来存储。
根据第一方面,本公开涉及一种非暂时性计算机可读介质,其包含用于使计算机执行用于压缩数据的方法的程序指令,该方法包括以下步骤:
接收用于压缩的数据串,所述数据串包括多个数据元素,
基于处理数据串创建模板,所述模板包括数据串的所有数据元素上的通用信息,
创建一个或多个条目,其中所述一个或多个条目包括与所述模板不同的信息,以及
存储模板和一个或多个条目。
在所述非暂时性计算机可读介质的实施方式中,创建一个或多个条目的步骤包括以下附加步骤:
识别数据串的每个数据元素与创建的模板之间的差异,以及
其中每个条目对应于所述多个数据元素中的单一数据元素,并且所述条目包括所述数据元素和所述模板之间的差异。
在所述非暂时性计算机可读介质的实施方式,创建所述模板的步骤包括以下步骤:
相互比较数据元素,
识别两个或多个数据元素间的通用信息,
创建包含两个或多个数据元素之间的通用信息的模板。
在所述非暂时性计算机可读介质,所述压缩数据的方法包括以下附加步骤:
创建所述多个数据元素中的每个数据元素的表示,其中所述表示是允许数据元素相互比较的格式,
临时存储每个数据元素的每个表示。
在所述非暂时性计算机可读介质的实施方式中,所述压缩数据的方法包括以下附加步骤:
确定每个表示的平均信息值,其中,平均信息值是数据元素内的数据结构的度量,
根据每个表示的平均信息值排序表示。
在所述非暂时性计算机可读介质的实施方式中,所述压缩数据的方法包括以下附加步骤:
比较表示对以识别一对表示中的通用信息,
创建包括公共信息的多个模板,其中每个模板包括一对表示中的通用信息,
创建N/2个模板,其中N是表示的数量。
在所述非暂时性计算机可读介质的实施方式中,所述压缩数据的方法包括以下附加步骤:
比较表示对以识别该对表示的通用信息,
将通用信息整理成子模板,
创建多个子模板,其中,所述子模板包括一对表示中的通用信息。
在所述非暂时性计算机可读介质的实施方式中,所述压缩数据的方法包括以下附加步骤:
比较一对子模板以识别子模板之间的通用信息,
基于比较子模板对创建附加的次级模板,其中次级模板包括子模板之间的通用信息,
将次级模板相互比较以识别次级模板间的通用信息,
基于所述次级模板之间的通用信息创建所述模板,其中所述模板包括在所述次级模板中的通用信息。
在所述非暂时性计算机可读介质的实施方式中,所述压缩数据的方法包括以下步骤:
当比较子模板对时识别模板损失值,其中计算模板与每对子模板之间的差异,并且将较大的值设置为模板损失值
如果模板损失值大于10%,则分开存储子模板。
在所述非暂时性计算机可读介质的实施方式中,所述模板将被移除。
在所述非暂时性计算机可读介质的实施方式中,所述次级模板作为一组模板存储在文件夹或文件中。
在所述非暂时性计算机可读介质的实施方式中,所述压缩方法包括以下附加步骤:
将每个数据元素与该组模板进行比较以识别每个数据元素与模板或次级模板或子模板之间的一个或多个差异,
从该组模板中识别模板或次级模板或子模板,其产生与每个元素的最小差异,
识别对应的模板或子模板或次级模板的指示符,
创建条目,其中所述条目是压缩的数据元素,并且所述条目包括对应的模板或子模板或次级模板与所述指示符之间的最小差异,
存储条目以及;
删除创建条目时未使用的该组模板中的任何次级模板或子模板。
在所述非暂时性计算机可读介质的实施方式中,所述压缩数据的方法包括使用在所处理的任何附加数据元素中识别的附加通用信息来更新所述模板的步骤。
在所述非暂时性计算机可读介质的实施方式,所述压缩数据的方法包括如下附加的步骤:如果在比较数据元素与该组模板的步骤中识别出新的公共信息,则更新该组模板以包括新的子模板或次级模板。
在所述非暂时性计算机可读介质的实施方式中,创建模板的步骤包括以下附加步骤:
相互比较一对数据元素,
识别该对数据元素中的两个数据元素的通用数据结构,
创建包含通用数据结构的模板,
将附加的数据元素与模板进行比较,
更新模板以包括在附加的数据元素和至少一个或一对数据元素之间的或另外的数据元素和模板之间为通用的附加数据结构。
在所述非暂时性计算机可读介质的实施方式中,在处理每个后续数据元素以识别每个后续数据元素内的数据结构之后,不断更新所述模板。
在所述非暂时性计算机可读介质的实施方式中,所述压缩数据的方法包括以下附加步骤:
比较每个数据元素与模板,
识别数据元素和模板之间不同的信息,
通过存储数据元素和模板之间的不同的信息来创建条目,其中每个条目对应于单一数据元素。
在所述非暂时性计算机可读介质的实施方式中,所述压缩数据的方法包括基于条目和相应模板对数据进行解压缩的附加步骤,其中所述解压缩数据的步骤包括以下附加步骤:
识别用于解压缩的条目,
用包含在条目中的信息填充模板,创建包括来自模板的信息和来自条目的信息的文件或数据元素,其中文件或数据元素对应于未压缩的条目。
在所述非暂时性计算机可读介质的实施方式中,所述压缩数据的方法包括以下附加步骤:
执行优化过程,其中所述优化过程包括解压所有大小大于相应数据元素大小的一半的条目,
其中所述优化过程进一步包括通过将所述解压缩的条目与一组模板进行比较以创建小于对应数据元素的大小的一半的新压缩条目来重新压缩所述解压缩的条目。
在所述非暂时性计算机可读介质的实施方式中,每个数据元素是数据文件。
根据第二方面,本公开涉及一种用于压缩数据的系统,所述系统包括:
处理器,存储单元,
其中所述处理器与所述处理器进行电子通信,
所述存储单元被配置为执行定义为压缩数据的方法的指令,所述处理器被配置为执行所述压缩数据的方法;
所述处理器被配置为接收用于压缩的数据串,其中所述数据串包括多个数据元素,
所述处理器被配置成基于处理所述数据串来创建模板,所述模板包括所述数据串的所有数据元素之间的通用信息,
所述处理器被配置成创建一个或多个条目,其中所述一个或多个条目包括与所述模板不同的信息,
所述处理器被配置为将模板和一个或多个条目存储在存储单元中。
在一实施方式中,所述处理器被配置为识别所述数据串的每个数据元素与所述创建的模板之间的差异,并且其中每个条目对应于所述多个数据元素中的单一数据元素,且条目包括数据元素和模板之间的差异。
在所述用于压缩数据的系统的实施方式中;
所述处理器被配置为将数据元素相互进行比较,
所述处理器被配置为识别两个或多个数据元素之间的通用信息,
所述处理器被配置为创建包括两个或多个数据元素之间的通用信息的模板。
在所述用于压缩数据的系统的实施方式中;
所述处理器被配置为创建所述多个数据元素中的每个数据元素的表示,其中所述表示是允许数据元素相互比较的格式,
所述处理器被配置为将每个数据元素的每个表示临时存储在所述存储单元中,
所述处理器被配置为确定每个表示的平均信息量,其中,平均信息量是数据元素内的数据结构的度量,
所述处理器被配置为基于每个表示的平均信息量对表示进行排序。
在一实施方式中,所述处理器被配置为比较表示对以识别一对表示中的通用信息,
所述处理器被配置为创建包括通用信息的多个模板,其中每个模板包括一对表示中的通用信息;
处理器被配置为创建N/2个模板,其中N是表示的数量。
在一实施方式中,所述处理器被配置为比较表示对以识别所述一对表示的通用信息,
所述处理器被配置为将所述通用信息整理为子模板,
所述处理器被配置为创建多个子模板,其中所述子模板之间包括一对表示中的通用信息,
所述处理器被配置为比较子模板对以识别所述子模板上的通用信息,
所述处理器被配置为基于比较子模板对来创建附加的次级模板,其中所述次级模板包括所述子模板之间的通用信息,
所述处理器被配置为将次级模板相互比较以识别次级模板之间的通用信息,以及
所述处理器被配置为基于所述次级模板上的所述公共信息来创建所述模板,其中所述模板包括所述次级模板之间的通用信息。
在一实施方式中,所述处理器被配置为当比较子模板对时识别模板损失值,其中所述模板损失值是一对子模板之间的差异,并且如果所述模板损失值大于10%,处理器被配置为将子模板分别存储为存储单元中的单独条目,并且其中所述模板和所述次级模板作为一组模板存储在文件夹或文件中。
在一实施方式中,所述处理器被配置为将每个数据元素与所述模板组进行比较以识别每个数据元素与模板或次级模板或子模板之间的一个或多个差异,所述处理器进一步被配置为从所述模板组中识别与每个元素产生最小差异的模板或次级模板或子模板,
所述处理器被配置为识别对应的模板或子模板或次级模板的指示符,
所述处理器被配置为创建条目,其中所述条目是压缩的数据元素,并且所述条目包括对应的模板或子模板或次级模板与所述指示符之间的最小差异,
所述处理器被配置为将所述条目存储在所述存储单元中;及
所述处理器还被配置为从所述模板组中删除在创建所述条目时未使用的任何次级模板或子模板。
在一实施方式中,所述处理器被配置为将一对数据元素相互进行比较,
所述处理器被配置为识别所述一对数据元素中的两个数据元素的一个或多个通用数据结构,
所述处理器被配置为创建包括一个或多个通用数据结构的模板,
所述处理器被配置为将另外的数据元素与所述模板进行比较,
所述处理器进一步被配置为更新所述模板以包括在所述另外的数据元素和至少一个或一对数据元素或所述另外的数据元素和所述模板之间为通用的附加数据结构。
在一实施方式中,所述处理器被配置为在处理每个后续数据元素以识别每个后续数据元素内的数据结构之后更新所述模板,所述模板被存储在所述存储单元中。
在一实施方式中,所述处理器被配置为将每个数据元素与所述模板进行比较,
所述处理器被配置为识别所述数据元素和所述模板之间不同的信息,
所述处理器被配置为通过将所述数据元素和所述模板之间不同的信息包括到所述条目中来创建条目,其中每个条目对应于单一数据元素,并且所述处理器被配置为将所述条目存储在存储单元中。
在一实施方式中,所述处理器被配置为执行优化处理,所述优化处理作为可执行指令被存储在所述存储单元中,
其中作为所述优化处理的一部分,所述处理器被配置为解压缩大于所述对应数据元素的大小的一半大小的所有条目,
所述处理器进一步被配置为通过将所述解压缩条目与一组模板进行比较以创建小于对应数据元素的大小的一半的新压缩条目来重新压缩所述经解压缩条目,及
所述处理器被配置为将新的压缩条目存储在存储单元的记录中。
在本发明的另一方面,提供一种用于压缩文本格式文件的计算机系统,所述文本格式文件包括文本文件、XML文件、HTML文件、UML文件、Latex文件、MS Word文档文件、PDF文件、Rich Text Format(RTF)文件、postscript文件Latex文件、,所述计算机系统包括:
处理器,存储单元,
其中所述处理器与所述处理器进行电子通信,
所述存储单元被配置为执行定义为压缩文本格式文件的方法的指令,所述处理器被所述可执行指令指示执行所述压缩文本格式文件的方法;
所述处理器被配置为从所述文本格式文件的至少一部分接收用于压缩的数据串,其中所述数据串包括多个基于文本的结构元素,
所述处理器被配置为基于处理所述数据串来创建模板,所述模板包括所述数据串的所有基于文本的结构元素之间的通用信息,
所述处理器被配置成创建一个或多个条目,其中所述一个或多个条目包括与所述模板不同的信息,
所述处理器被配置为将所述模板和所述一个或多个条目存储在所述存储单元中;
其中所述处理器还被配置为识别所述数据串的每个基于文本的结构元素与所述创建的模板之间的差异,并且其中每个条目对应于所述多个基于文本的结构元素中的单一数据元素,并且所述条目包括数据元素和模板之间的差异;
所述处理器被配置为将基于文本的结构元素相互进行比较,
所述处理器被配置为识别两个或多个基于文本的结构元素之间的通用信息,
所述处理器被配置成创建包括两个或多个基于文本的结构元素之间的通用信息的模板;其中,
所述处理器被配置为创建所述多个基于文本的结构元素中的每个基于文本的结构元素的表示,其中所述表示是允许基于文本的结构元素相互比较的格式,
所述处理器被配置为将每个基于文本的结构元素的每个表示临时存储在存储单元中,
所述处理器被配置为确定每个表示的平均信息量,其中,平均信息量是基于文本的结构元素内的数据结构的度量,并且
所述处理器被配置为基于每个表示的平均信息量对表示进行排序;其中,所述处理器被配置为比较表示对以识别一对表示中的通用信息,
所述处理器被配置为创建包括通用信息的多个模板,其中每个模板包括一对表示中的通用信息,
所述处理器被配置为创建N/2个模板,其中N是表示的数量;其中所述处理器被配置为比较表示对以识别所述表示对的通用信息,
所述处理器被配置为将所述通用信息整理为子模板,
所述处理器被配置为创建多个子模板,其中所述子模板包括一对表示中的通用信息,
所述处理器被配置为比较子模板对以识别所述子模板之间的通用信息,
所述处理器被配置为基于比较子模板对来创建附加的次级模板,其中所述次级模板包括所述子模板之间的通用信息,
所述处理器被配置为将次级模板相互比较以识别次级模板之间的通用信息,以及
所述处理器被配置为基于所述次级模板上的所述通用信息来创建所述模板,其中所述模板包括所述次级模板的通用信息;其中,
所述处理器被配置为当比较子模板对时识别模板损失值,其中所述模板损失值是一对子模板之间的差异,并且如果所述模板损失值大于10%,则所述处理器被配置为将子模板分别存储为存储单元中的单独条目,并且其中模板和次级模板作为一组模板存储在文件夹或文件中;其中所述处理器被配置为将每个数据元素与所述模板组进行比较以识别每个数据元素与模板或次级模板或子模板之间的一个或多个差异,
所述处理器还被配置为从所述模板组中识别与每个元素产生的最小差异的模板或次级模板或子模板,
所述处理器被配置为识别对应的模板或子模板或次级模板的指示符,
所述处理器被配置为创建条目,其中所述条目是压缩的数据元素,并且所述条目包括对应的模板或子模板或次级模板与所述指示符之间的最小差异,
所述处理器被配置为将所述条目存储在所述存储单元中;以及
所述处理器还被配置为从所述模板组中删除在创建所述条目时未使用的任何次级模板或子模板;其中所述处理器被配置为将一对基于文本的结构元素相互进行比较,
所述处理器被配置为识别所述一对基于文本的结构元素中的两个基于文本的结构元素的一个或多个通用数据结构,
所述处理器被配置为创建包括一个或多个通用数据结构的模板,
所述处理器被配置为将另外的基于文本的结构元素与该模板进行比较,
所述处理器进一步被配置为更新所述模板以包括在所述另外的数据元素与至少一个或一对基于文本的结构元素之间的或所述另外的数据元素与所述模板之间为通用的附加数据结构;其中,
所述处理器被配置为在处理每个后续数据元素以识别每个后续数据元素内的数据结构之后更新所述模板,所述模板被存储在所述存储单元中;其中,
所述处理器被配置为将每个基于文本的结构元素与模板进行比较,
所述处理器被配置为识别基于文本的结构元素和模板之间不同的信息,
所述处理器被配置为通过将所述基于文本的结构元素和所述模板之间不同的信息包括到所述条目中来创建条目,其中每个条目对应于单一基于文本的结构元素,并且所述处理器被配置为将所述条目存储在存储单元;其中,
所述处理器被配置为执行优化处理,优化处理作为可执行指令被存储在存储单元中,
其中作为所述优化过程的一部分,所述处理器被配置为解压缩大于相应的基于文本的结构元素的大小的一半的大小的所有条目,
所述处理器进一步被配置为通过将所述解压缩的条目与一组模板进行比较以创建小于对应的基于文本的结构元素的大小的一半的新的压缩条目来重新压缩所述解压缩的条目,并且所述处理器被配置为存储所述新的压缩条目在存储单元的记录上。
本文使用的术语“包括”(及其语法上的变化)以“具有”或“包括”的包含性的含义使用,而不是以“仅由......组成”的意义使用。
附图说明
现在将通过举例的方式参照附图来描述预订系统和预定空间的方法的实施方式,在附图中:
图1示出了被配置为执行压缩数据的方法的硬件计算系统的示意图。
图2示出了被配置为执行压缩数据的方法的微控制器的示意图。
图3示出了压缩数据的方法的实施方式。
图4示出了用于数据压缩的系统内当系统实现压缩数据的方法时的处理流程的示意图。
图5示出了解压缩数据的方法的实施方式,解压缩数据的方法可由硬件系统执行。
图6示出了压缩数据的方法的实施方式的流程图,该方法可由硬件系统执行。
图7示出了压缩数据的方法的另一个实施方式的流程图。
图8示出了创建模板的方法的流程图,创建模板的方法是压缩数据的方法的一部分。
图9示出了创建条目的方法的流程图,创建条目的方法是压缩数据的方法的一部分。
图10示出了创建条目的示例方法的流程图。
图11示出了一个docx文件的XML表示的示例。
图12示出了说明根据本公开的压缩数据的方法和其它已知的压缩数据的方法之间进行的测试的结果的表格。
具体实施方式
本公开涉及压缩数据的方法和用于压缩数据的硬件系统。尤其是适合以无损方式压缩任何格式的大量数据的压缩数据的方法和压缩数据的硬件系统。如本文所述的压缩数据的方法对于至少一些数据格式进一步实现大于2:1的压缩比。如本文里所描述的压缩数据的方法和用于压缩数据的硬件系统适合于压缩数据文件。用于压缩数据的硬件系统是硬件电子系统,其包括被配置或布置成执行压缩数据的方法的一个或多个电子组件。下面将参照附图描述压缩数据的方法和用于压缩数据的硬件系统的细节。
参考图1,该图示出了用于压缩数据的硬件系统100的实施方式。所图示的实施方式被布置成提供用于压缩数据的系统,其包括被配置为执行用于压缩数据的方法的处理器。处理器被配置为接收用于压缩的数据串,基于处理数据串来创建模板,并且创建包括与模板不同的信息的一个或多个条目。该模板包括两个或多个数据元素之间的通用信息,每个条目对应单一数据元素。系统100还包括存储单元,其被配置为存储模板和一个或多个创建的条目。模板和一个或多个条目表示数据元素和数据串的压缩形式。
在该示例实施方式中,处理器和存储单元由计算设备实现。计算设备可以通过任何计算体系结构来实现,包括独立的PC、客户机/服务器体系结构、云计算体系结构或任何其他适当的体系结构。处理器和存储器也可以以芯片、微电路、集成电路(IC)或微控制器的形式实现。压缩数据的方法被实现为计算设备或芯片或IC或微控制器上的软件程序。计算设备或芯片或IC或微控制器被适当地编程以执行压缩数据的方法,该方法创建用于压缩的两个或多个数据元素公共信息的模板,并创建体现与模板不同的信息的条目,其中每个条目对应每个数据元素。
参考图1,示出了用于压缩数据的硬件系统的示意图,其在所示实施方式中包括计算设备100。计算设备100是用于压缩数据的系统。计算设备100包括接收、存储和执行适当的计算机指令所需的合适的组件。这些组件可以包括处理器102或处理单元、只读存储器(ROM)104,随机存取存储器(RAM)106、诸如磁盘驱动器108的输入/输出(I/O)设备、诸如以太网端口、USB端口等的输入设备110。
在可选实施方式中,计算设备可以包括单一存储单元。在另一可选实施方式中,计算设备可以包括ROM 104和RAM 106以及诸如闪存和/或固态存储器的附加存储单元。
计算设备100可以进一步包括诸如液晶显示器(LCD)或CRT屏幕的显示器112、发光显示器或任何其他合适的显示器,以及通信链路114。计算设备100包括可以存储在ROM104、RAM 106或磁盘驱动器108,并且可以由处理器102执行的指令。指令可以是软件程序或多个软件程序的形式。指令由处理器102执行以使处理器执行如本文所述的压缩数据的方法。
可以提供多个通信链路114,其可以不同地连接到一个或多个计算设备,诸如服务器、个人计算机、终端、无线或手持计算设备。多个通信链路中的至少一个可以通过电话线或其他类型的通信链路连接到外部计算网络。
计算设备100包括存在于磁盘驱动器108上或计算设备100的ROM 104或RAM 106中的合适的操作系统。操作系统可以包括合适的组件,诸如进程管理器,文件处理、中断、存储管理器,I/O系统管理器和保护系统。操作系统及其组件可以实现为计算机程序。
计算设备100还包括将处理器102与计算设备100的其他部件互连的系统总线120。在图1所示的实施方式中,系统总线120将处理器102与ROM 104、RAM 106、磁盘驱动器108,输入设备110、显示器112和通信链路114以及计算设备100的其他组件互连。
具有适当应用程序接口的计算机程序可被创建并存储在系统或存储单元上。诸如ROM 104、RAM 106或磁盘驱动器108的机器可读存储器单元清晰地表现可由处理器102执行的至少一个指令程序,以执行如本文所述的压缩数据的方法的可能或步骤。
计算设备100包括容纳并保留计算设备100的所有组件的外壳130。图1示出了外壳130至少容纳处理器102、ROM 104、RAM 106、磁盘驱动器108和通信链路114。壳体130可以由任何合适的材料例如塑料材料形成。
图2示出了用于压缩数据的系统的另一个实施方式。图2示出了微控制器的内部组件,其可以用来通过执行如将在本文描述的压缩数据的方法压缩数据。
参考图2,微控制器200包括中央处理单元(CPU)202、ROM 204、RAM206、输入/输出(I/O)一个或多个端口208。微控制器200还包括串行总线210或另一合适的总线系统,其连接CPU 202、ROM 204、RAM 206和I/O端口208。微控制器200还可以包括模数转换器(ADC)212、数模转换器(DAC)214、时钟信号发生器216以及一个或多个串行接口端口218。CPU 202也可以被称为处理器。
可以创建具有适当应用程序接口的计算机程序并将其存储在微控制器200上。诸如ROM 204或RAM 206的机器可读存储器单元清晰地表现可由CPU 202执行的至少一个指令程序以执行如本文所述的压缩数据的方法的功能或步骤。
将参照附图描述压缩数据的方法的实施方式。压缩数据的方法包括以下步骤:接收用于压缩的数据串,基于处理数据串创建一个或多个模板,识别每个数据元素与一个或多个模板之间的差异,创建一个或多个条目并存储条目。数据串包括多个数据元素。该模板包括数据字符串的两个或多个数据元素通用信息。每个条目对应于每个数据元素,并且每个条目包括来自与一个或多个模板不同的数据元素的信息。一个或多个模板和一个或多个条目与压缩数据串相关。
数据串可以是任何格式的多个数据。数据串包括多个数据元素,其中每个数据元素是数据串的子集或组件。数据字符串和数据元素可以是任何格式。例如,数据串可以是多个数据文件或文档或视频流或图像流或音频流。数据串的每个数据元素是单一数据单元,对于视频数据的数据串,每个数据元素是一个帧,或者如果数据串是多个文档,则每个数据元素是单一文档。在一个示例中,数据串包括多个数据文件,并且每个数据元素是单一数据文件。
图3示出了压缩数据的方法300的实施方式。压缩数据的方法300由硬件系统实现,例如通过前面描述的计算设备100或微控制器200。压缩数据的方法300作为一组可执行指令被存储在存储器中。计算设备的处理器102或微控制器200的CPU 202被配置为读取和执行所存储的指令并且执行压缩关于输入数据串的数据的方法。
参考附图,压缩数据的方法300在步骤301开始。在步骤301,处理器接收数据串。数据串包括多个数据元素。在图3所示的实施方式中,每个数据元素是数据文件。操作系统的数据处理器可以被操作系统的数据处理器接收并初始处理。在可选实施方式中,数据串可以由适当的硬件或软件接口接收并传递给处理器进行压缩。
在步骤302,处理器被配置为通过处理数据串来创建至少一个模板。该模板包含两个或多个数据元素之间的通用信息。通用信息可以是在数据元素内包含的数据结构。例如,数据结构可以是标题、名称,页眉,页脚,线条,形状轮廓等等。数据结构取决于数据元素的格式。可选地,处理器可以被配置成创建一组通用模板。该模板被创建为一个文件并存储在一个合适的存储单元中。
该方法进行到步骤303,其中处理器被配置为创建一个或多个条目,其中该一个或多个条目包括在数据元素和模板之间不同的信息。每个条目对应于单一数据元素。
步骤304包括将所述至少一个模板和所述一个或多个条目存储在适当的存储单元中。每个条目都包含数据元素中存在并且与适当的模板不同的信息。压缩的数据或信息包括一个或多个模板和一个或多个条目。
图4示出了用于数据压缩的系统内的处理流程的示意图。处理流程可以发生在计算设备100或微控制器或用于实现和执行数据压缩方法300的任何其他合适的硬件系统中。
参考图4,由计算设备100或微控制器200接收数据串400。数据串400包括多个数据元素402、404、406、408。每个数据元素是文件,并在图4中被图示为文件A到文件D。数据元素以及数据串由处理器102、202进行压缩410。处理器102、202可以如上所述执行方法300。如所描述的,压缩数据元素、创建模板并创建对应于每个数据元素的条目。图4示出了文件A到文件D的压缩包括创建模板并为每个文件创建条目,其中每个条目对应于每个文件。如图4所示,可以标记条目以识别相应的文件。例如,条目被标记为条目A至条目D。如图4所示,模板412和条目414、416、418和420被存储在系统中的存储单元中用于压缩数据。
压缩的数据元素可以使用解压缩的方法来解压缩。硬件系统的处理器被配置为响应于解压缩存储的数据的命令或指令来执行解压缩方法。图5示出了可以由处理器102、202执行的解压缩方法的实施方式。解压缩数据的方法包括步骤501。在步骤501,处理器被配置为识别用于解压缩的条目。步骤501还可以包括处理器识别用于解压缩的多个条目。在步骤502,处理器被配置为用包含在条目中的信息来填充模板。在步骤503,处理器被配置为创建包括来自模板的信息和来自条目的信息的文件或数据元素。创建的数据文件或数据元素对应于解压缩的数据元素或数据文件。解压缩的方法是有利的,因为数据元素被没有信息损失地重新创建。在步骤502,处理器可以使用单一模板或对应于特定条目的模板来解压缩条目。
图4还显示了解压缩条目的流程。如图4所示,处理器102、202被配置为识别用于解压缩的数据条目。参考图4,识别条目A和条目B以供处理器102、202解压缩。每个识别的条目与模板相关联。解压缩的方法是通过用来自条目的信息填充模板来重新创建相应的文件来使用的。相应的文件是相应条目的解压缩版本。在图4中,文件A与解压缩的条目A相关,而文件B与解压缩的条目B相关。
图6示出了压缩数据的方法600的实施方式。图6中所示的方法被存储为诸如ROM或RAM或磁盘驱动器的非临时性存储单元中的计算机可读和可执行指令。诸如处理器102、202的硬件处理器被配置为执行指令,使得处理器可以执行压缩数据的方法600来压缩接收的数据。
参考图6,压缩数据的方法600包括以下步骤。该方法包括步骤601。在步骤601,处理器接收包括一个或多个数据元素的用于压缩的数据串。处理器被配置为处理数据元素以基于两个或多个数据结构内的通用信息来创建模板。
创建模板的方法步骤将被更详细地描述。在步骤602,处理器102、202被配置成创建每个数据元素的表示。该表示可以是格式特定的表示。该表示是允许处理器102、202将数据元素相互进行比较的格式。
在步骤603,处理器102、202被配置为将每个数据元素的每个表示临时存储在存储单元中。在步骤604,处理器102、202被配置为确定每个表示的平均信息量。平均信息量或文件平均信息量是特定文件中数据集的表示。处理器被配置为使用任何合适的过程来确定每个数据元素的平均信息量。在步骤605,处理器被配置为基于每个表示的平均信息量对表示进行排序。这些表示可以按照平均信息量的降序排序或排列。可选地,表示可以按照平均信息量的升序排序或排列。在进一步的可选方案中,可以对表示进行排序,使得具有相似信息量值的表示被关联或分组。
步骤606包括处理器比较表示对以识别对表示对为通用的信息。在一个示例中,通用信息可以是这些表示对所通用的数据结构。
在步骤607,处理器被配置为将通用信息整理成子模板。每个子模板可以包括与一对表示通用的信息。在步骤608,处理器被配置为创建多个子模板,其中每个子模板包括与至少一对表示通用的信息。在步骤609,处理器被配置为比较子模板对以识别子模板之间的通用信息。在步骤610,处理器被配置为基于比较子模板对创建附加的次级模板。次级模板包括至少一对子模板之间的通用信息。
在步骤611,处理器被配置为进一步将次级模板相互比较以识别次级模板之间的通用信息。步骤612包括处理器基于在次级模板之间为通用的信息创建单一模板。在一个示例中,该过程使用次级模板以606-611完成的方式构建更多的次级模板,而新创建的模板的数量减半。此循环继续,直到只剩下一个模板。例如,如果有32个输入,则有16个子模板,8个次级模板,然后有4个来自次级模板的第三级模板,然后是2个第四级模板,最后是单一模板。
在步骤613,处理器102、202被配置为将单一模板、次级模板和子模板整理并存储在存储单元中。单一模板、次级模板和子模板作为一组模板存储在模板文件夹或文件中。可以使用Deflate压缩算法将该组模板打包成单一压缩文件,例如ZIP压缩文件。可以将该组模板打包到文件夹中,其中每个子模板和/或次级模板和/或单一模板被存储为.template文件,其中.template文件对于每个单独的子模板或次级模板或单一模板具有唯一名称。.template文件(即单一模板)可以从文件夹中移除并移动,但是指向特定.template文件位置的链接必须存储在存储该组模板的文件夹中,以方便在解压缩期间访问移动的.template文件。
单一模板、次级模板和子模板可选地可以临时存储在诸如ROM或RAM或磁盘驱动器的存储单元或任何其他合适的非暂时性计算机可读介质中。
处理器102、202可以进一步被配置为在比较子模板对时识别模板损失值。模板损失值是模板与每对子模板之间差异的最大值。如果模板损失值大于输入子模板大小的10%,则处理器被配置为将每个子模板分别存储在模板文件夹中。可以将类似的过程和参数应用于次级模板的比较。此外,如果模板和子模板的总数大于输入数据元素的数量的四分之一,或者如果元素的数量小于4,则处理器102、202被配置为恢复使用标准压缩方法,诸如Deflate压缩算法。在一个实施方式中,处理器可以被配置成实现如关于图6所描述的创建模板的步骤,作为用于压缩数据的方法300的一部分。
数据压缩的方法600继续压缩数据元素。处理器被配置为使用模板、次级模板或子模板来压缩每个数据元素。现在用于创建和存储条目的方法步骤将被描述。在步骤614,处理器被配置为将来自数据串的每个数据元素与该组模板进行比较,以识别数据元素与模板或子模板或次级模板之间的一个或多个差异。步骤615包括处理器从与每个数据元素产生最小差异的一组模板中识别模板或次级模板或子模板。在步骤616,处理器被配置为识别在步骤616中识别的对应模板或子模板或次级模板的指示符。步骤617包括处理器创建条目,其中条目是压缩数据元素,并且条目包括在数据元素与所标识的模板或次级模板或子模板之间不同的信息。条目中的信息是在数据元素与所标识的模板或次级模板或子模板之间的信息中的最小差异。每个创建的条目对应于单一的数据元素,并表示压缩的数据元素。
在步骤618,处理器被配置为将每个创建的条目存储在存储单元中,例如存储在ROM、RAM或磁盘驱动器中。在步骤619,处理器被配置为删除在创建条目时未使用的任何次级模板和/或子模板。模板文件夹仅包含用于创建条目的子模板、辅助模板。模板文件夹还包含一个单一模板,该单一模板使用上述创建模板的步骤创建。处理器被配置为如果在步骤614中识别出新的通用信息,则将该组模板更新为包括新的子模板或次级模板。方法600由处理器实现以将接收到的数据串压缩并存储在非暂时性计算机可读存储器中,诸如ROM或RAM或任何其他合适的存储单元。
图7示出了压缩数据的方法700的实施方式。压缩数据的方法700由处理器102、202执行。方法700开始于步骤701。在步骤701,处理器被配置为接收用于压缩的数据串,其中该数据串包括多个数据元素。在步骤702,处理器被配置为将来自数据串的一对数据元素相互进行比较。在步骤703,处理器被配置为识别两个数据元素内的公共数据结构。在步骤704,处理器被配置成创建包括通用数据结构的模板。模板可以存储在用于压缩数据的硬件系统的存储单元内的文件夹中。例如,模板可以被存储在ROM 104、204或RAM 106、206中。可选地,该方法可以识别的该对数据元素的通用信息可以是数据元素内的数据结构以外的信息。
在步骤705处,处理器被配置为将来自数据串的另外的数据元素或下一个数据元素与创建的模板进行比较以识别另外的数据元素内的任何通用信息或通用数据结构。在步骤706,处理器被配置为更新模板以包括在另外的数据元素和至少一个在先的数据元素之间通用的任何附加的数据结构。可以重复步骤705和706直到所有的数据元素都已经被认为创建了模板。处理每个随后的数据元素和任何已识别的通用数据结构后,模板会不断更新。随着数据字符串中更多的数据元素被处理,模板可以有效地增长。创建的模板可以作为.template文件存储在一个文件夹或压缩文件(如ZIP压缩文件)中。
在方法700中,处理器被配置成创建通用数据结构的单一模板。单一模板用于压缩数据串中的每个数据元素。方法步骤702至706定义了创建模板的方法。这些方法步骤可以由处理器执行,作为方法300中的步骤302的一部分。
压缩数据的方法700进行到步骤707。在步骤707,处理器被配置为将每个数据元素与通用模板进行比较。在步骤708,处理器被配置为识别数据元素和模板之间不同的信息。在步骤709,处理器被配置为创建条目。该条目是通过存储数据元素中存在的与模板信息不同的信息而创建的。每个创建的条目对应于单一数据元素。每个条目与压缩的数据原始有关或表示压缩的数据原始。处理器被配置成创建多个条目。在步骤710,处理器还被配置为将每个条目和模板存储在存储单元中。压缩记录包含通用模板和所有条目。压缩的条目和模板可以存储在一个ZIP压缩文件中。至少可以重复步骤705至709,直到来自数据串的所有数据元素都被压缩为条目。随后,处理器被配置为将所有条目和模板以诸如文件夹或ZIP压缩文件的适当格式存储在存储单元中。
参考图8和图9,示出了压缩数据的另一方法。图8示出了创建模板的方法800的实施方式。创建模板的方法800是压缩数据的整个方法的子方法。图9示出了使用在方法800中创建的一个或多个模板创建条目的方法900的实施方式。由方法900创建的条目表示压缩的数据元素。压缩数据的方法包括创建模板的方法800和创建条目的方法900的组合。
参考图8,创建模板的方法800将被更详细地描述。方法800由来自系统的用于压缩数据的硬件处理器(诸如处理器102、202)实施和执行。方法800从步骤801开始。在步骤801,处理器接收数据串。数据串包括多个数据元素。如图8所示,处理器接收标记为文件1、文件2直到文件N的多个文件。步骤802包括创建文件的表示。处理器被配置为以通用格式创建每个文件的表示,从而可以将文件相互进行比较。在步骤803,处理器被配置成计算表示的平均信息量并通过平均信息量对表示进行分类。在步骤804,处理器被配置为检查是否有奇数输入,即奇数数据元素。如果否,则该方法进行到步骤805。在步骤805,处理器被配置为将输入(即表示)配对用于比较。在步骤806,处理器被配置为比较输入并创建模板。处理器创建N/2个模板,其中N是接收到的用于压缩的数据元素的数量。图8示出了由处理器创建的标记为模板1、模板2到模板N/2的多个模板。
如果在步骤804存在奇数输入,则在步骤807处理器被配置为提取最后的输入,即对应于数据元素的最后的表示。在步骤808,处理器使用最后的输入。在步骤808处理器将最后的输入或额外输入与最后的模板进行比较以创建额外的模板。在步骤809,处理器确定输入是表示还是模板。如果输入是模板,则该方法进行到步骤810。在步骤810,处理器被配置为存储创建具有大模板损失的模板的输入。处理器被配置为在比较模板对时确定模板损失,并且如果模板损失大于10%,则输入模板被存储,并且不创建进一步的模板或次级模板。如果模板损失小于10%,则会创建一个新的模板,该模板包含相互比较的模板对之间的通用信息。该过程可以重复,直到处理器生成单一模板,即,处理器被配置为比较模板对以生成新的包括与被比较的模板对通用的信息的次级模板,并且重复该过程直到生成单一模板。在步骤811,处理器检查是否已经生成新的单一模板。如果否,则方法返回到步骤804,并且处理器被配置为重复处理步骤804直到811。处理器可以被配置为重复处理步骤804到811,直到生成单一模板。
在步骤809,如果表示不是模板,则该方法进行到步骤811。如果表示不是模板,则这可以表明压缩方法和创建模板的方法遇到错误。步骤811中的答案将被返回为“否”,因此处理器将重复步骤804至811,直到步骤811中的检查返回新的单一模板为“是”。
如果存在在步骤811识别的单一模板,即检查返回是,则该方法进行到步骤812。在步骤812,处理器被配置为将单一模板且存储的模板存储为一组模板。该组模板存储在一个文件夹中,每个模板或子模板都标有唯一的标签。例如,每个模板将被标记为.template文件。在一个示例中,第一模板可以被标记为.template 1,第二模板可以是.template 2等等。每个.template文件可以从模板的文件夹或压缩文件中移动,但是.template文件的新存储位置的链接将被放置在文件夹或压缩文件中。图8将存储的模板显示为存储模板1、存储模板2等。
参考图9,示出了使用模板900来创建条目以在数据串中压缩数据元素的方法。方法900作为一组可执行指令存储在存储单元中。方法900由用于压缩数据的硬件系统的处理器执行,例如处理器102、202。方法900包括以下步骤。在步骤901,处理器被配置为选择特定数据元素,其中数据元素可以诸如是数据文件。在步骤902,将所选数据元素与一组模板进行比较。在步骤903,通过比较数据元素与该组模板中的模板和子模板来压缩数据元素(例如数据文件)。
在步骤904处,处理器被配置为识别数据元素与所存储的模板之一之间的差异。处理器被配置为识别导致最小差异的模板,即,数据元素(例如,数据文件)和来自该组模板的模板之间的不同信息。即,所选模板和数据元素之间不同的信息作为条目存储在存储单元中。每个条目可以存储为文件并进行适当标记,以便在任何其他操作中可以调用每个条目。该条目还包括一个指示器,指示从该组模板中使用的创建条目的模板。如果创建的条目数量大于原始对应的数据元素,数据元素将作为条目存储。
步骤905包括处理器在新模板被返回的情况下更新模板。如果有新的通用信息或者通用数据结构被识别,新的模板被创建。在步骤906,处理器被配置为检查来自数据串的所有数据元素是否被压缩。如果否,则方法900返回到步骤901并重复步骤901到906。重复步骤901到906,直到所有数据元素被压缩。
如果步骤906中的检查结果为是,则方法进行到步骤907。在步骤907,处理器被配置为移除未使用的模板。处理器删除所有不用于创建条目的模板和/或子模板。在步骤908,处理器被配置成将模板存储在文件或文件夹中。在图9中,模板的记录可以存储为.template记录或文件夹。在步骤909,处理器被配置为确定条目(即,文件)是否需要打包到单一压缩文件中。如果是,则在步骤909,处理器被配置为执行步骤910。在步骤910,处理器被配置为使用合适的压缩方法(例如deflate压缩)将步骤904中创建的条目和方法800中创建的模板放入压缩文件。压缩文件可以包括所有创建的模板,如.template记录和所有条目,即.diff文件。在步骤911,所有模板和条目被存储在ZIP压缩文件中。可选地,如果步骤909中的检查返回为否,则处理器被配置为执行步骤912。在912,处理器被配置为将条目和模板存储在存储单元中。
图10示出了创建条目1000并存储条目的可选方法。一旦压缩条目的初始记录和一个或多个模板已经被创建,下面的方法1000可以用于压缩可能被接收的附加文件。如图10所示,硬件系统可以包括K个存储的模板和N个文件即条目。处理器接收标记为文件1的用于压缩的文件。在步骤1001,处理器被配置为检查存储的模板的数量是否大于文件的数量除以4,即是否K大于N/4。如果是,则处理器进行到步骤1002,其中处理器被配置为使用deflate压缩算法压缩新文件(文件1)。在步骤1003,存储新的压缩文件1。
如果在步骤1001处理器确定K小于N/4,即步骤1001返回否,则处理器进行到步骤1004。在步骤1004,处理器被配置为计算文件1和每个存储的模板之间的差异。在步骤1005处理器分析所有差异。从图10中可以看出,差异1到差异K的差异。每个标记的差异对应于文件1和模板之间的差异。在步骤1006处,处理器被配置为从所识别的差异中选择最小差异。在步骤1007,差异X是最小的差异。在步骤1008,处理器被配置为检查差异X是否小于原始文件的大小,即差异X是否小于文件1的大小。如果否,则处理器被配置为存储文件1而不压缩或修改它,如在步骤1009所示。如果步骤1008中的检查返回“是”,即文件和模板之间的最小差异小于文件的大小,则处理器被配置为执行步骤1010。在步骤1010,处理器被配置为创建包含差异的条目和指向所使用的模板的指示符。该条目对应于压缩文件1。该条目显示为差异X,并存储在压缩记录中。压缩记录包括与已压缩的其他文件相对应的模板和其他条目。
方法1000可以应用于在初始化过程之后压缩任何附加的接收文件。初始化过程可以包括仅创建模板或创建模板并创建用于压缩的第一组文件的条目。初始化过程可以包括前面所述的方法中的任何一种,诸如方法600、700或者800和900的组合。方法1000可以与之前描述的任何一种方法结合使用。
在一个实施方式中,压缩数据的方法可以包括执行优化处理以优化压缩数据的附加步骤。处理器可以被配置为执行优化处理以优化全部压缩。处理器被配置为执行优化处理,其中优化处理包括解压缩大于对应数据元素的大小的一半的大小的所有条目。优化过程进一步包括处理器被配置为通过将解压缩的条目与一组模板进行比较来重新压缩解压缩的条目以创建小于对应数据元素的大小的一半的新的压缩条目。从压缩文件中移除文件只是移除相应的差异文件即条目。作为优化过程的一部分,不会对模板进行更改。
压缩数据步骤的具体方法的附加细节和示例现在将被描述。以下是创建在前面描述的压缩数据的任何一个或多个方法中使用的表示的非限制性示例性描述。与文本文件不同,许多文件格式具有复杂的数据结构,例如Adobe PDF文件。某些文件格式默认为压缩格式,如Microsoft文档、图像或视频。为了直接比较文件,需要每种文件格式的表示以允许内容比较,支持相应文件的特征,并且允许创建文件的相同副本而不损坏或破坏原始文件中的信息。现在创建表示的示例实现将被描述。在这个示例中,docx文件可以被处理器转换成表示。docx文件可以转换成一个XML文件。XML文件是一种表示形式。XML文件可以包含docx文件中的数据结构,如字体表、样式、属性等。XML表示可以与其他docx文件的其他XML表示进行比较。docx文件是固有的压缩记录。XML表示对应于解压缩的docx文件。图11示出了docx文件的表示1100的示例。XML文件包括主题、图像信息、样式、设置、字体表等等。对于视频文件,可以使用一组帧的表示作为表示。docx文件的表示1100是一个示例。
如数据压缩方法中所述,数据文件或数据元素相互比较以识别通用信息。在创建表示之后,需要创建一个或多个模板。将描述创建模板的示例。创建模板的这个示例性过程可以由处理器作为如前所述的任何数据压缩方法的一部分来执行。在为文件定义文件表示之后,需要定义指标来显示两个表示之间的差异并识别通用信息。定义的指标还用于测量模板和数据元素之间的差异,这些数据元素将采用表示形式。同样的指标也将被用来识别任何模板损失。为要创建模板,处理器被配置为识别名字是通用的表示。对于每一对通用的表示,Smith-Waterman算法用于找出表示之间的最佳通用部分。文本文件或表示之间的区别是通过Wagner-Fischer算法计算的Levenshtien距离定义的。匹配相等字符和空位延长的损失值为0,匹配不同字符和空位开放的损失值为1。例如,app.xml是来自具有内容<xml>AACAAd</xml>的数据文件1(即,第一数据文件)的文件。对应于第二数据文件(即数据文件2)的表示app.xml具有内容<xml>AA-A--</xml>。在这个例子中-表示不相等的字符匹配或空位。新的app.xml将使用内容<xml>AAA</xml>创建。创建的文件根据所使用的表示格式的文件结构适当地打包在一起。为了确定模板的损失,模板和每个表示之间的差异如前所述进行计算。差异中的较大值被定义为模板损失。由于模板构造为共享文件表示的相同结构,因此基于两个模板创建模板的过程与基于文件表示的过程相同。如上面的方法所述,模板由处理器相互进行比较,使用相同的表示结构。
对于图像格式,处理器被配置为创建包括一组直方图的表示。直方图的通用部分可以通过将直方图中的字节更改为十六进制值来找到。然后可以将处理器配置为对十六进制值运行Smith-Waterman算法,以创建包含两个或多个图像文件通用信息的模板。
现在将描述基于模板创建条目的非限制性示例。以下描述是可以由硬件处理器执行以创建模板的示例过程。如前所述,可以将以下处理器作为压缩数据的任何一种方法的一部分。创建一个条目,即差异文件与创建模板类似。在这个例子中,文件(即数据元素)和模板中具有通用名称的文件被选择用于比较。对于公共的文本文件,使用Wagner-Fischer算法来计算编辑距离,即Levenshtein距离。可以用来编辑数据元素或模板或两者的编辑过程可以存储在对应于原始数据元素的条目中或作为JSON对象存储。在创建条目的这个示例中,来自数据元素的app.xml具有<xml>AACAAd</xml>内容,而来自模板的app.xml具有<xml>AAAdk</xml>内容。app.xml是模板和数据元素的表示。处理器进一步被配置为执行或应用表示编辑距离为三的Wagner-Fischer算法,编辑“在第6个字符之前添加C,在第7个字符之前添加A,然后移除第12个字符”。然后用内容{5:CA,11:-}创建一个新的app.xml。5,11是基于0的设置中的第6和第12个字符。添加C和A的操作将在同一位置添加字符。更改的字符被存储为删除,然后在相同的位置插入。根据表示的文件结构和条目的形式将新文件(即差异文件)打包在一起。
经过上述比较,唯一的数据元素将被放置在一个条目中。与模板不同的文件将作为单独的条目存储。如果存在包含与模板完全相同的信息或数据结构的数据元素,则相应的条目是与模板名称相同的空文件。
模板标识被创建并存储在条目中。模板标识包括用于创建条目的模板的ID或编号。模板标识可以存储为条目中的.templateID文件。模板的标识可以是例如一组存储的模板中的模板的索引,或者如前所述的一组存储的子模板和次级模板中的模板的索引。可选地,模板的标识可以是特定模板的SHA1#(hash)号。例如,如果使用第二个模板压缩数据元素并创建相应的条目,则该条目将包含第二个模板的SHA1#(hash)号的索引。换码符,例如”.”可以在模板ID文件的名称之后添加。条目(即差异文件)共享表示的相同结构,这意味着它可能是由文件和子文件夹列表组成的文件夹。要将其存储在存储单元中,将使用ZIP压缩文件来存储条目的所有内容和结构,并将压缩文件的名称设置为条目的名称加.diff扩展名。因此,在一个示例中,数据元素文件1.docx变为文件1.docx.diff。
对于多媒体文件,如果表示与模板相同(大小和SHA1),则不创建新的作为条目,即差异文件。否则,多媒体数据元素以适当格式的条目存储。对于图像数据元素,由于直方图的十六进制值本质上是文本,所以创建文本文件的过程仍然可以应用。
在一个示例中,组合模板由处理器执行。处理器被配置为创建一个文件夹来存储每个模板或子模板。单一文件夹存储单一模板,并标有模板的ID。处理器被配置为创建多个文件夹,每个文件夹包括单一模板。这些文件夹被压缩成一个ZIP压缩文件。压缩文件可以用一个合适的扩展名来命名,例如.template。
如前所述,关于图5,处理器被配置为执行解压缩数据的方法。现在将描述解压缩方法的示例实现。处理器被配置为从条目读取模板ID并识别适当的模板。使用该ID,模板将从.template压缩文档或文件夹复制到新的临时文件。对于临时文件中的每个文件,从条目压缩文件中选择具有相同名称的文件。如果来自条目的文件具有空白内容,则删除临时记录中的文件。否则,从编辑序列的条目中提取JSON文件以编辑临时记录中的文件。如果在条目中找不到文件,文件将保持不变。之后,不在临时记录中但存储在条目文件中的文件将被复制回临时记录。临时记录成为要重建的文件或数据元素的表示。由于docx文件的表示是解压缩的压缩文件,所以通过压缩临时记录来创建输出docx文件。
现在将描述示例实现。如本文所述的压缩数据的方法对于将多个文档压缩成较小的记录特别有用。特别地,本文描述的方法特别适合于压缩基于文本的文档。在该示例中,处理器被配置为使用如前所述的数据压缩方法来压缩诸如电费账单的多个文档。在该示例中,所描述的方法700将被用来示出示例性实现。电力公司每年可以向客户发放数百万的账单。为了保持这些数百万钞票的记录,需要存储器上大量的空间。这些账单被存储在诸如PC或服务器的计算系统的存储单元或者云端计算环境中。每张账单都是一个数据元素。计算系统的处理器被配置为比较第一对账单并且识别在这两个账单中共同的公共数据结构。公共数据结构可以是账单的格式,账单之间的唯一区别就是账单上的美元金额、地址和收款人的姓名。创建包含公共数据结构的模板。每个随后的账单都被处理,并且公共数据结构被提取并添加到模板中。模板可以被更新以包括可以被识别为通用的任何附加数据结构。该模板将存储各种常用数据结构,如标题、行、段落、文本等。该模板用于通过创建与每个帐单相对应的条目来压缩每个帐单。每个条目都包含账单和模板之间的差异。差异信息为账单到账单的动态信息。每个条目可以在每个帐单中包括唯一的动态信息,例如姓名、帐单金额、地址等。模板和条目全部存储在存储单元中。
本文描述的任何一种数据压缩方法对于压缩基于文本的文件(诸如Adobe PDF文件或Microsoft文档)特别有用。然而,本文描述的数据压缩方法在压缩非文本类型的文件或数据流如图形文件、多媒体文件、视频文件,音频文件、图像文件等中也是有用的。
压缩数据的方法300、600、700和方法800及900的组合如上所述通过识别包括数据串中数据元素之间的通用信息的一组模板来压缩数据元素或数据串。如本文所述的压缩数据的方法确定一个或多个模板以减少冗余。压缩数据的方法特别适用于压缩包括类似文件或数据元素的数据,诸如来自单一公司的归档发票、账户的银行账单或从单一相机压缩安全素材。压缩数据的方法是有利的,因为压缩的条目是原始数据元素和至少一个模板之间的差异。因此用户可以通过读取条目来读取数据元素的特殊部分或关键点。这在调查和取证方面是有利的和有用的,因为这些调查和取证通常需要从大量通用文件中提取异常数据。此外,模板不受限于特定的压缩文件。用户可以从压缩文件中复制一个或多个模板来压缩具有相似内容的其他数据元素。此外,多个模板可以组合成单一模板或组合成单一模板文件夹。模板文件夹可以上传到公共领域或与其他用户共享,以允许其他用户压缩数据。压缩数据的方法也是有利的,因为它允许实时压缩数据串。
目前描述的压缩数据的方法是有利的,因为这些方法创建了包括在所有数据元素上通用信息或数据结构的模板。通过最初处理所有的数据元素而不是如在现有技术方法中所做的那样处理特定的一组数据元素来创建一个或多个模板。有助于创建模板的第一个数据元素将有助于压缩所有后续的数据元素。现有技术系统仅仅通过几个数据元素向后和向前看,而当前的压缩方法考虑并处理所有数据元素以创建用于压缩数据元素和任何随后接收到的数据元素的模板。
发明人已经测试了包括方法800和900的压缩数据的方法。本发明人还测试了如前所述的压缩数据的方法300。这些方法已经在docx格式的数据元素上进行过测试。数据压缩的方法已经测试了与ZIP(deflate最佳压缩)、7z(Bzip2最佳压缩)和7z(LZMA2最佳压缩)相比较。测试数据集是来自同一家银行的四份银行对账单。测试的目的是评估根据本公开的数据压缩方法的性能。图12显示了说明测试结果的表格。从图12的表格1200可以看出,未压缩数据串的大小为89007字节。列1201表示根据本发明压缩数据的方法的压缩结果。列1202显示ZIP的压缩结果(deflate最佳压缩)。列1203显示了7z的压缩结果(Bzip2最佳压缩)。列1204显示7z(LZMA2最佳压缩)的压缩结果。如表1200中所示,本发明导致3.497的最高压缩比,并导致压缩的数据集比已测试的其他已知压缩算法更小。当前描述的数据压缩方法随着用于压缩的数据串的尺寸增加而导致更高的压缩比。
目前描述的压缩数据的方法是通用数据压缩方法,因为压缩数据的方法使用相同的处理或方法步骤来压缩任何格式的数据,例如文档、图像、视频数据或音频数据。在一个实施方式中,当前描述的压缩数据的方法可以用于压缩网页、JPG、PNG图像连续视频流和计算机系统。压缩数据的方法在硬件计算系统中被实现为软件。压缩数据的方法是有利的,因为该方法(即软件)不需要处理传入的数据文件或数据串或数据流。压缩数据的方法将文件视为数据串加上二进制数据流。因此,压缩数据的方法可用于压缩具有已知或未知格式的文件或数据串或数据流。
尽管不是必需的,但是参考附图描述的实施方式可以被实现为应用程序编程接口(API)或者被开发人员使用的一系列库,或者可以被包括在另一个软件应用程序中,诸如终端或个人计算机操作系统或便携式计算设备操作系统。通常,由于程序模块包括帮助执行特定功能的例程、程序、对象、组件和数据文件,本领域技术人员将理解,软件应用程序的功能可以分布在多个例程、对象或组件中以实现这里所需的相同功能。
本领域技术人员可以理解,在不脱离本发明的精神或范围的情况下,可以对具体实施方式中所示的本发明作出各种变化和/或修改。因此,本实施方式在所有方面都被认为是说明性的而不是限制性的。
还将理解到,在本发明的方法和系统完全由计算系统实现或者由计算系统部分实现的情况下,则可以使用任何适当的计算系统体系结构。这将包括独立的计算机、网络计算机和专用硬件设备。在使用术语“计算系统”、“硬件计算系统”和“计算设备”的情况下,这些术语旨在涵盖能够实现所描述的功能的计算机硬件的任何适当布置。
这里使用的术语仅用于描述特定实施方式的目的,而不意图限制本发明。如本文所使用的,除非上下文另外清楚地指出,否则单数形式“一”,“一个”和“该”也旨在包括复数形式。应进一步理解的是,当在本说明书中使用时,术语“包括”或“包含”指定所述特征、整体、步骤、操作、元件组件和/或组合或其组合的存在,但不排除一个或多个其他特征、整体、步骤、操作、元件、组件和/或组或其组合的存在或附加。
如本文所使用的,术语“和/或”包括任何和所有可能的组合或一个或多个相关所列项目,以及在解释可选(“或”)时缺少组合的情况。
除非另外定义,否则这里使用的所有术语(包括技术和科学术语)具有与本发明所属领域的普通技术人员通常理解的相同的含义。应该进一步理解的是,诸如在通用字典中定义的那些术语应该被解释为具有与其在说明书和权利要求的上下文中的含义一致的含义,并且不应该被理解为理想化或过度形式化的意义除非在本文中明确地定义。为了简洁和/或清楚,可能没有详细描述公知的功能或结构。
除非另外指明,否则本文包含的对现有技术的任何提及不被视为承认该信息是常见的一般知识。应该理解的是,如果任何现有技术信息在本文中被引用,那么这样的引用不构成承认信息构成本领域中的任何其他国家的公知常识的一部分。

Claims (11)

1.一种用于压缩多个数据文件的计算机实现的方法,所述方法包括:
接收格式相同的多个数据文件;
创建多个表示,所述多个表示中的每一个用于所述多个数据文件中的相应一个,所述多个表示允许所述多个数据文件多个进行比较;
确定多个平均信息量,所述多个平均信息量中的每一个用于所述多个表示中的相应一个,每个所述平均信息量为相应数据文件内的数据结构的相应度量;
根据所述多个平均信息量对所述多个表示进行排序;
根据所述排序,对多对所述表示进行比较以在所述多对表示中识别相应的通用信息;
创建多个子模板,所述多个子模板中的每一个包括相应一对表示中的相应通用信息,所述多个子模板包括N/2个模板,其中N是所述多个表示的数量;
对多对所述子模板进行比较以在所述多对子模板中识别相应的通用信息;
创建多个次级模板,所述多个次级模板中的每一个包括相应一对子模板中的相应通用信息;
基于所述多个次级模板之间的通用信息来创建单一模板;
将所述单一模板、所述多个次级模板和所述多个子模板作为一组模板来存储;
对于所述多个数据文件中的每一个,分别:
将数据文件与所述一组模板进行比较以识别所述数据文件与所述一组模板之间的一个或多个差异;
从所述一组模板中识别一个单一模板或一个次级模板或一个子模板,其与所述数据文件产生最小差异;
识别所识别的单一模板或子模板或次级模板的指示符;
为所述数据文件创建条目,所述条目包括(i)所述数据文件和(ii)所识别的单一模板或子模板或次级模板之间的最小差异,并且代表所述数据文件的压缩形式;以及
存储用于所述多个数据文件的多个条目。
2.根据权利要求1所述的方法,该方法还包括:
临时存储每个所述表示。
3.根据权利要求1所述的方法,其中,所述方法还包括:
当比较多对所述子模板对时识别模板损失值,其中计算所述模板与每对所述子模板之间的差异,并且将较大的值设置为所述模板损失值,以及
如果所述模板损失值大于10%,则分开存储所述子模板。
4.根据权利要求1所述的方法,其中,所述一组模板存储在文件夹或文件中。
5.根据权利要求1所述的方法,其中,所述方法还包括:
删除在创建用于所述多个数据文件的所述多个条目时没有使用的所述一组模板中的任何次级模板或子模板。
6.根据权利要求1所述的方法,其中,所述方法还包括:如果在比较所述数据文件与所述一组模板的步骤中识别出新的通用信息,则更新所述一组模板以包括新的子模板或次级模板。
7.根据权利要求1至6中任一项所述的方法,其中,所述方法还包括基于条目和相应模板对数据进行解压缩,其中所述解压缩包括:
识别用于解压缩的条目,
用包含在所述条目中的信息填充对应的所述模板,以及
创建包括来自所述模板的信息和来自所述条目的信息的文件或数据文件,其中所述文件或所述数据文件对应于未压缩的条目。
8.根据权利要求1至6中任一项所述的方法,其中该方法还包括:
执行优化过程,其中所述优化过程包括解压所有大小大于相应数据文件大小的一半的条目,
通过将所述解压缩的条目与一组模板进行比较以创建小于对应数据文件的大小的一半的新压缩条目来重新压缩所述解压缩的条目。
9.根据权利要求1至6中任一项所述的方法,其中,所述多个数据文件为PDF文件或Microsoft文档文件。
10.一种用于压缩数据文件的系统,所述系统包括:
处理器;以及
存储单元,与所述处理器进行电子通信,
所述存储单元被配置为存储可执行指令,所述可执行指令定义权利要求1至8中任一项所述的方法,
所述处理器被配置为执行权利要求1-9中的任一项所述的方法。
11.一种计算机可读存储介质,其存储含程序指令,所述程序指令用于使计算机执行权利要求1至9中任一项所述的方法。
CN201780052077.5A 2016-12-06 2017-11-08 用于压缩数据的方法和系统 Active CN109661779B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
HK16113902 2016-12-06
HK16113902.2 2016-12-06
PCT/CN2017/109890 WO2018103490A1 (en) 2016-12-06 2017-11-08 A method and system for compressing data

Publications (2)

Publication Number Publication Date
CN109661779A CN109661779A (zh) 2019-04-19
CN109661779B true CN109661779B (zh) 2023-12-26

Family

ID=62490721

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780052077.5A Active CN109661779B (zh) 2016-12-06 2017-11-08 用于压缩数据的方法和系统

Country Status (3)

Country Link
US (1) US11017155B2 (zh)
CN (1) CN109661779B (zh)
WO (1) WO2018103490A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112559618B (zh) * 2020-12-23 2023-07-11 光大兴陇信托有限责任公司 一种基于金融风控业务的外部数据整合方法
US11636064B2 (en) * 2021-07-13 2023-04-25 Microsoft Technology Licensing, Llc Compression of localized files
CN116132431B (zh) * 2023-04-19 2023-06-30 泰诺尔(北京)科技有限公司 一种数据传输方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102576388A (zh) * 2009-12-23 2012-07-11 财团法人工业技术研究院 数据压缩方法与装置
US8618960B1 (en) * 2012-08-16 2013-12-31 International Business Machines Corporation Selective recompression of a string compressed by a plurality of diverse lossless compression techniques
CN104199825A (zh) * 2014-07-23 2014-12-10 清华大学 一种信息查询方法和系统
CN104869425A (zh) * 2015-05-13 2015-08-26 信阳师范学院 一种基于纹理图像相似性的压缩和解压缩方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8484214B2 (en) * 2007-03-28 2013-07-09 Cisco Technology, Inc. Record compression using incremental reverse templating
US9390099B1 (en) * 2011-03-29 2016-07-12 Emc Corporation Method and apparatus for improving a compression ratio of multiple documents by using templates
US8674856B2 (en) * 2012-08-16 2014-03-18 International Business Machines Corporation Data compression utilizing longest common subsequence template
US20160012147A1 (en) * 2014-07-10 2016-01-14 MyMojo Corporation Asynchronous Initialization of Document Object Model (DOM) Modules

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102576388A (zh) * 2009-12-23 2012-07-11 财团法人工业技术研究院 数据压缩方法与装置
US8618960B1 (en) * 2012-08-16 2013-12-31 International Business Machines Corporation Selective recompression of a string compressed by a plurality of diverse lossless compression techniques
CN104199825A (zh) * 2014-07-23 2014-12-10 清华大学 一种信息查询方法和系统
CN104869425A (zh) * 2015-05-13 2015-08-26 信阳师范学院 一种基于纹理图像相似性的压缩和解压缩方法

Also Published As

Publication number Publication date
WO2018103490A1 (en) 2018-06-14
US20200272784A1 (en) 2020-08-27
US11017155B2 (en) 2021-05-25
CN109661779A (zh) 2019-04-19

Similar Documents

Publication Publication Date Title
CN109062874B (zh) 财政数据的获取方法、终端设备及介质
US7689630B1 (en) Two-level bitmap structure for bit compression and data management
US9935650B2 (en) Compression of floating-point data by identifying a previous loss of precision
US6529912B2 (en) Data compressing apparatus and a data decompressing apparatus, a data compressing method and a data decompressing method, and a data compressing or decompressing dictionary creating apparatus and a computer readable recording medium storing a data compressing program or a data decompressing program
US20160321282A1 (en) Extracting method, information processing method, computer product, extracting apparatus, and information processing apparatus
CN109661779B (zh) 用于压缩数据的方法和系统
CN107305586B (zh) 索引生成方法、索引生成装置及搜索方法
US9208133B2 (en) Optimizing typographical content for transmission and display
US20160056839A1 (en) Compression device, compression method, decompression device, decompression method, and computer-readable recording medium
Aronson et al. Towards an engineering approach to file carver construction
US20190251062A1 (en) Recording medium recording indexed data generation program, indexed data generation method and retrieval method
US10581456B2 (en) Data compression device and data decompression device
JP2020521408A (ja) データの圧縮および分析のコンピュータ化された方法
US8930808B2 (en) Processing rich text data for storing as legacy data records in a data storage system
JP2016143200A (ja) 符号化プログラム、符号化方法および符号化装置
US8463759B2 (en) Method and system for compressing data
Klein et al. Compressed matching for feature vectors
US10997139B2 (en) Search apparatus and search method
US7945529B2 (en) Apparatus and method for performing table comparisons
JP2018067264A (ja) データ検索プログラム、データ検索装置およびデータ検索方法
US8786471B1 (en) Lossless data compression with variable width codes
JP6251437B1 (ja) 分類用符号生成ソフトウェアを記録した記録媒体
CN107818121B (zh) 一种html文件压缩方法、装置及电子设备
CN112527753B (zh) Dns解析记录无损压缩方法、装置、电子设备及存储介质
US20160210304A1 (en) Computer-readable recording medium, information processing apparatus, and conversion process method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40007212

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant