(计算机应用技术专业论文)模式识别系统集成与重构方法研究.pdf_第1页
(计算机应用技术专业论文)模式识别系统集成与重构方法研究.pdf_第2页
(计算机应用技术专业论文)模式识别系统集成与重构方法研究.pdf_第3页
(计算机应用技术专业论文)模式识别系统集成与重构方法研究.pdf_第4页
(计算机应用技术专业论文)模式识别系统集成与重构方法研究.pdf_第5页
已阅读5页,还剩46页未读 继续免费阅读

(计算机应用技术专业论文)模式识别系统集成与重构方法研究.pdf.pdf 免费下载

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

文档简介

中文摘要 中文摘要 当今计算机技术飞速发展,个人电脑( p c ) 得到了很大的普及,人们的工作 方式面临着深刻的变化。随着计算机在各行业和领域应用的越发广泛,用户对 于系统功能集成的需求也在不断提高。如何在各自系统修改晟小的情况下,实 现已有应用系统的集成,并使新系统的完整性、灵活性和扩展性得到保证,是 本文研究的问题。 本文提出了两个紧密耦合的机器智能系统进行集成与重构的策略和步骤,并 以t r 和e r 两个o c r 系统的集成为例。提出一种具有通用性的应用集成服务 总线模型来完成各个底层识别引擎之间以及与u i 之间的状态、控制、数据等通 信,从而实现对已有应用系统的集成,。完成对应用系统的功能扩充。 、 由于对所有的o c r 系统而言,因为无法保证1 0 0 的识别精度,因此必须 提供莨好的识别结果修改工具,对于数学公式而言,其编辑修改工具异常复杂。 本文也就数学公式的p m o 衙方法进行了研究,就p r o o f h 公式结构和错误检查等 提出了改进的方法。 一 关键字i 系统集成、总线模型、消息队列,p r o o f h 校验、设计模式 a 换:仃a c t a b s t r a c t n o w a d a y sm ec o m p u t 盯t e c 晡q u ed e v d o pr 印j d 】y ,m ep e 幅咖l a l 唧m e “p c ) b e c o m e sp o p u l 鸣m ep e 叩1 e 。sw o r km e t h o df k e st h ed e 印v 耐e t y a l o n gw i t ht h e c o m p u t e ra p p i i 。dm o 陀卸d 加o r ee x t c 玎b i v e l yi ne a c hp r o f c s s i o n 锄dr c a l m s ,t h e c u s t o m 盯s 鹏e d sf o r s y s i e mi n t c g r a t i o na l s o 伊o w sc 0 瓶n u o 啪l y h o wt oi n t e g r a t e e x i s t i n gs y s e r 璐l | 1 1 d c rt | l ec o n d i 6 0 nt h 毹e a c hs y s t e mf e q u i r e sm i n i m u mm o d i f i c a t i o n a n dk e c pt l i ec o m p l e t e n c s s ,a g i l i t ya n ds c a l a b i 峥o f 小es y 咖i st h ep u i p o 踞0 f t l l i s 畔 t h i sp a p c rp u t sf b 州a r dt h es m 缸e g ya n ds t e p s 缅i m t c 掣乱i n gt w od o s e l yc o u p i e d m a c h i n e n t e l l i g e n c es y s t e m nt a l ( e s 把e x 锄p i c “柳oo c rs y s t e m s - 一t r 锄de r p u t s f o r w a r dam o d e lo fu n i v e r s a li n t e 掣a t i 佃删i c eb u sf b rt h ep l | r p o s eo f e x c h a n g i n gd a 地s u p e r v i s i n gs 诅t i i sm dc o n t m l l i n g 提出了两个紧密耦合的机器智能系统进行集成与重构的策略和步骤。 具有通用性的应用集成服务总线模型。以t r 和e r 两个o c r 系统的集 成为例,提出一种具有通用性的应用集成服务总线模型来完成各个底层 识别引擎之间以及与u i 之间的状态、控制、数据等通信,从而实现对 已有应用系统的集成完成对应用系统的功能扩充。 第7 页 第一章导论 表达式识别人机交互应用功能的扩展:p r 0 0 f 打。由于对所有的o c r 系 统而言,因为无法保证1 0 0 的识别精度,因此必须提供良好的识别结 果修改工具,对于数学公式而言,其编辑修改工具异常复杂。本文也就 数学公式的呻0 0 f h 方法进行7 研究,就p r f 打公式结构和错误检查等 提出了改进的方法。 “ 1 3 2 本文内容组织 在本文的第二章,提出了类似o c r 应用系统这样紧密耦合的系统在系统集 成过程中采用的模型方法,即本文提出的集成服务总线模型。并且借鉴软件再 工程的部分方法,给出了进行应用系统集成时应采取的策略和步骤。在这一章 中还就数学公式编辑器的p r o o 衙方法进行了发展,就p m o f e r 的公式结构和错误 检查等功能进行了具体的改进。 在第三章,基于第二章提出来的应用系统集成方法和模型,通过聊e r e a d e r ( r t k 内核) 集成数学公式识别系统e x 口r e s s i o n r e a d e r ( o f r l x 内核) 这一工 程柬实践。工程的各个步骤和整体架构遵循了本文提出的设计模型。 在第四章,系统性能评价。运用软件体系结构的评价方法对本文提出的服务 总线模型进行了评估,论证了集成系统的鲁棒性和可扩展性。 在第五章,对全文的工作内容进行了总结,同时对应用系统集成方法模型的 发展进行了展望 在参考文献中,列出了本文研究内容中参照或引用的国内外书籍与论文。所 有参考文献按照和本文相关程度进行排序。 第8 页 第二章系统集成策略步骤及服务总线模型 第二章系统集成策略步骤及服务总线模型 第一节系统集成的操作流程 借鉴软件再工程中的工程步骤,进行系统集成时可采取如图2 1 的流程。当 然。每一步操作都是针对要进行集成的两个系统分别进行的。 图2 1 系统集成操作流程 决策分析是进行系统集成活动的一项重要步骤。 它主要包括三个方面内容:商业价值评价、环境评价和策略选择。 本文涉及集成的应用系统之一聊e r e a d 盯是9 0 年代初打入国际市场的比较 成熟o c r 识别商业系统,多年来一直受到业界好评,其识别工具包r t k 识别 功能强大且支持多种系统平台。t r 随着时代的发展和用户应用需要的增长一直 在不断的提升自己的功能及发行版本。目前,随着数学公式识别技术的不断成 熟以及数学公式识别系统e x p r e s s i o n r c a d e r 的开发成功,将数学公式识别功能加 入到原有t r 系统当中,提升现有t r 系统识别处理的应用范围,开发更加完善 的o c r 识别系统具有很高的商业价值。 t r 与e r 两者的核心技术均为智能所开发,进行系统集成工作的硬件开发 环境比较完备,各类数据、文档保存完整,开发团队对两个系统的架构和特征 也比较熟悉并且具有一定的项目开发经验,因此项目具有开发的可行性 在对t r 和e r 的集成工作进行商业价值评判和环境评价之后,我们确定系 统集成工作的策略选择就是按照本文提出的应用集成服务总线模型这一方法来 第9 页 第二章系统集成策略步骤及服务总线模型 进行。 下面将分别详细介绍流程中的系统理解与系统集成。 2 1 1 系统理解 系统理解是我们进行应用系统集成的关键组成部分,也是它的基础和前提。 : 系统理解是通过对已有系统的源代码、设计记录以及其它文档资源的分析,得 到系统全面详细的信息,为从已有系统到未来系统的转化提供坚实的基础。软 : 件再工程中的逆向工程方法是系统理解的重要支持手段。 : 系统理解首先要理解系统的整体功能。整体功能的理解为进一步的分析建 : 立语境,同时也会更容易理解系统应用问互操作等相关问题。可通过与软件的 开发者、维护者和使用者充分交流,察看软件系统文档,系统运行日志运行软 件系统等各种方法得到。 。 在系统理解的过程中,对系统对象的理解是最为重要的一部分。这部分通 常分为程序的理解和数据的理解及用户界面的理解三个方面。 。 程序理解 程序理解是获取系统本身详细信息的重要手段,因为构成应用系统的每一 + 个程序代表了在高层的功能抽象。 程序理解从大体上分两种:白盒理解和黑盒理解。白盒理解即深度理解, 主要是指通过对源代码进行详细的词法分析和语法分析,得到有关系统的详细 信息。黑盒理解即浅度理解,是指不需要对系统源代码进行分析,而只对系统 的各个组成部分的接口进行分析,得到对系统各个组成部分之间的关系的理解, 进而得到对高层系统总体结构的理解。大多数情况下,程序的成功理解单纯依 靠白盒理解和黑盒理解是不够的,需要综合使用这两种方法。 。 关于对e r 系统和1 r 系统的程序理解部分,由于具有完整的系统开发环境, 我们采取的是手工浏览源代码的方式来进行。 在浏览系统源代码的同时,也需注意了解系统的相关文档,包括需求分析、 概要设计、详细设计等。 ” ma ”一n 一 “ 通过程序理解,我们首先来看一下对t r 和e r 两个系统的各自系统结构的 比较,如图2 2 。 第l o 页 点 , , , , _ “ 咄女 第二章系统集成策略步骤及服务总线模型 e x p 麟s i o n r i e r ( u l 层 io f r t k lf 棱心以) 表选式数始窄懿 t 托军绩绝掏 e r 系统缎梅 图2 2 t r 与e r 系统结构比较 。 通过比较可以发现t r 与e r 的系统结构相似,都是由u i 层一核心层一数 据字典构成,所以集成的新系统将尽量不破坏原有的结构,仍采取这样一种统 一的结构方式,保留u i 层、核心层、数据字典。 数据理解 数据的理解存在不同的抽象层次。在程序层,内部的程序数据结构必须被 理解。在系统层,全局数据结构( 如文件、数据库) 也必须被充分理解,因为全局 数据结构有可能被做部分补充和修改以便符合新的系统的数据管理规范。 内部数据结构的理解是通过对程序代码的检查来完成的。在很多情况下, 程序代码中包含了数据定义、文件描述、i o 接口描述等等信息,从中可以获取 关于数据流信息的理解和现存的已实现的数据结构。 具体可采用下列方法: 标识程序中记录关于全局数据结构( 文件或数据库) 的重要信息和局部 数据结构。 标记局部数据结构与全局数据结构间的关系 对每个表示数组或文件的变量( 在程序中) ,列出所有与其有逻辑联系 的其他变量等等。如原系统使用的是数据库技术,则对数据库结构、 库中的表结构及表内容等的充分理解是至关重要的。 针对t r 和e r 两个应用系统进行的数据理解主要是明确它们各自在识别处 理过程中各步骤的数据定义、数据结构,处理流程中数据的存储方式和传递方 第l i 页 第二章系统集成策略步骤及服务总线模型 法以及核心与u i 的之间的调用方式,从而区分两个系统的不同之处,为重构操 作打下基础。 r t k 在识别处理数据结构中,将图像分为以下层次: d 0 c p a g e r e 画o n , r e 西o n 包括t x t r e 百o n 、,r 抽l e r e 百、h m g e r e g i o n t e x r e 西o n 继续分为t x t r e g i o n l i l l e w b r d 1 抽l e r e g i 继续分为t 曲l e r e 百o n c e l l l i m w o r d 协l e r d 西o n 还包括框架信息r u l e l i n e 。 r t k 中,p a g e 与r e g i o n 的数据结构如下:( 已简化,只突出本文相关部分) 胛a g e t y p e d e fs t r u c t _ u i p a g e , f e v 眦a p i dh o a p : a _ e r yh e 印 、 h a n d l eh i n s t a n c e :ai n s t 锄c e h 锄d l eo fm a i ne x e c u t a b l e u s h o r t u s f l a g s l ;ah o u s e k e e p i n gf l a g s s e eb e l 册 u s 帅r tu s f l a g s 2 : 序h 叫s e k e e p i n gf l a g s s e eb e l 师 u s 1 0 r t u s ) 【i l e s o l u t i o n : u s h o r tu s y r e s o l u t i o n : e v r e c tr c c l i e n t ; 奉l o g i c a lc l i e n ta r e ai nu c u n n s 幸 , _ p e v r r a yp r g l l a r r a y : 4 u s m r tu s r 鲫c u r : p - r e p g ep r e p a g e : p r e g t s p a g ep g t s p a g e 字符o c l lp a g e 图文切分p a g e u s i o 盯u s r e j e c t s ;拒识字符数 u s i l o r t u s c l l a r s : 总体字符数 u c 眦ru c l o c 8 t e m e t h o d : 几o c a t e 选项 ”“。+ - 姗 r u c r e c o g n i z 酬e t h o d :毪、r e c o 印i 选项一t 静p 州 r 牌# 帆* 。,t 啦 , u s 1 0 r tu s i m g r e g i t 0 t a l : 图片区域数 u s h o r t l s t x t r e g i o n t o t a l :文字区域数 第1 2 页 , j - 一 ,酶垂 一 篁三兰墨竺叁堕丝堕生矍墨里墨璺些堡型 _ - _ _ _ _ - _ _ _ _ _ - - _ _ _ _ - _ - _ _ _ _ _ _ _ _ _ _ _ - _ _ _ _ - - _ _ _ _ _ _ _ _ _ _ - _ _ _ _ 一一 p r e g t s p g ep t l r p a g e :图文切分p a g e ,用于倾斜校正 p v 0 i dp d o c : 一s p e c i f yt h ed o c u m e n ti tb e l o n g st o r t k 事 v o i df a r + p r t k c l i e n t :全局数据结构,包括内存句柄等等 s h o r t s n g l e :图像倾斜角度 】u i p g e : ,r e g i o n r el l n e i sa l ;n k e d l 碗o fs t m c t u r 髂g p e c i 毋i n g 瞳c h l i 鹏i nar 鸭j , 帅e d c f s h c j m ef a r l 6 p r t u n e ; t y p e d e f s t n l c t _ l i n e : p _ r e - l i n ep n e x t m 鼓p o i n t e r t o n e x t l i n e 协r e 磐o n ,-, e v r e c tr l f n e r e c t ;,b o 呻d so f l i i ni m a g ep i 粒i s , p - r e _ w o r dp f i 刚v o 咄,+ 弦t o 觚w 矾讯l 沁+ , u s h o r 丁u s n u m w o r d s ;,n u m b e ro f w o r d si nt 1 1 sl i n e 引、 u s h o r t峭l i n e f o i t t :,r e - 州m 奶,f o n tf 研t l l i sl i u c h a ru c u p p e 心h a r h e g h t :,r e a v gh e i 曲to f 诅l lc h 删m 哪, u c h a ru c l o w 科c h 盯h e i g h 0 ,r e a v gh e i g h to f s h o r tc t i j 孤船略, u c h a r岭m i n w b r d s p a ;,r e t h er j g l i tv a c y i u eo f c h a 糟c t e rs p a , u c h a ru c m 默w o r d s p a ;,r e - t t i el e f iv a l l e yv a l o f w o r ds p a , u c h a ra v r d i s ;,r e t i i ca v c 馆g e 删:昭l i d i s t a l t 。, u c h a ru c f i 虻 u s h o r t峭l i n e s i y l e ;,s t y i e & n a 擎衙t l l i si i n c , r e _ l l n e ; 帅e d e f l r e l i n e 队r 1 6 p p - r e _ l i n e ; 对于t r 与e r 的集成,关于数据结构上的描述如下: 在r e 百o n 一级中添加e x p r c s s i o n 脚i ( 数学公式区域) ,与t x t r e g i o n 、 1 a b l e r e 西o n 、i m a g e r e 西o n 的关系并列 r 1 k 对于e x p 陀s i o n r e 西o n 区域并不进行识别,只是标识出来以区分开 其它区域,识别它的任务仍要交给0 f r n 【来完成。 第1 3 页 第二章系统集成策略步骤及服务总线模型 r t k 与o f r 丁k 之间以及它们与u i 层之闻的控制及数据、状态传递需 要通过服务总线模型来实现。 用户界面理解 用户界面的理解也是系统理解的一个组成部分,它是用户界面重建的关键。 要完全理解现存的用户界面,必须刻画界面的结构和行为。即什么是界面必须 处理的基本动作( 击键、按鼠标) ,系统对这些动作的行为反应的简洁描述,什么 界面的等价概念是同这里相关的等。 对t r 和e r 系统的用户晃面理解主要是参考u i 设计的相关文档并操作具 体系统进行观察和体会,找出两个系统的相同点和不同点,针对具体的系统集 成情况,设计出新系统的界面样式风格。 ( 一) t r 系统界面 图2 3 t r 系统用户界面 f 一* 埘1 i 删,种虬 4 f 女 神 弦熟, 竹t ”t 如图2 3 所示,为t r 系统的用户界面( l o c a t e 操作之后) ,界面主要分为 三个部分:上部的菜单和工具栏、左侧的导航条、右侧的视图部分。 工具栏第一排的按钮基本反应了o c r 识别的处理流程:砸p a g e 一 第1 4 页 第二章系统集成策略步骤及服务总线模型 l 0 c a t e r e c o g i l i 冼叫巳x p o r t 下面的按钮包括图像放缩、翻转等操作以及手工圈划识别区域等。 左侧的导航条显示图像文件的压缩图,用于点击切换大图。 右侧的视图区,直接显示图像文件,并根据进行到的识别步骤提供相应 的显示信息。 ( 二) e r 系统界面 图2 4 e r 系统界面及p f o o 衙菜单 如图2 4 所示,为e r 系统的用户界面( r e c 0 印i z e 操作之后) ,界面主要分 为4 个部分:上部的菜单和工具栏、左侧的导航条、右侧上部的视图部分、右 侧下部的显示部分。 工具栏第一排的按钮基本反应了数学公式识别的处理流程:l 0 a d l o c a t c s e 舯饥t r e c o g l l i z e _ a 衄i y z e 下面的按钮包括图像放缩等操作。 左侧的导航条显示图像文件的压缩图,用于点击切换大图。 右侧上部的视图区,显示数学公式图像,并根据进行到的识别步骤提供 相应的显示信息。 第1 5 页 第二章系统集成策略步骤及服务总线模型 右侧下部的显示区,显示每个数学符号的识别结果。 ( 三) 小结 将e r 系统集成入t r 系统,关于u l 界面方面的处理,通过对t r 系统以及 e r 系统进行界面分析理解,我们可以得出以下结论: 1 ) 基本保留t r 系统原有的u i 结构和界面操作方式,包括菜单、处理流程工具 条、图像操作工具条等。 2 ) 圆圆口 t r 的t o o l b 缸当中有上图所列的三个图标,表示可以人工手动圈划区域,来 单独进行识别,三个图标分别表示文字区域、图片区域、表格区域。系统集 成以后应该再添加一个图标,来表示可以人工圈划数学公式区域。 3 ) 在t r 的1 砷i b 盯中还需添加一个图标按钮,在识别进行之后来调出数学公 式的p m o f e r 工具。 2 1 2 系统集成 经过对两个应用系统分别进行程序理解、数据理解和用户界面理解之后, 我们得到了大量的数据信息,然后还要对收集的数据进行过滤,确定到底要了 解什么要忽略什么,从丰富的数据源中抽取所需的数据信息。在得到了对系统 的全面理解之后,就可以开始进行对这两个应用系统的功能集成,进而得到扩 充了原有两个系统功能的新系统。 t r 与e r 两个系统的集成涉及到很多合并,包括:系统应用控制合并、界 面合并和数据字典合并等。 集成的具体步骤是首先对原有系统t r 的相应处理流程的结构进行重构,以 便为系统集成工作提供完善的接口,然后按照应用集成服务总线模型建立新系 统架构及设计处理流程。 重构 重构( r e s 蜘l c n 埘n g ) 是对软件的内部结构所作的一种改变,这种改变在可观察一。 行为不变的条件下使软件更容易理解。通常,重构并不修改整体的程序体系结 构,它趋向于关注个体模块的设计细节以及定义在模块中的局部数据结构。如 果重构扩展到模块边界之外并涉及软件体系结构,则已属于正向工程的范畴。 第1 6 页 第二章系统集成策略步骤及服务总线模型 这里重构的目标是对t r 应用系统的设计进行重新组织,使系统在满足通用 设计的准则的同时,兼具有容易扩展系统功能的结构,即可集成识别数学公式 的功能,并为以后集成其它功能做好准备。在重构应用与实践中,设计模式( d c s i 印 p a c t e n l ) 为重构提供了一个明确的目标。重构的实质是在保持可观察行为不变的 前提下,为提高软件的可理解性,可扩展性和可重用性而对软件进行的修改。 重构后的系统处理流程由下图2 5 所示,仍旧保留u i 层+ 识别核心层( r t k + o 】姒) 的结构,只是对两个识别核心的调用顺序和方式进行了重新安排以 使得系统很好的实现它识别的处理过程。 图2 5 新t r 系统处理流程图 , 新系统的结构解释如下: u i 层仍旧以t r 的界面设计为主,结合原e r 系统的特点进行相应功能补充。 核心层由r 1 x 与o f r l l 【共同构成。 ,t 处理图像由r 1 k 开始,做l o c a t e 定位操作,标识各个区域,将图像中的数 学公式区域传给o l 裂r k 来进行识别,剩余区域继续由r t k 进行识别,两者的 识别结果传给t r 进行结果显示和输出。 服务总线模型 重构是为了系统集成中两个系统彼此适应而在接口部位进行的相应结构修 改,在上面介绍的系统流程中,为了能实现r 1 k 、o f r l k 、t r 三者之间状态: 数据的传递,我们提出了总线模型。在下一节详细介绍 。 第玎页 第二章系统集成策略步骤及服务总线模型 第二节服务总线模型 类似于o c r 商业系统这样的应用系统,都是紧密耦合的系统,在系统集成 与功能扩展问题上,要尽可能的不去破坏原有系统的内部结构,比如涉及到t r 系统与e r 系统的集成时,虽然它们的系统结构相似,但是系统的处理流程却并 不相同,要特别注意,。 一 ,。 t r 产品的内核r 1 k 的处理流程基本上遵循以下步骤: 读图一预处理一版面分析定位一识别。 数学公式识别系统内核o i 珉t k ,其处理流程基本上遵循以下步骤: 读图一定位一切分一识别一分析一后处理一输出。 一 下面我们提出如图2 6 给出服务总线模型。 f 数据厍n , : tv + i 。 。 系统内拨用户界瞄 , ii 憩线 i i i 识列工具1li 识剐工具2l , - 图2 6 基于总线的系统模型 一 7 在这个模型中新的系统根据原有的系统建立新的处理流程,两个系统内核 在处理过程中产生的数据均直接与应用系统的u i 进行交互而并不互相干扰,处 理流程本身的进行、其与系统内核的交互以及与u i 的信息交互均由消息队列发 出消息进行控制。 , 总线模型机制的优点在于: “一91 ) 基本保持原有系统的完整性,、不破坏应用系统各自的处理流程。一4 一 2 ) 基于总线的系统模型仍然是一种面向对象的结构,系统中的对象是按照规 范设计的模块,这些定义良好的软件模块( 组件) 在系统中共存,并且充 。 分地相互作用。按照这种结构,可以将若干组件组合起来,以建立更大和 第l b 页 第二章系统集成策略步骤及服务总线模型- 更复杂的系统。 3 ) 这种模型的关键在于一种高效的总线结构,使模块( 组件) 之间能以一个 公共的接口互相连接,做到组件的即插即用,无缝集成。在这种模型的系 统中,组件间的通讯链接数是线性的,并且由于各组件接口规范的一致性, 通讯的复杂度大大下降,也提高了组件的互操作性。有利于系统功能的进 一步扩展,可继续集成其它功能的应用系统。 基于这种集成总线模型,新t r 系统的系统结构模型如下图,图2 7 。 图2 7 新t r 系统模型 如图所示,对于新系统的处理流程,我们仍按照图像处理的原有流程来进 行,仍旧包括输入、定位、切分、识别、后处理、输出等两个处理核心r t k 与0 f i 涨作为相互独立的组件各自完成自己的功能,它们彼此之间的相互调用、 数据传递以及它们与t r ( u i 层) 之间状态和数据的传递均通过总线消息队列来 进行控制。 第三节数学公式p 砌) f e r 方法研究 机器智能系统需要提供丰富的人机交互功能,借助人的编辑修改来提高实 用性。这是因为机器智能系统不能解决百分之百的问题,其识别与分析上的处 理错误是被用户所容忍的,但是这些错误必须能够通过丰富的人机交互功能进 第1 9 页 第二章系统集成策略步骤及服务总线模型 行纠正下面针对数学公式人工编辑的相关问题进行研究。 2 3 1 需要考虑的问题和达到的目标 1 ) 公式结构: 对公式内部表示的选择影响到整个公式编辑器设计的方方面面所有的 编辑操作、格式修改、直观显示和输入,输出分析都涉及到这种表示如何组 织这些信息将会影响到应用的其他方面。 2 ) 格式化: 公式的直观表示是二维的,那么如何将不同类型的表达式安排到正确的 位置,是正确显示公式结构必须要考虑的问题。那么哪些对象负责执行不同 的格式策略,这些策略又是怎样和内部表述结构相互作用的呢? 另外,用户可能会对默认的显示格式进行修改,尤其是对字体和字号的 修改,会影响到该类型的符号在公式显示中的位置,因此,公式编辑器的格 式化算法必须考虑所有这些因素 3 ) 用户操作: 用户可以通过不同的渠道控制公式编辑器,包括点击按钮、点击公式编 辑器,用鼠标进行拖拽和键盘输入这些操作对应的功能分散在整个应用对 象中。这里需要提供一个统一的机制,既可以访问这些分散的功能,又可以 对操作进行撤销( 帅d o ) 。 4 ) 错误检查: 一 主要是针对公式编辑器的输入进行错误分析,进行一些修改操作和标记 可疑表达式。那么数学公式编辑器如何支持这样的操作? 当我们不得不添加 一个新的分析操作时,如何尽可能少的修改相关的类? 2 3 2 设计模式 针对每一个问题进行分析,可以选择合适的设计模式。 f n ”。1 v 嵋 一n m r 一懈r “崩q k 。铲 , 1 ) 公式结构 公式编辑器的用户界面应该可以让用户直接操纵这些表达式以及其子结 构。例如,一个用户应该能够将一种类型的表达式当成一个单元进行整体引用, 而不是非结构化的一堆公式符号,这有助于界面简单和直观。因此,在这里, 。第页 第二章系统集成策略步骤及服务总线模型 我们使用了“c o m p 0 s e ( 组合) 对象结构型模式”,用树形结构描述数 学公式编辑器的内部结构,以表示“部分一整体”的层次结构。这种模式使得 用户对单个对象和组合对象的使用具有一致性。 我们将为出现在公式表达式结构中的所有对象定义一个抽象类结点 ( c n o d c ) ,它是一个抽象类,既可以代表单个的公式符号,也可以代表公式符 号的组合表达式它需要声明一些和特定公式符号对象相关的操作,例如 d r 枷:同时,也需要声明所有的表达式对象共享的一些操作,例如一些用于访 问和管理子部件的操作。 这种模式的根本的思想就是将抽象类结点的接口设计最大化。 各种类型的表达式类都是这个抽象类的予类。数学公式中,类结点一共分 为如下几类: 抽象的基类结点:c n o d e 普通表达式类结点: c c 姗m 伽l n o d e 多行表达式类结点:c m i l l 吐u n e d c 矩阵表达式类结点:c m a n i ) 【n o d c 角标表达式类结点: c s c r i p t n 0 d e 指数类结点;c h i d e 心e 。 堆叠表达式类结点:c s t 蝌o d e 标准函数名类结点:a 阳n c t i n o d e 定界表达式类结点:e l i l i l i t e r n o d c 组表达式类结点:c g r o u p n o d e 帽子表达式类结点:c c a p n o d e 根式表达式类结点: c r a d i c a l n o d e 分式表达式类结点:t i n 0 d e 2 ” 操作符类结点:c 研啊a t ( 舭 操作数类结点:c o p 啪n d n o d c 其中,操作符类结点和操作数类结点为叶子结点,其他结点均为中间结点。 2 ) 格式化 格式化显示的权衡要点:格式化的质量和格式化的速度 我们理想情况下是希望能够自由的添加一个c n o d c 的子类,而不用考虑格 第2 l 页 _ 1 1 _ 一 1 1 _ 。 弋_ _ - _ 一 一 l | 一 一 第二章系统集成策略步骤及服务总线模型 式算法,同样,增加一个格式化算法的时候,不应该修改已经有的子类。因此, 我们把格式化算法独立出来,并把它封装到对象中使其便于替代。同时定义一 个封装格式化算法的对象的类层次结构,其根结点将定义许多格式化算法的接 口,每个子类实现这个接口以执行特定的算法。 在以前的设计中,由于不同的字符需要使用不同的算法( 不同的字体、字 号) 进行格式化显示,因此,大多采用的是c a s e 语句。而在面向对象程序设 计中,我们可以使用另一种方法来代替条件式,这就是多态使用多态最根本 的好处是:如果你需要根据对象的不同型别而采取不同的行为,多态使你可以 不必编写明显的条件式。 3 ) 用户操作 当我们进行设计时,很容易想到的是对用户操作进行封装,对每一个具体 的用户操作进行编码实现。然后通过一个或者多个用户操作,来满足用户从界 面上发送的一个请求。这种做法将请求和特定的用户结合起来,虽然在设计中 最容易想到,而且实现并不困难,但是它存在着如下的问题: 这种方法将请求与特定的用户界面结合起来,函数的扩充性不高。 当用户从不同的界面发来相同的请求时,必须要重新编码实现用户的请求, 其函数的复用性不高 很难实现撤销,重做的操作。 因为我们很难将状态和函数联系起来,例如,我们改变了显示的字体,但是, 需要进行撤销操作,这时,进行撤销操作的函数必须要知道上一个操作之前的 系统状态中使用的是何种字体。 , 为了解决上面的问题,我们的方法是封装请求,即“c o m 池n d ( 命令) 一一对象行为型模式”,同时为了支持撤销,重做的操作,我们还使用了 “m 既诬n 1 d ( 备忘录) 对象行为型模式”c 珈粕d 模式将请求封装为一 个对象,从而可是使用不同的请求对客户进行参数化;m e m e n t o 模式在不破坏 封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,。,。 以后就可以将该对象恢复到保存的状态。 4 ) 错误检查, 数学公式编辑器对输入的k t c x 文档进行分析,生成公式内部表示树时,需 第笠页 第二章系统集成策略步骤及服务总线模型 要对树形结构中的结点进行可疑属性的判断。比较接近“v i s d r ( 访问者) 一 一对象行为型模式”中对其动机和实现。 但是,在进行了一段时间的编写设计之后,发现,其实,这个模式并不适 合数学公式编辑器的错误检查机制,并且将错误检查机制搞复杂了其原因就 是因为这个设计模式,对树形结构的每一个子类都提供了错误检查的接口,但 是,在我们实际的应用中,对叶子结点的错误检查是没有必要的,只是需要对 中间结点( 表达式) 进行检查,因此,这个模式中提供的结构不适用于这里的 设计 如果采用以往的设计方法,对每一个公式进行错误检查时,其实需要判断 不同的表达式类型,然后选择考虑不同的方法对表达式进行检查。需要针对类 型进行选择,因此,我考虑可以使用s 仃a l c g y 的结构,使用多态来代替选择语句。 第2 3 页 第三章t r 系统与e r 系统集成的设计与实现 第三章t r 系统与e r 系统集成的设计与实现 第一节系统理解 3 1 1t r 及其核心r n ( 的总体框架及处理流程 工 p 峥p r o c e s s h i g p a 驴l 町o m a n d 汹 厂i i 、 ( 酗e ) t f l 一“一 i il r u ” i 广1s e 唧呲d 6 ip a i e l a y 呲i 匕= ! ! 卜( m ) i ir e l t 0 埔l c h 捌嗤e 协r r e c o 砸6 ” 力- 0 删咄曲、 工 ld e g k w 叫p o ,t - p h c e t - 自蛭l l 图3 1r t k 总体框架 夺读图像 将图像从扫描仪或者文件中读到内存里 预处理 包括噪音去除、二值化、页面自动定向和倾斜校正。 噪音去除即去除页面边缘的噪声及噪声点 二值化即将彩色或灰度图像转变为黑白( b ,w ) 二值图像。 页面自动定向即将方向错误的页面自动旋转为正确。 倾斜校正即将倾斜的页面通过坐标变换的方式旋转一定的角度使其不倾斜。 版面分析 将页面中的文本区域、图像区域、表格区域、( 数学公式区域) 相分离,以针对 不同的区域进行不同的处理。 在文本区域的基础上,进一步将文本区域中的文本行和文本行中的文本块找出 第2 5 页 第三章t r 系统与e r 系统集成的设计与实现 来( 文本块定义为以字节为单位的连通体) ( g t s 模块) 。 在表格区域的基础上,迸一步确定表格的内部组织方式( 1 a b l e 模块) 。 字符切分 在文本块的基础上,将单个字符图像切分出来。 切分操作是一个复杂的过程,必须有验证切分出来的字符图像是否合法的算法, 如果不合法,则需进行进一步的切分操作。 在r t k 中,切分操作分三个步骤完成:投影、搜索连通体、搜索轮廓定义切分 点。 夺字符识别 将字符切分模块返回的字符图像送入分类树中进行识别。 该模块结合后处理模块的拼写检查算法对字符切分模块返回的结果进行评价。 r t k 中的字符识别实际上是在字体识别的基础上进行,因此具有较高的正确率。 相对于切分模块,r t k 中的识别分三个步骤进行:首先识别投影能够投开的字 符,然后识别搜索连通体能够提取的字符,最后处理粘连字符。 后处理 。 根据一系列的规则和基于单词的拼写检查进行候选识别结果的挑选,以及误识 字符的纠正。 在r t k 中,后处理主要出现在两个地方:一个是识别模块中需要调用后处理以 验证切分的正确性( 可以称为识别后处理) ,另一个是系统的最后调用后处理以 验证识别的正确性( 可以成为系统后处理) 。 版面恢复 将识别后的结果按照原始版面进行排版,使结果版面与原始图像版面保持一致。 结果输出 将识别后的结果按照各种文件格式输出。 3 1 2e r 系统工作流程。 一r w ”- 一:琦,下图,图3 2 为e r 系统的工作流程图;1 “一“”一“” 第2 6 页 第三章t r 系统与e r 系统集成的设计与实现 图3 2 e r 系统工作流程 第2 7 页 第三章t r 系统与e r 系统集成的设计与实现 。 读图像 e r 系统支持从文件中输入文档图像( l o a df r o mf i l e s ) 和从扫描仪中输入文档 图像( l o a df r o ms c a 船e r ) 两种方式。 数学公式定位 。 ” 从含有数学公式的文档图像中找到数学公式的位置,数学公式定位分为独立数 学公式定位和内嵌数学公式定位两种。e r 系统提供了三种方式定位方式;自动 。 定位( a u n l 0 c a t i o n ) 、手动定位( m 锄u a l 【舭a t i o n ) 和模扳定位 t ( t c m p l a t e l o c a t i o n ) 。 数学公式字符切分 切分出数学公式定位区域内的所有数学符号,定位这些数学符号的外接矩形。 采用的方法是首先使用寻找连通体的方法初步切分出符号区域,然后将属于同 一符号的连通体进行合并,得到所有符号的外接矩形。 数学公式符号识别 。 采用统计与结构相结合的方法识别出所有的数学符号。 数学公式分析 通过分析得到数学公式的版式结构,并用数学公式分解树表示分析结果。 结果输出 。 将使用分解树表示的版式结构表达为l a 自e x 格式。 3 1 3r t k 及o f r l k 的流程处理函数 下面我们分别介绍r 1 x 与o f r l k 两个识别处理核心各自主要的流程处理 函数,方便后面的重构工作,从而统一各模块的接口,使得两个处理核心在新 的识别处理流程中发挥正常的作用。 下面的表3 1 中给出了r t k 处理流程中的一些主要函数。其中包括预处理、 图像定位、图像识别、拼写检查和输出。在r 1 1 ( 的图像识别处理过程中这些函 数被依次顺序调用。 。“。5 ”。一”一。- ”“:表3 1 r t k 处理流程函数表“”。”一 4 。 i ? 处理二值化 。 = g _ p r i k c l i e m ) ; l 预处理倾斜校正 r 1 k p a g e a u t o r 0 t a t e 0 r t k p a g e , 砷 第2 s 页n 第三章1 r 系统与e r 系统集成的设计与实现 g _ p r i x c l i e n t ) ; r t k p a g e d e s k c w ( p r t k p a g e 。 g _ p r t k c l i e 咄& d e s k e wd a 切) ; l o c a t c 定位 r t k p 捌萨l o c a t e ( p r t k p a g e p r t k p a g e ,p r t k c l i e n tp r t k c l i e n t ) ; r e c ) g f l i z e 识别r 1 1 ( p a g e r e c o g i l i z c ( p r l r 狐g e p r t k p a g e ,p r t k c l i e n tp r t k c l i e n t ) ; c h e c k s p d l i n g 拼写检查r 1 x c h e c k s p e l l i n 舡p s t r p w o r d , p b o o l p b f o 啪d ) ; e x p o r t 输出r t k c l i e n t e x p o r t ( p r t k c l i e n t p r t k c l i e 峨 s h o r t s f o r 瞰t i d , p c h a rl p f i l e n 锄e ) ; 下面的表3 2 中给出了o f r t k 在处理数学公式流程中的一些主要函数。包 括图像中数学公式的定位、公式切分,识别、结果分析和输出。在o f r l x 识别 的过程中,这些函数也是依次按顺序被调用 表3 2 0 f r t k 处理流程函数表 【d c a t e 定位 o f r t ka p l0 f r t k i ,o c a t e o ; s e g m e m 切分 o f r t k a p io f r t k s e g r n e n t o ; r e c o g i l i z e 识别 0 f r t k a p l0 f r t k r e c o g n i z e ( ) ; a n a l y z e 分析 o f r t ka p io f r t k a n a l y z e ( ) ; e x p o r t 输出 0 f r t k a p l o f

温馨提示

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

评论

0/150

提交评论