毕业设计(论文)-基于XML的报表自动生成系统.doc_第1页
毕业设计(论文)-基于XML的报表自动生成系统.doc_第2页
毕业设计(论文)-基于XML的报表自动生成系统.doc_第3页
毕业设计(论文)-基于XML的报表自动生成系统.doc_第4页
毕业设计(论文)-基于XML的报表自动生成系统.doc_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

潍潍坊坊学学院院本本科科毕毕业业论论文文1摘摘要要MIS(管理信息系统)开发是当前软件系统开发的热点,许多MIS系统开发都涉及到报表。报表部分的代码相对其它代码而言重复性高、无技术含量且工作量大。现有的报表自动生成系统,如水晶报表等,大部分是生成供用户查看的报表,而忽视了报表也可以作为输入方式的功能。因此,本文提出了一种自动生成包括报表显示和输入功能代码的方法。首先,本文对报表程序自动生成问题建立数学模型,并对该模型进行分析,找出了问题求解的三个关键点:报表对象的描述、识别和处理。其次,对报表对象进行了分析并用数学符号进行了描述,对纸质报表和电子报表的识别和处理方法进行了说明。再次,选定XML作为程序设计语言和报表的形式化描述工具,XML相关技术以其开放性、简单性、可扩展性以及自描述性获得了广泛的应用。本系统采用其中的XMLSchema来描述XML文档的合法结构、内容和限制。最后结合报表程序生成的实际应用,按照软件开发的流程进行了报表自动生成系统的用例分析和系统类的设计,在Delphi6.0的集成开发环境下实现,并通过了实际报表程序代码生成的测试。关键词关键词:XML,报表,程序自动生成,XMLSchemaAbstractAbstractNowadaysMIS(ManagementInationSystem)developmentisahotspotofthesoftwaresystemdevelopment.LotsofMISsystemdevelopmentrelatetoreport.Comparetoothercodethesecodesrelatedreportrepeatsmoredoesnothavetechniqueandmoreworkload.ThereportprogramautomationsystemsexistingasCrystalReportaremoreaboutthereportforuserlookover.Theyallignoredthereportcouldalsousedasaof.Thereforeaofcodeautomationincludesreportdisplayandfunctionhasbeenbringingforwardinthispaper.Firstofallthispapersetsupamathmodelandanalysesthemodel.Threekeypointshavebeenfound.Theyarethedescriptionrecognitionandhandling.Secondthispaperanalysesthereportobjectanddescribesitinaofmath.Therecognitionandhandlingofthepaperreportandtheelectronicallyreporthasbeenexplained.ThirdtheXML(ExtensibleMarkupLanguage)wasselectedasthealizationdescriptiontool.XMLhasthepropertyoedsimpleextensibleandselfdescription.ThispaperadoptsXMLSchematodescribeXMLdocumentslegalitystructurecontentandrestrict.Atlastthefactapplicationwascombinedtothereportprogramautomation.Usecaseandclassdesignwasprocessedaccordingtothesoftwaredevelopment.ThesystemwasimplementedunderDelphi6.0integrateddevelopmentenvironment.TheSystemoverpassthecodeprogramgenerationtestingofthefactreport.Keywords:Keywords:XMLReportProgramautomationXMLSchema潍潍坊坊学学院院本本科科毕毕业业论论文文3目目录录11绪绪论论551.1报表程序自动生成的背景和意义51.2程序自动生成技术61.3主要研究内容81.4本文组织结构822报表程序自动生成问题的建模报表程序自动生成问题的建模10102.1报表程序自动生成问题的一般描述102.2报表程序自动生成的数学模型122.3报表程序自动生成问题的模型分析132.4报表对象的描述1533报表对象的识别和处理报表对象的识别和处理22223.1纸质报表的识别223.2电子报表的识别303.3程序报表的构成3344报表程序自动生成的设计和实现报表程序自动生成的设计和实现36364.1模型形式化描述语言XML364.2象与形式化描述语言间的元素映射414.3体结构设计444.4对象模型454.5系统的工作流程494.6测试与实例5055结论结论54545.1本文主要结论545.2工作展望5466致致谢谢555577参考文献参考文献565688附附录录575711绪绪论论1.11.1报表程序自动生成的背景和意义报表程序自动生成的背景和意义.1报表在软件系统中的作用报表在软件系统中的作用报表作为一种信息组织和分析的手段,在各个行业中都有很广泛的应用,其内容和形式也多种多样。报表,就其实质而言,是信息的发布,包括内容和形式两方面。形式方面:报表是一种特殊格式的“表格”,具有规定的统一形式,报表的内容要按照该格式组织。内容方面:报表的目的是“报告情况”,“反映某些成果的转移状况”,报表内容是各种各样有用的数据。同时,报表也是“数据处理系统所准备好”的输出文件,是“总结性文件”。报表中的数据是经过处理的数据。在现代化企业信息系统特别是MIS(管理信息系统)中,报表系统是其重要组成部分之一。报表系统通过传统报表的形式对数据进行统计、查询、检查以及分析,以便用户能够以直观、综合的方式来获取有关信息,对统计后的结果进行数据的存储、处理和分析,提供给管理者分析决策之用。报表系统要代替人工完成报表的编制,就必须要解决两个主要问题:一是报表的内容,即报表数据;二是报表的形式,即报表格式。而企业的报表不是一成不变的,往往处于动态的变化中,这些变化不仅包括报表数据,还包括报表的格式也在变化,甚至是产生一个全新的报表。目前的程序界面一般都是固定的,很难做到随时变化,用户只能修改报表的数据,如果要修改报表结构或者生成一个全新的报表,只能求助于系统维护人员重新编写程序,设计报表,这给具体的使用带来了极大的不便。.2报表程序开发过程中存在的问题报表程序开发过程中存在的问题传统的报表程序开发方式中都存在这样或者那样的问题,如下所述:报表程序开发第一种方式:固定报表,报表的形式和内容都预先设定好,在具体的程序代码中将报表程序相关代码全部编写好,程序编译后执行即可得到所需要的报表。但是这种开发方式耗费大量的人力在这些技术性不高的代码上,一旦报表有所调整则所有已经编写完毕的代码都只能重新改写后再次编译。这种方式对于固定报表最为适合。但对于频繁改动的报表则不能适应。报表程序开发第二种方式:动态报表,报表的内容和格式在一定范围内定制。如在潍潍坊坊学学院院本本科科毕毕业业论论文文5参考文献1中所示,将报表形式和内容划分为三个部分,依次为:表头区、表格线区、域区、报表数据区。用户可以单独定制其中的每一部分,用户定制完毕后由系统解释翻译执行该报表,最后将生成的最终报表展示给用户,完成系统的功能。这种方式灵活性较高,但是用户报表的定制过程需要一定的技巧。如果每次输出报表都需要定制的话,反而成为用户的重复工作。另外这种方式只考虑了报表作为输出的显示而不能实现报表作为输入的功能。报表程序开发的其他方式:介于固定报表和动态报表之间,例如可以预先定义好简单的报表,然后让用户来组织这些简单的报表成为用户所需的报表。但是这样用户不仅要设计报表,还要设计报表之间的组合方式,增加了用户的工作量。1.21.2程序自动生成技术程序自动生成技术.1程序自动生成技术的发展程序自动生成技术的发展自从1964年出现第一代计算机之后,就有了软件。只不过最初的软件系统受到计算机硬件的限制不能像现在般动辄数万行。剑桥大学开发的第一代EDSAC计算机,其相当于后来操作系统功能的系统程序只有41行,曾被喻为“程序艺术精品”。而到19631966年IBM公司开发IBM360操作系统时,前后共投入约5000人年的人力,最高峰期曾同时投入上千人,整个操作系统源程序量多达近100万行2。软件系统规模的增长速度远远超过了系统开发能力的增长速度,这就造成了在20世纪六七十年代的“软件危机”,即软件的开发速度和能力远远落后于软件需求的增长。为了解决这个危机,北大西洋公约组织(NATO)的科学委员会在1968年第一次提出了“软件工程(SoftwareEngineering)”这个概念2。软件工程所要研究解决的根本问题就是将工程领域的管理概念移植到软件开发过程当中,以工程来约束软件开发的整个过程,从而使得软件系统能够按时保质的产出。在整个软件开发过程中,只有人的因素是不确定的。因此,应该控制软件开发过程中人的不确定因素。由此产生了CASE(ComputerAidedSoftwareEngineering)2即:计算机辅助软件工程;这个大概念下包含了众多内容,包括软件系统的分析、设计、实现和维护的整个过程。在CASE系统中,就包含应用程序自动生成的工具。对于CASE系统来说,程序自动生成只是处于软件开发过程下游的辅助工具。在最初的计算机系统中,没有任何针对开发人员的帮助信息,那段时间只能靠开发人员自己对整个软件进行检查,写出的代码也是最低级的机器码。程序语言进入汇编时代后,计算机已经能够对开发人员完成的程序进行编译检查了,这个时期计算机能够提供一些简单的错误信息,但是还是需要依赖于开发人员的经验来确定大部分错误代码的位置,机器所能够提供的帮助是极其有限的。当程序语言进入高级语言时代后,这个时期出现了简单的集成开发环境,这个集成开发环境能够对程序员输入代码的正确性通过编译这个过程来给出相应的提示,帮助程序员确定代码中可能出错的范围。当高级程序设计语言集成开发环境出现后,例如:VisualStudio、JBuilder、Eclipse等,这些集成开发环境不单单是对程序的编译调试了。还包含了一系列的附加功能。例如:程序自动补足功能,即程序员写出程序的起始部分后,集成开发环境猜测程序员的意图从而提供后半部分的代码。.2程序自动生成技术的现状程序自动生成技术的现状当前程序自动生成技术主要从以下几个方面进行研究:1.演绎综合法3:该方法是将数学中构造式的证明方法应用于软件程序开发上,将数学上的每一步证明对应为一个计算步骤,并且给出其形式化描述。该方法在理论上很完善,但是在实际应用中受到程序规模的影响较大,而且如果软件需求规格说明不能够完全形式化或者客户本身也不确定的话,就很难或无法使用本方法。因此,本方法较适应于程序规模较小且易于形式化的系统。例如:求x,使得F(xy)=0成立,前提为G(y)=0,则产生的相应代码与证明如下定理等同:对于任意y,若G(y)=0成立,则存在x使得F(xy)=0成立。2.实例推广法3:也可称为归纳综合法,借助反映程序性态的实例出发,将它推广为需要生成程序的特征,进而生成程序,目前各种定制系统均属于此列,这种定制系统一般是针对某一应用领域展开,适用范围过于狭小5。3.程序变换法3:程序变换是指由一程序转至另一功能等价的程序,亦即保持其正确性不变。有两类变换,其一是不同抽象级别代码之间的变换,其二是同等抽象级别两种不同代码之间的变换。这种方法易扩充,易修改,适用于通用系统。一直以来,由于形式化规格说明语言和实现编程语言之间存在概念间隙,程序变换法的自动化程度不高。很难寻找到一种语法简单,描述功能强大的规格说明语言,而这种描述语言又可以很好地映射高级程序语言,不能有明显的概念间隙。不同抽象级别代码转换中的代表性工作是70年代中期慕尼黑技术大学信息学研究所在F.L.Baue教授主持下开始研究的软件潍潍坊坊学学院院本本科科毕毕业业论论文文7自动化系统,即计算机辅助、直觉指导的程序设计(CIP)项目4.过程实现法3:如果对应规格说明中的各个成分,其转换目标的相应成分明确,而且相应的转换映射也明确,该映射便可借助于过程来实现。本文的报表程序自动生成是采用过程实现方法来实现的,其实现方法类似于古典高级语言的编译技术。过程实现途径是通过用某种甚高级语言来描述问题规格说明。在这种规格说明中确定了要“做什么”,然后借助于系统来生成“如何做”的代码。文献5也是采取同一种方法来实现的,但是与本文的目标不同。1.31.3主要研究内容主要研究内容本文所研究实现的系统涉及以下三个方面的内容:对报表内容和形式的分析以及形式化描述、对程序设计语言的语法分析以及形式化描述、形式化描述工具的选取。系统需要完成的任务分为以下五个步骤来完成:1.纸质报表扫描成为图片,在这一步当中我们将用户选定的纸质报表作为信息的来源输入计算机;2.图片内容经识别模块识别为电子文档,保存到计算机中;3.对文档内容读取并临时保存其内容;4.依据读取的内容生成选定种类的程序代码;5.保存生成的代码文件,编译运行。整个过程如图11所示:图11系统主要工作1.41.4本文组织结构本文组织结构本文共分为五章。第一章,引入课题并对课题的研究背景、意义以及国内外相关研究进行了概述。第二章,对报表自动生成问题进行了建模,并在分析模型后得出问题求解的三个关键点。第三章,对报表对象的识别和处理方法进行了说明。第四章,问题形式化描述语言的选择以及系统实现的相关方法。第五章,本文的结论以及下一步工作展望。潍潍坊坊学学院院本本科科毕毕业业论论文文922报表程序自动生成问题的建模报表程序自动生成问题的建模2.12.1报表程序自动生成问题的一般描述报表程序自动生成问题的一般描述报表程序自动生成问题来源于软件系统开发的实践过程中,由于报表部分程序开发的无技术含量和重复性而导致本问题的提出。报表程序自动生成不同于报表自动生成,前者输出的结果为可编译的程序代码,后者的输出为可打印的报表。报表程序自动生成问题是指从将纸质的报表扫描输入计算机,经过计算机的一系列转换处理后,以程序代码的形式输出,这一完整过程中一系列操作的实现。下面详述报表程序自动生成问题的原则、约束条件、最终目标和该问题的主要特点:1.生成原则:输出代码应具有正确性、有效性、模块性。(1)正确性:指输出代码应当能够在该种代码编译环境下正确编译通过;(2)有效性:指输出代码应当能够在编译通过的基础上有效的完全其设想的功能;(3)模块性:指输出代码应当能够具有独立的功能,可以很方便的嵌入到其它程序代码当中。2.约束条件:(1)冗余量:生成结果不应具有很多的冗余代码,应尽量使用最少的代码完成最多的功能。(2)时空效率:生成过程不应耗时太长,占用内存太多。应尽量在最短的时间和最小的空间内完成生成代码所需的所有操作。3.最终目标:可正确编译执行且具有一定模块性的报表程序代码。代码需要完成的功能如图21所示:图2-1中的代码可分为三部分:(1)界面代码:图中实线框圆角部分,该部分代码实现了系统与用户交互的功能,是数据类显示给用户的唯一途径。(2)数据类代码:图中虚线框部分,该部分内容为用户指定的输入内容的部分,是用户关心的数据。该部分代码负责数据的上传下达,是程序中数据的载体。(3)操作代码:图中实线框方角部分,该部分代码量较大,实现的功能比较单一都是从一种介质发送到另外一种介质。4.主要特点:(1)多种类代码输出:应输出多种类型的代码,当今主流的代码种类都应该能够生成,以扩大适应范围。(2)代码种类可扩充:代码的种类应该能够随着时间的推移逐步增加新的语言,删除已经过时被淘汰的语言。(3)多种形式的输入:可接受从扫描仪读入图片、读取存储器中的图片以及电子文档等多种输入形式的输入。(4)文档类型可扩充:可接受多种类型文档作为输入,并且可以扩充新的种类。2.22.2报表程序自动生成的数学模型报表程序自动生成的数学模型从文件到数据类从数据类到界面从数据类到文件数据类代码从数据库到数据类从数据类到数据库界面代码从界面到数据类DBXML图2-1报表程序自动生成代码内容示意图潍潍坊坊学学院院本本科科毕毕业业论论文文11模型是对实际问题的简化、抽象和描述,模型来源于实际又高于实际,建立问题的研究模型是我们解决问题时常用的方法之一。因此本节对报表程序自动生成问题建立了数学模型。.1报表程序自动生成的函数定义报表程序自动生成的函数定义通过对报表程序自动生成问题的描述,我们可以得知:该问题是一个从问题域(纸质报表)到解域(程序报表)的对应问题。因此,有如下定义:定义定义11P为纸质报表的集合;定义定义22C为程序报表的集合;定义定义33:是一个由纸质报表到程序报表的多值函数,它为每个纸质报表fCP对应多个程序报表,即:CpfPp)(定义1和定义2完成了对问题域和解域的定义,定义3则定义出了报表程序自动生成的函数,是本文的目标函数。由纸质报表的集合、程序报表的集合以及定义于其上的函数,我们可以得出报表程序自动生成问题的模型如下:f定义定义44三元组为报表程序自动生成问题的数学模型,其中P,C分别为纸)(fCP质报表和程序报表的集合,为定义于其上的函数。f.2报表程序自动生成的代数过程报表程序自动生成的代数过程在上一节中,对报表程序自动生成问题进行了数学建模,但是对模型中两个集合进行比较,就会发现从纸质报表到程序报表,两者在形式上差别巨大,在一个函数中完f成相对比较困难。因此,我们需要在纸质报表集合与程序报表集合的中间新建一个集合,成为两个集合的中间过渡集合。定义定义55E为电子报表的集合;定义5中的电子报表是指其内容存储于计算机中,在形式上同纸质报表相同的报表形式。结合定义1和定义2,我们有如下定义:定义定义66:是一个由纸质报表到电子报表的多值函数,它为每个纸质报表gEP对应多个电子报表,即:EpgPp)(定义定义77:是一个由电子报表到程序报表的多值函数,它为每个纸质报表hCE对应多个电子报表,即:CehEe)(结合定义3,可以得出:(2-1)()(xghxf在实际的映射过程中,可能产生不符合要求的映射结果,也就是说在E和C中可能有不符合要求的报表形式,这样,可以将E和C集合分别分为符合要求和不符合要求的两部分:、以及、。两对集合满足式2.2和式2.31E2E1C2C且(2-2)1E2E1E2EE且(2-3)1C2C1C2CC对于不符合要求的映射结果,需要对其进行修改,因此定义如下函数:(2-4)re(x)xreviseE(x)21x(2-5)rc(x)xreviseC(x)21CxCx其中:是一个由不符合要求的电子报表集合到符合要求的电子报表集合的多re1E2E值函数。:是一个由不符合要求的程序报表集合到符合要求的程序报表集合的多rc1C2C值函数。由此,实际情况中的应修改为式2.6:f(2-6)(reviseE(reviseC()(xghxf2.32.3报表程序自动生成问题的模型分析报表程序自动生成问题的模型分析.1报表和程序代码关系的本质报表和程序代码关系的本质由上一节中最初的函数,和三个集合P,E,C做出其关系图22:fgh潍潍坊坊学学院院本本科科毕毕业业论论文文13图22中,P、E、C均是报表的集合,所不同的是每种报表集合所借助的介质不同。如果在实践中再出现一种新的介质,那么就可以定义以新的介质报表集合N,则集合之间的对应关系将更加复杂,图22就可以演化为图23:图23中表示的是假设以集合P为源集合,集合C为目的集合,集合E和集合N为中间状态集合。图中虚线显示的是需要添加的函数,在实践中就是需要完成的工作。图中共添加了四条线,比添加集合E的时候需要更大的工作量。再进一步假设继续添加新的介质报表集合M,则需要添加的函数数目要远远大于四,此时的工作量也远远大于添加集合N时所需的工作量。如同现实世界中货币的产生情况一样,这时就需要一种核心的、不依赖于介质的报表集合的出现。本文将此中形式的报表定义为报表对象集合,该集合只有报表的实质而无须依赖于介质,所有报表的存在都是该报表对象的不同表现形式。并且所有的报表形式都可以和报表对象进行转换。报表对象的集合我们使用R来表示,添加报表对象后的问题模型图参见图24。EPCfgh图23加入新的集合NEPCfgh图22问题模型示意图这时,每个报表集合对报表对象的映射都是双向的,当加入一种新的介质报表集合后只需与R建立映射就是加入了整个模型。.2问题求解的几个关键问题求解的几个关键从图24中可以看出,报表对象是整个模型的核心。因此,问题求解的关键就是对报表对象的描述、报表对象的识别、报表对象的转换。报表对象的描述:即需要综合报表的各种表现形式,归纳出报表对象的一般特征,并对报表对的内容进行分析归类,最后得出整个报表对象的描述。报表对象的识别:在归纳得出报表对象描述的基础上,需要对各种形式的报表进行识别,例如将纸质报表识别为报表对象。报表对象的转换:将各种形式报表识别后,就需要对其进行转换为核心的报表对象,进而转换为用户所需的报表形式进行输出。2.42.4报表对象的描述报表对象的描述.1报表对象的属性分析报表对象的属性分析从上一章所述内容可以看出,数学模型中的报表对象是实际应用报表的抽象,具有众多的表现形式和复杂的结构。因此首先需要对现实中的报进行分类归纳,并在此基础上对其进行形式和内容的分析。实际应用的报表可以作为管理工具,帮助决策者迅速掌握原始数据中具有的要素和关系,帮助决策者进行有效的决策。有效的报表须以正确的逻辑方式提供数据。如果提供错误的数据,或用随意的样式提供正确数据,此报表将会减慢决策的进程,甚至导致不正确的决定。报表可以作为展示工具。可将数据库中的信息提取并以特定的形式进行展现。辅助图24加入报表对象集合后的模型RPCE潍潍坊坊学学院院本本科科毕毕业业论论文文15用户核对数据,帮助用户从纸质报表向电子报表转换,将纸质的报表逐步搬到显示器上,逐步接近无纸化办公。报表的多用途决定了其具有多种形式,多种结构,下面本文对其形式和内容进行分析。首先根据报表的形式可分为:规则报表、不规则报表、图形报表。1.规则报表:最常见的报表,其最大的特点为固定的表头和若干行类型相同的记录,如图25所示:图25规则报表从图25中我们可以看出除了报表名称外,其它信息的格式都比较单一,但需要注意的是此类报表一般需要显示多页,这时每页都应具有相同的报表名称。根据报表的需要可能还有其它一些附加信息,如制表人、合计等。这种报表的结构可用下图来统一表示:表21规则报表的结构Table21Structureofregularreport报表结构报表头页眉数据行报表脚页脚报表头:该部分内容在每一张报表中仅出现一次,该部分的信息被放置在报表的起始处,例如:报表的标题等。页眉:该部分的内容在每页中显示一次,该部分信息被放置在每页的起始处,例如:列的标题、打印日期等。数据行:该部分的内容为数据源中检索出的数据重复出现,例如:数据段。报表脚:该部分的内容在每一个表中仅出现一次,该部分信息被放置在详情部件的结束处,例如:统计结果。页脚:该部分的内容在每页中显示一次,该部分信息被放置在每页结束处,例如:页码。2.不规则报表:这里的不规则是指行列的分布情况不如规则报表,如下图26所示:图26不规则报表这种报表的特点就是不能像规则报表一样通过第一行的格式定义就能定义出整个表格。这种报表中的数据嵌入在其中,经常是用作输入信息使用,如忽视其中间内容仍然可大致划分为以下三部分:表22不规则报表的结构报表结构报表头数据块报表脚与规则报表相比少了页眉和页脚两部分内容,其中的数据块内容要比规则报表中的内容更复杂。3.图形报表:潍潍坊坊学学院院本本科科毕毕业业论论文文17图形报表是报表的一个重要组成部分,图形报表能够很直观的反映出我们所需要展示的数据之间的关系,有利于更好的分析数据,为下一步决策提供很好的依据。如图27所示:图27图形报表由上图可看出,这种类型的报表,除了具有报表名称等附加信息外,还有坐标轴和折线的选择8,对于坐标轴就是单位长度的选择,折线是由点连接而来的,点仍然是由其所表达的数据确定的。表23图形报表的结构报表结构报表头图形图形注释报表脚图形:该种类报表的主要内容,一般显示在报表中央部分。图形注释:该种类图形中内容的一些注释。其余部分与规则报表相同。综合上述内容,可以看出在此中对报表划分的粒度之上,仍然无法将报表使用统一的结构来表示,因此需要在更细的粒度上对报表进行划分。其实无论是规则或者不规则形式的报表,其中所包含内容无外可分为文字、数据、表格和图片四种形式的组合。因此本文从这四个方面来对报表进行形式上的分析,将以上三种类型报表中分析出的结构块并与文字、数据、表格和图片这种粒度的对应进行对比如表24:表24内容对应结构名对应内容报表头文字页眉文字数据行表格、文字、数据数据块表格、文字、数据图形图片图形注释文字、数据报表脚文字页脚文字由表24的对应结果来看,本文已经在这个粒度上将所有形式的报表统一为文字、数据、表格和图片的组合。.2报表对象的属性组成报表对象的属性组成由上节分析出报表对象的四种基本组成元素:文字、数据、表格和图片。这些元素有自己的属性,例如:对于文字来说,有其文本内容同时还有其字体、颜色、字号等等。所有元素的属性参见表2-5:表2-5报表元素属性潍潍坊坊学学院院本本科科毕毕业业论论文文19元素名称属性名称元素名称属性名称文本边框线条类型字体名称边框线条宽度字体大小行数斜体列数加粗单元数下划线起始位置文字颜色结束位置来源表格单元起始位置图片内容数据结束位置图片图片类型注:表格中的单元中仍然包含文字等其它内容。由上述元素和属性可以得出报表对象的组成结构图28:图2-8报表对象.3报表对象的函数表达报表对象的函数表达每一个报表对象由文字集合、数据集合、图片集合和表格集合组成,而每种元素又有其自身的属性。因此,对于一个报表,有如下定义:r定义定义77四元组为一个报表,其中:)(TablePicDataWordr:为报表中文字的集合;Word:为报表中数据项的集合;Data:为报表中图片的集合;Pic:为报表中表格的集合。Table其中的每个集合中的元素又包含自己的属性:定义定义88向量为中的元素。其中:.分别)(87654321wwwwwwwwWWord1w8w代表文字的8项属性。类似地,有如下定义:定义定义9向量为中的元素。其中:.分别代表数据的3项属)(321dddDData1d3d性。定义定义10向量为中的元素。其中:,分别代表图片的2项属性。)(21ppPPic1p2p定义定义11向量为中的元素。其中:.分别代表表格)(87654321ttttttttTTable1t8t的8项属性。通过对以及各元素集合中元素的定义,本文将报表以数学的形式进行了表达。r潍潍坊坊学学院院本本科科毕毕业业论论文文2133报表报表对对象的识别和处理象的识别和处理3.13.1纸质报表的识别纸质报表的识别.1纸质报表纸质报表纸质报表是系统输入的主要方式,纸质报表的识别采取以下的方式来进行:扫描仪扫描图像、对图像中的数据进行分析提取其中的报表对象信息。这个过程在计算机科学中称为:计算机文字识别,俗称光学文字识别,即OpticalCharacterRecognition(缩写为OCR),是指通过计算机技术及光学技术对印刷或书写的文字进行自动的识别,达到认知的目的,是实现文字高速自动录入的一项关键技术。1.OCR技术的发展OCR概念的诞生要早于计算机的问世。1929年,Tausheck在德国提出了OCR的概念,申请了专利。几年后,Handel在美国也提出了关于机器文字识别的想法,这一梦想,直到计算机诞生以后才得以实现。根据我们掌握的资料,第一个名为ERA(ElectricReadingAutomation)的OCR软件是1957年诞生的。它是基于窥视孔方法实现的,每秒钟的识别速度是120个英文字母。随后,在世界范围内,OCR的研究与开发在广泛的进行着。OCR发展至今,可分为三个阶段:第一代OCR产品出现于上个世纪60年代初期,NCR公司、Farrington公司及IBM公司分别研制出了自己的OCR软件,最早的OCR产品应该是IBM公司的1BM1418。它们只能识别印刷体的数字、英文字母及部分符号,而且都是指定的字体。上个世纪60年代末,日立公司和富士通公司,也研制出了各自的OCR产品。第二代OCR系统是基于手写体字符的识别,前期只限于手写体数字,从时间上来看,是上个世纪60年代中期到70年代初期。IBM公司于1965年便在纽约世界博览会上展出了其产品IBM1287。第一个实现信函自动分拣系统的是东芝公司,两年后NEC公司也推出了这样的系统,到1997年,分拣正确率达到92%93%。第三代OCR系统要解决的技术问题是对于质量较差的文稿及大字符集的识别,例如汉字的识别。最先投身于汉字OCR研究的是东芝公司,并于1983年发布了其OCR产品OCR-V595,面向印刷体日文的处理,其识别速度为每秒70-l00个汉字,识别率为99.5%,其后东芝公司又开始了手写体日文识别的研究工作。我国在OCR的研究方面起步相对较晚,70年代开始进行数字、英文及符号的识别研究,70年代末开始进行汉字的研究,到1986年,汉字的识别进人了一个具有成果性的阶段,不少单位推出了中文OCR产品。到目前为止,印刷体汉字的识别率达到了98%以上,手写体的识别率也在70%以上,并且可对多种字体、不同字号混排识别,国家“863”计划对该方向的研究给予了很大的资助。2.文字识别的方法与原理文字的识别是指通过一定的方法和技术提取文字的特征并将其存贮于机器设备中,实现对文字的自动判别。它主要包括以下几个步骤:图文输人、前处理、单字识别及后处理。图文输人是指通过录入设备将文稿录入到计算机中,也就是说实现原始稿件的数字化,现在用的比较普遍的设备是数字化扫描仪、数字相机等;前处理是指在进行文字识别之前的一些准备工作,主要包括版面分析、图像净化及二值化处理、文字切分、正规化处理等,这一阶段的工作也是很重要的,处理的效果如何直接影响到识别的准确率;单字识别则体现着文字识别的核心技术,主要包括文字特征抽出的方法及分类判别算法。人能够通过大脑很简单地认识文字,是因为在人的大脑中已经保存了文字的特征,像文字的结构、笔画等。要想让计算机去认识文字,首先也要存贮类似的信息,那么,存贮什么样的信息及如何提取这些信息。则是一个较复杂的事情,而且要求达到很高的识别率。通常的做法是根据文字的笔画、特征点、投影信息、点的区域分布等进行分析,常用的方法是结构分析方法和统计分析方法;后处理是指对识别出的文字或者有多个识别结果采用同语迸行上下文匹配,即将单字识别的结果进行分词,与词库中的词进行比较,以提高系统的识别率,减少误识率。对于文字的识别,从文字类型上划分,通常分为印刷体文字的识别和手写体文字的识别;从识别的方式划分,通常分为在线识别和脱机识别。由于印刷体与手写体的文字特征差异较大,所以在软件识别上,其处理方法是不相同的。OCR的应用主要表现在以下几个方面:在线式的文字识别,是指书写完一个文字后立刻进行识别,如在PDA中文字的录入、汉字手写板等,表格文字识别是指对在固定印刷的表格中填写的数据进行识别,如税务申报表的录入;纯文本文字识别,如文件的录入、报刊杂志的录入等。3.实现数据自动录入的几种技术手段的比较信息时代的到来,将会很大程度地改变人们的生活方式与工作方式。信息也变成了当今社会的热门话题。信息的来源及所表达的含义也是各种各样的,尤其是近几年因特潍潍坊坊学学院院本本科科毕毕业业论论文文23网的迅猛发展,为信息的传递提供了绝好的工具。政府、企业对计算机的依赖程度越来越强烈,以计算机为核心工具的办公及业务处理的时代已经到来。只有信息被电子化之后,它才能得到快速地处理与传递。所谓信息电子化,其实是以计算机能够处理的数字的形式来表达信息。那么大量的信息如何录入到计算机里呢总结起来,应该有以下几种方式:人工键盘录人、数据自动采集设备、数字化处理设备、智能录入系统等。目动录入设备方面主要有传感器、AD设备、扫描仪、数字相机、图像处理卡等,它们主要应用在一些特殊的场合。智能录入系统有OCR系统及语音识别录入系统,这些系统经过几十年的研究与发展,在很多场合完全能够达到实用的程度,比传统的手工录入方式的速度提高几十倍或上百倍。像税务、银行、工商、海关、教育等部门都有大量的报表数据需要录入到计算机中,这不是一个简单问题,而是一个影响整个计算机应用系统的瓶颈。传统的做法是聘用大量的录入员,这种做法不但成本高。而且录入的数据错误比较多,但对于不是大量的数据,还是一种可取的办法,但是人工录入错误比较多,为了避免录入错误,通常的做法是由多个人分别录入,由软件来比较去发现可能出现的错误。另外,还有OCR录入方式、IC卡方式、远程数据交换方式等。现以税务行业的纳税申报表的录入为例,说明它们的优缺点。IC卡方式其实就是人工键盘录入方式,只不过是把大量需要集中录入的数据,分散到由纳税人各自完成录入工作,存贮到IC卡(或软盘)中,报税时将此卡里的数据拷贝到税务部门的服务器里。每个纳税人需要购买一个报税器的IC卡读写器,这种方式的特点是通过增加纳税人的负担,而减轻了税务部门的负担。远程数据交换方式其实就是EDI(ElectronicDataInterchange)的一个具体应用,从数据录入技术的发展来看,未来的模式应该是EDI,尤其是近几年,网络技术的发展很迅速,未来若干年后,计算机网络应该像现在的电话网络,计算机的普及程度会像现在的电话一样。那时EDI就变得现实了,但是,这一时刻何时能到来呢?支持EDI的硬件环境、相关的法律、网络安全等问题何时能够解决呢?或许是遥远的。现在已经有一些用户在考虑EDI的应用,通过已经应用的单位的结果看,太超前了,不是技术不行,而是整个社会计算机应用的层次没有达到。从数据录入方式来看,OCR技术是一种较直观的、原业务方式不需要做多大变革的、现阶段较为现实的替代手工录入的一种方式。目前,OCR的技术较为成熟。识别率较高,而且还有专用的OCR录入设备,在软件支持上,通过逻辑运算、算术运算等多种后处理手段,使数据在高速录入的同时,保证了准确性。4.OCR技术的应用OCR技术,在现实生活中有着广泛的应用价值。通过它可完成高速的文字录入任务,在很多场合可替代键盘录入。文件的识别录入是很多办公部门经常使用的工具,国内已有很多这样的产品,而且已经实用;邮件的自动分拣系统更能快速地解决大量信函的分拣问题,国外已普遍使用,国内也有很多大型邮局在使用;在线手写电子记事本等也在人们的生活中发挥重要的作用;手写体表格数据自动录入系统,则可应用在具有大量人工填表的行业,如税务申报表,海关申报表、财务发票、财务报表、社会调查表等的录入。这类系统在发达国家已经在发挥着作用,在我国,随着计算机在各部门的应用,这方面的需求已经开始。在国内市场已经有不少这样的产品,在这方面,河北大学智能图文信息研究所也推出了自己的OCR产品博识OCR。.2识别技术识别技术用于汉字识别的模式识别技术可以大致分为结构模式识别、统计模式识别及两者的结合。下面分别进行介绍。1.模式识别汉字是一种特殊的模式,其结构虽然比较复杂,但具有相当严格的规律性。换言之,汉字图形含有丰富的结构信息,可以设法提取含有这种信息的结构特征及其组字规律,作为识别汉字的依据,这就是结构模式识别。结构模式识别是早期汉字识别研究的主要方法。其主要出发点是汉字的组成结构。从汉字的构成上讲,汉字是由笔划(点横竖撇捺等)、偏旁部首构成的;还可以认为汉字是由更小的结构基元构成的。由这些结构基元及其相互关系完全可以精确地对汉字加以描述,就像一篇文章由单字、词、短语和句子按语法规律所组成一样。所以这种方法也叫句法模式识别。识别时,利用上述结构信息及句法分析的方法进行识别,类似一个逻辑推理器。用这种方法来描述汉字字形结构在理论上是比较恰当的,主要优点在于对字体变化的适应性强,区分相似字能力强;但是,在实际应用中,面临的主要问题是抗干扰能力差,因为在实际得到的文本图象中存在着各种干扰,如倾斜,扭曲,断裂,粘连,纸张上的污点,对比度差等等。这些因素直接影响到结构基元的提取,假如结构基元不能准确地得到,后面的推理过程就成了无源之水。此外,结构模式识别的描述比较复杂,匹配过程的复杂度因而也较高。所以在印刷体汉字识别领域中,纯结构模式识别方法已经潍潍坊坊学学院院本本科科毕毕业业论论文文25逐渐衰落,句法识别的方法正日益受到挑战。2.模式识别统计决策论发展较早,理论也较成熟。其要点是提取待识别模式的一组统计特征,然后按照一定准则所确定的决策函数进行分类判决。汉字的统计模式识别是将字符点阵看作一个整体,其所用的特征是从这个整体上经过大量的统计而得到的。统计特征的特点是抗干扰性强,匹配与分类的算法简单,易于实现。不足之处在于细分能力较弱,区分相似字的能力差一些。常见的统计模式识别方法有:(1)模板匹配。模板匹配并不需要特征提取过程。字符的图象直接作为特征,与字典中的模板相比,相似度最高的模板类即为识别结果。这种方法简单易行,可以并行处理,但是一个模板只能识别同样大小、同种字体的字符,对于倾斜、笔划变粗变细均无良好的适应能力。(2)利用变换特征的方法。对字符图象进行二进制变换(如WalshHardama变换)或更复杂的变换(如Karhunen-LoeveFourierCosine,Slant变换等),变换后的特征的维数大大降低。但是这些变换不是旋转不变的,因此对于倾斜变形的字符的识别会有较大的偏差。二进制变换的计算虽然简单,但变换后的特征没有明显的物理意义。K-L变换虽然从最小均方误差角度来说是最佳的,但是运算量太大,难以实用。总之,变换特征的运算复杂度较高。(3)投影直方图法。利用字符图象在水平及垂直方向的投影作为特征。该方法对倾斜旋转非常敏感,细分能力差。(4)几何矩(GeometricMoment)特征。M.K.Hu提出利用矩不变量作为特征的想法,引起了研究矩的热潮。研究人员又确定了数十个移不变、比例不变的矩。我们都希望找到稳定可靠的、对各种干扰适应能力很强的特征,在几何矩方面的研究正反映了这一愿望。以上所涉及到的几何矩均在线性变换下保持不变。但在实际环境中,很难保证线性变换这一前提条件。(5)Spline曲线近似与傅立叶描绘子(FourierDescriptor)。两种方法都是针对字符图象轮廓的。Spline曲线近似是在轮廓上找到曲率大的折点,利用Spline曲线来近似相邻折点之间的轮廓线。而傅立叶描绘子则是利用傅立叶函数模拟封闭的轮廓线,将傅立叶函数的各个系数作为特征的。前者对于旋转很敏感。后者对于轮廓线不封闭的字符图象不适用,因此很难用于笔划断裂的字符的识别。(6)笔划密度特征。笔划密度的描述有许多种,这里采用如下定义:字符图象某一特定范围的笔划密度是在该范围内,以固定扫描次数沿水平、垂直或对角线方向扫描时的穿透次数。这种特征描述了汉字的各部分笔划的疏密程度,提供了比较完整的信息。在图象质量可以保证的情况下,这种特征相当稳定。在脱机手写体的识别中也经常用到这种特征。但是在字符内部笔划粘连时误差较大。(7)外围特征。汉字的轮廓包含了丰富的特征,即使在字符内部笔划粘连的情况下,轮廓部分的信息也还是比较完整的。这种特征非常适合于作为粗分类的特征。(8)基于微结构特征的方法。这种方法的出发点在于,汉字是由笔划组成的,而笔划是由一定方向,一定位置关系与长宽比的矩形段组成的。这些矩形段则称为微结构。利用微结构及微结构之间的关系组成的特征对汉字进行识别,尤其是对于多体汉字的识别,获得了良好的效果。其不足之处是,在内部笔划粘连时,微结构的提取会遇到困难。(9)特征点特征。早在1957年,SolatronElectronicsGroup公司发布了第一个利用窥视孔(peephole)方法的OCR系统。其主要思想是利用字符点阵中一些有代表性的黑点(笔划),白点(背景)作为特征来区分不同的字符。后有人又将这种方法运用到汉字识别中,对其中的黑点又增加了属性的描述,如端点、折点、交叉点等。也获得了比较好的效果。其特点是对于内部笔划粘连的字符的识别的适应性较强,直观性好,但是不易表示为矢量形式,不适合作为粗分类的特征,匹配难度大。当然还有许多种不同的统计特征,诸如图描述法、包含配选法、脱壳透视法、差笔划法等,本文就不一一介绍了。1.统计识别与结构识别的结合结构模式识别与统计模式识别各有优缺点,随着我们对于两种方法认识的深入,这两种方法正在逐渐融合。网格化特征就是这种结合的产物。字符图象被均匀地或非均匀地划分为若干区域,称之为“网格”。在每一个网格内寻找各种特征,如笔划点与背景点的比例,交叉点、笔划端点的个数,细化后的笔划的长度、网格部分的笔划密度等等。特征的统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论