(计算机软件与理论专业论文)跨平台ocr引擎的设计与实现.pdf_第1页
(计算机软件与理论专业论文)跨平台ocr引擎的设计与实现.pdf_第2页
(计算机软件与理论专业论文)跨平台ocr引擎的设计与实现.pdf_第3页
(计算机软件与理论专业论文)跨平台ocr引擎的设计与实现.pdf_第4页
(计算机软件与理论专业论文)跨平台ocr引擎的设计与实现.pdf_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

中文摘要 中文摘要 作为人工智能的重要方向,o c r 技术发展至今己较为成熟,并在各个行业 中取得了较为广泛的应用。o c r 的应用领域已经逐渐从大型企业和政府机构扩 展到了各类企业和大众的同常工作中。而伴随着计算机技术的飞速发展,人们 开始大量使用各种架构和操作系统的计算机和手持设备提高其工作效率和生活 质量。并期望o c r 技术能够应用于这些平台上。如何设计实现具有高度跨平台 性能的o c r 引擎以减少平台间移植的工作量,同时使该引擎具有较高的识别率 和较少的资源使用量即成为o c r 技术应用有待解决的重要问题之一。 跨平台o c r 引擎的难点在于各个平台之间具有较大的平台差异,包括硬件 相关的性能,操作和操作系统相关的系统调用和处理流程的不同。这些差异进 而引起了引擎调试,测试方法的不同。 本文在对比了各个平台之间软硬件差异,在现有o c r 技术基础上设计实现 了具有高度跨平台性能的o c r 引擎。主要的工作如下: 其一,分析了各个平台和系统之间差异,设计并实现了适用于跨平台o c r 引擎的系统结构。该系统结构提供了一个具有高度跨平台,可伸缩的灵活的o c r 引擎框架。基于该框架,o c r 引擎能够快速移植到其它平台,并能够方便地添 加相应功能模块并更改其算法。 其二,针对平台间软硬件接口的差异,提出了对这些接口的封装和抽象方 法。真实案例表明该封装抽象方法能够较大程度上避免或减小不同平台接口差 异对引擎的影响。 其三,对不同平台之间的调试,测试方法的共性和差异进行了具体分析, 在一定程度上整合了相应的调试,测试方法。 其四,针对手持设备资源的资源限制问题,改进了传统o c r 引擎内存管理 和图像预处理方法。 使用三个完全不同的平台组合对系统进行评测表明该跨平台o c r 引擎具有 较好的伸缩性和跨平台性。 关键字 o c r 跨平台系统嵌入式移植 a b s t r a c t a b s t r a c t a sa l l _ i m p o r t a n td o m a i no fa r t i f i c i a li n t e l l i g e n c e ,o c rt e c h n o l o g yi sm a t u r e l y d e v e l o p e da n db ew i d e l ya d a p t e dt om o s ti n d u s t r i e s b yt h et i m ea p p l y i n go fo c r h a sb e e ne x t e n d e df r o mg o v e r n m e n ta n dl a r g ec o r p o r a t i o nt oo r d i n a r yp e o p l e a n d a b u n d a n ta r c h i t e c t u r e sa n do sh a v eb e e nu s e dt oi m p r o v ee 伍e i e n c i e so fw o r ka n d q u a l i t yo fp e o p l e sl i f e s oo c rt e c h n o l o g yh a sb e e ne x p e c t e dt ob ea p p l i e d0 1 1t h e s e p l a t f o r m s a n dh o wt od e s i g na n di m p l e m e n tah i g hp l a t f o r mi n d e p e n d e n ta n d p e r f o r m a n c eo c re n g i n eb e c o m e sac r u c i a lp r o b l e m a f t e rc o m p a r e d i v e r s i t yo fd i f f e r e n c ep l a t f o r r r l ,b a s e do nc u r r e n to c r t e c h n o l o g y w e d e s i g n e d a n d i m p l e m e n t e d a h i 曲p e r f o r m a n c e a n d p l a t f o r m - i n d e p e n d e n to c re n g i n e c o r r e s p o n d i n gw o r ki sa sf o l l o w : f i r s t l y , a f t e ra n a l y s i sd i v e r s i t yo fe a c hp l a t f o r m ,ah i g h l ya b s t r a c ta n ds c a l a b l e f r a m e w o r kh a sb e e nd e s i g n e d t h ef r a m e w o r ka c t sa sap l a t f o r mo fo c re n g i n e a c c e l e r a t e sp o r t i n gp r o c e s sa n dg u a r a n t e e ss c a l a b i l i t yo fo c r e n g i n e s e c o n d l y , d i f f e r e n c eo fa r c h i t e c t u r ea n do sh a sb e e nl o o k e di n t od e t a i l e d a m e t h o do fa b s t r a c t i o na n de n c a p s u l a t i o nf o ri n t e r f a c e sh a sb e e np r o v i d e d r e a lc a s e h a sp r o v e dt h a tt h em e t h o dc a na v o i do rr e d u c ee f f e c tw h i c hi si n d u c e db yd i v e r s i t y o fp l a t f o r m s t 1 1 i r d l y , i n t e g r a t i o n so fd e b u ga n dt e s tm e t h o do nd i f f e r e n tp l a t f o r n lh a sb e e n i n v e s t i g a t e da n di m p r o v e d f o u r t h l y , i m p r o v i n gw o r kh a sb e e ni m p l e m e n t e do i lr e s o u r c er e s t r i c t i o no f e m b e d d e dp l a t f o r ma n dp r e t r e a t m e n to fi m a g e p r o c e s s t e s t i n gw o r kw i t h3d i f f e r e n tp l a t f o r i l lc o m p o s i t i o n ss h o w st h a tt h ee n g i n eh a s s h o w nh i g hs e a l a b i l i t ya n dc r o s s i n d e p e n d e n c e k e y w o r d o c r , c r o s s - p l a t f o r m ,e m b e d d e ds y s t e m ,p o r t i n g l i 内容目录 图目录 图2 - 1 :跨平台o c r 引擎处理流程1 7 图2 - 2 :m u f f r e s o l u t i o na n a l y s i s 图像处理流程1 8 图2 3 :o c r 分类流程示意1 9 图2 - 4 :系统结构图2 0 图2 5 :在静态接口模型中接口的定义位置2 l 图2 6 - b r i d g e 设计模式示意2 1 图2 7 :所有的数据必须按照其自然对齐方式对齐。2 2 图2 8 :字节顺序差异示意2 3 图2 - 9 :平台相关操作示意图:不同平台上x 结果不一致。2 4 图2 1 0 :i l p 3 2 l p 6 4 数据模型对比。2 5 图2 1 1 :4 字节对齐2 7 图2 - 1 2 :小端1 6 位数据转换为本地模式。2 8 图2 1 3 :x 8 6 平台上避免除零错误代码3 0 图2 1 4 :m a co sx 下的线程模型层次3 1 图2 1 5 :线程状态转换图3 2 内容目录 图2 1 6 :c 文件操作接口抽象示意图3 3 图2 1 7 :内存分配模块系统层次图3 5 图2 1 8 :小内存分配模块3 5 图2 - 1 9 :大内存管理模块3 6 图2 - 2 0 :内存分配流程图3 7 图2 2 1 :跨平台o c r 引擎调试环境3 9 图2 2 2 :宿主机目标机调试机制4 0 图2 - 2 3 :多平台版本对比原则示例。4 1 图2 2 4 :使用串口接收到的调试信息4 3 图2 2 5 :理光m f p 上内存监控工具。4 6 图3 1 :3 2 位本地整数转化为小端模型格式代码示例。4 7 图3 2 :编译配置环境5 0 图3 - 3 :x c o d e 中的编译设置。5 1 图3 - 4 :平台间错误传递异步关系示意图5 2 图3 5 :错误验证框架5 3 图3 6 :错误验证映射流程5 4 图4 1 :硬件架构,操作系统相关模块移植策略示意图5 6 v i i 内容目录 图4 2 :加入p d f 生成模块结构示意5 7 v i i i 内容目录 表目录 表2 - 1 :为解决端位顺序操作所设计的调用接口2 7 表2 2 :特殊端位转换函数接口2 8 表2 - 3 - 跨平台o c r 引擎预定义数据类型2 9 表2 - 4 :各种环境的调试工具4 2 表2 5 :符号词汇识别率参数4 3 表4 - 1 :英文识别率测试样本5 8 表4 2 :各平台识别率5 8 表4 3 :图像组属性描述。6 0 表4 - 4 :各平台识别率6 0 南开大学学位论文版权使用授权书 本人完全了解南开大学关于收集、保存、使用学位论文的规定, 同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版 本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、 扫描、数字化或其它手段保存论文;学校有权提供目录检索以及提供 本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有 关部门或者机构送交论文的复印件和电子版;在不以赢利为目的的前 提下,学校可以适当复制论文的部分或全部内容用于学术活动。 学位论文作者签名:夺崮吸 枷年s 月幻日 经指导教师同意,本学位论文属于保密,在年解密后适用 本授权书。 指导教师签名:学位论文作者签名: 解密时间:年月日 各密级的最长保密年限及书写格式规定如下: 南开大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行 研究工作所取得的成果。除文中已经注明引用的内容外,本学位论文 的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的 作品的内容。对本论文所涉及的研究工作做出贡献的其他个人和集 体,均己在文中以明确方式标明。本学位论文原创性声明的法律责任 由本人承担。 学位论文作者签名:巷陶波 瓣5 月钔日 第一章前言 1 1 1 论文背景介绍 第一章前言 第一节论文背景介绍与问题提出 当今计算机技术飞速发展,个人电脑( p c ) 和各类手持嵌入式设备得到了很大普及, 这给人们的生活和工作方式带来了深刻变化。计算机应用方面,已经从单一的科学计算发 展到了社会上的所有方面,包括数据存储和分析,视频音频处理和分析,人工智能等,并 且已经从单一学科发展到了几乎所有研究领域和学科。 而作为模式识别的一个重要应用,o c r 技术的应用从第一代o c r 产品到现在已经经 历了4 0 多年的历史。早在1 9 2 9 年,德国的科学家t a u s h e c k 首先提出了o c r 的概念,并 且申请了专利。几年后,美国科学家h a n d e l 也提出了利用技术对文字进行识别的想法。但 这种梦想直到计算机的诞生才变成了现实。 o c r 的意思就演变成为利用光学技术对文字 和字符进行扫描识别,转化成计算机内码。在1 9 6 0 - - 7 0 年代,世界各国相继开始了o c r 的研究,而研究的初期,多以文字的识别方法研究为主,且识别的文字仅为o 至9 的数字。 i b m 公司最早开发了o c r 产品,1 9 6 5 年在纽约世界博览会上展出了i b m 公司的o c r 产 品i b m l 2 - 8 7 。当时的这款产品只能识别印刷体的数字、英文字母及部分符号,并且必 须是指定的字体。这一时期的o c r 产品主要用于政府机构和大型企业,普通企业和个人 并不能享受o c r 技术带来的便利。经过3 0 多年的发展,到上世纪末本世纪初,o c r 技术 已经发展得较为成熟。o c r 技术已经被企业及个人普遍使用。在这一时期,o c r 技术使 用者一般使用扫描仪或是其它图像采集设备采集待识别的源图像,然后在p c 或是工作站 上进行识别工作。o c r 技术的广泛使用使得企业办公效率得到极大的提高,而o c r 产品 的要求也从最初的识别率发展到识别速度,易用性和稳定性等方向发展。 到了最近1 0 年,就如 1 5 所分析一样,随着近年来计算机硬件性能的提高,计算机和 其它各类嵌入式设备的处理速度成倍加快,设备的体积越来越小。人们开始在工作和日常 生活更多地使用这些设备来提高效率。而o c r 技术也被广泛使用并且越来越多地受到人 们的关注。人们不仅在传统计算机平台上使用o c r 应用,而且希望能够将o c r 应用转移 到手持嵌入式设备上以提高个人工做、学习的效率和生活的质量。例如,人们开始将o c r 技术应用到手机上以实时快速地识别名片上的联系人的信息;近年来很多公司开始开发帮 助盲人识别自然场景中的各种文字的便携设备等。 l o 第一章前言 1 1 2 问题提出 虽然o c r 技术发展至今已经较为成熟;现在的发展趋势是将o c r 技术应用到各种软 硬件平台上,但现在市场上充斥着各种类型,各种档次的硬件设备,不同硬件设备使用不 同架构的处理器,并且其上运行的操作系统也多种多样。将一个应用程序移植到另一平台 往往需要花费较多的时间,有时几乎要将应用程序完全重写。而o c r 技术的实现较为复 杂,完全重写所花费的代价几乎是任何公司都不能承担的。同时,图像采集方式也从原有 的单一扫描仪采集方式发展到使用手持设备图像采集,原有的面向扫描文档图像的o c r 技术已经慢慢不能胜任这些图像的识别工作。所以,正如 3 】中所述,必须使用特定的策略 来市场变化和开发话的时间的矛盾。 要解决该问题,最好的策略就是设计一个具有较强跨平台能力的o c r 引擎,使该引 擎在不需要修改( 或是经过少量修改) 就能在不同的硬件平台,操作系统上运行。 而本文所要研究的问题就是如何设计并实现一个具有高性能,较强跨平台性能的o c r 引擎。 第二节跨平台软件基本知识及构造模型 1 2 1 跨平台软件的定义和目标 要给出跨平台的定义, 首先要明确平台及其相关概念及含义。以下是【1 中和平台相 关的定义: 平台:是指以下几个概念的任意一个,或是它们的组合( 和具体的解决方案相关) : 1 处理器类型:例如,x 8 6 ,p o w e r p c ,m i p s 等。 2 操作系统的类型:例如,w i n d o w s ,f r e e b s d ,l i n u x ,m a co sx 等。 3 硬件系统类型:例如,普通p c ,工作站,手持设备等。 基于以上对平台的定义,对跨平台的定义如下: 跨平台( 或称多平台) :能够运行于多种不同的平台, 且在各个平台下功能一致( 或 基本一致) 的软件。说一个软件具有跨平台性, 并不一定是说该软件可以运行于任意平 台,而是指该软件可以运行于两种以上的平台。 平台无关:软件没有( 或是只有很少的部分) 是和特定平台相关的性质,其实质就 是跨平台性。 1 2 2 影响软件跨平台的限制因素 上- d , 节给出了平台的定义,定义中给出的三种平台的差异都限制了软件的跨平台 第一章前言 性。本节将对三种差异对软件跨平台性造成的影响做简要描述。 1 处理器类型的影响 不同的处理器具有不同的硬件规范 2 【3 4 】, 而和跨平台软件的设计密切相关的 部分主要是处理器的函数调用方式,寄存器访问操作,指令, 数据对齐方式,字节 排放顺序。如果在软件设计时没有考虑到这些因素的限制,那么即使程序可以编译运 行,程序运行时也可能不能产生预期的结果, 严重时还回导致程序崩溃。 2 操作系统类型的影响 各个操作系统具有不同的程序二进制接口( a b i ) 5 】 6 】, 这样就限制了程序中函数 调用的方式,而且各个操作系统提供给上层的系统调用( a p i ) 各有千秋,如果在程序设 计时没有充分地考虑到各个系统之间的差异, 那么程序将很难移植到一个新的平台。 3 硬件类型的影响 除了处理器类型,操作系统类型的不同会给跨平台软件的设计带来困难外,其他 硬件设备的不同也会增加跨平台软件设计的困难。例如,当在资源及其有限的手持嵌 入式设备上运行软件时,就不能像在p c 或是工作站上一样过多地占用内存 7 。这就 要求更为高效的内存管理方式及算法的实现。 1 2 3 跨平台软件的实现模型 针对以上分析的三种平台限制因素,产生了以下三种跨平台软件设计实现的模型: 1 操作系统级别的跨平台 应对市场的需求,部分操作系统本身已经实现了跨平台。 也就是说,这样的操 作系统可以运行与多个不同的处理器平台。例如,m a co sx 既可以运行于i n t c lx 8 6 平 台,又可以运行于p o w c r p c 平台;n e t b s d 已经可以在超过5 0 个操作系统上运行。 2 虚拟机级别的跨平台 虚拟机是一个自包含的操作环境,其表现类似于一台单独的计算机, 它实现了 对高级语言执行环境的抽象。一般情况下,虚拟机将其支持的高级语言抽象为其可以 解释的中间语言,然后在运行时逐条解释。常见的虚拟机环境如j a v av i r t u a lm a c h i n e 8 】 和d o t n e t 执行环境 9 】。只要将相应的虚拟机移植到目标平台, 那么虚拟机支持的语 言也就可以在该平台执行而不需要任何修改。 3 应用软件级别跨平台实现 很多软件在设计时就需要将其设计成可以在多个平台上运行( 或是只用经过少量修 改就可以在多个平台上运行) 。这样就要求在软件设计阶段,设计人员就要充分考虑将 来软件运行的目标平台的特性和接口特点,例如使用 1 0 中函数整合方法,对这些接口 特点进行抽象,使软件平台相关部分和平台无关部分相分离,使软件具有更强的跨 平台特性。常见的应用软件级别的跨平台软件有g n ug l i b 库,g t k 等。这些软件在 1 2 第一章前言 设计时就对平台相关部分做了细致的抽象,使得它们可以很好地在多种目标平台上工 作。 1 3 1 重点难点 第三节研究目标及内容组织 传统的应用软件只需在某一特定的平台上运行即可,而跨平台o c r 引擎的目标是在 多个平台上运行。这一设计目标的不同就决定了跨平台o c r 引擎和传统应用软件在设计 和实现流程上的区别。 总体来说,跨平台o c r 引擎和传统应用软件在设计和实现时所面对的差异主要以下 两方面: 1 面临的瓶颈不一样:传统应用唯一需要考虑的瓶颈就是如何提高软件的性能,而 跨平台o c r 引擎不仅需要考虑性能,还要考虑每个平台上的资源使用限制和体系 结构之间的差异。 2 软件模块组织方式的不同:跨平台o c r 引擎需要在多个平台上运行,需要考虑硬 件体系结构和操作系统之间的差异,这就决定了跨平台o c r 引擎模块组织方式和 传统应用软件的组织方式的不同。 3 开发环境的差异:不同的平台具有不同的开发,调试,测试流程和工具,所以开 发环境和引擎的整合也存在较大的不同。 1 3 2 本文研究目标 基于1 1 2 提出的问题,本文主要对跨平台o c r 引擎的设计和实现进行深入研究并加 以实现。其中主要对一下几方面进行了详细讨论: 跨平台o c r 引擎系统结构和接口的设计方法 要使o c r 引擎具有较强的跨平台能力和扩展性,就必须为引擎设计特定的系统 结构和操作接口,只有这样才能够将引擎方便地移植到新的平台。 建立适用于跨平台o c r 引擎的设计,开发环境 跨平台o c r 引擎在设计,开发过程中会涉及到较多平台,而且其开发流程好传 统应用程序的开发也有较大区别。 跨平台o c r 引擎的调试,评测和错误验证环境 跨平台o c r 引擎的代码管理,调试,评测更为复杂和困难,这就需要一套较为 全面完整的策略来指导上述操作的进行。同时也需要建立完善的错误验证环境保 证代码修改的正确性。 第一章前言 1 3 3 研究内容和组织结构 针对上述目标,本文提出了设计实现具有较强跨平台性能的o c r 引擎的原则和流程。 根据本文中描述的原则和流程设计实现的o c r 引擎不仅具有高度跨平台性,而且还具有 高度的扩展性。该引擎不仅能够运行于现有的多数平台上,而且易于移植到新出现的平台 架构上。 本文是对作者近两年半工作的总结,全文结构划分为五章: 第一章绪论。简要叙述了论文的研究背景,o c r 研究工作的现状,跨平台o c r 引擎 的必要性和和难点。最后简单介绍了本文的行文安排。 第二章跨平台o c r 引擎的设计原则和分析方法。详细分析了现有平台这件的差异, 对比了传统应用软件和跨平台o c r 引擎设计实现的差异并在此技术上进行系统结构和处 理流程设计,然后讨论了引擎的硬件接口,软件接口设计。接着讨论跨平台o c r 引擎的 调试,测试流程。 第三章跨平台o c r 引擎的实现。基于第二章中的设计,对引擎使用的关键技术进行 了详细的讨论,并使用三个完全不同的平台向读者展示了相应的关键技术的实现方法。 第四章系统性能评测。使用跨平台o c r 引擎在三个不同平台上的应用,对引擎进行 了全面的评测。 第五章总结与展望。该章总结了前四章的工作内容,并就跨平台o c r 引擎的算法和 系统优化问题进行了展望。 1 4 第二章跨平台o c r 引擎的设计原则与分析方法 第二章跨平台o c r 引擎的设计与分析方法 第一节跨平台o c r 引擎特点分析 2 1 1 跨平台o c r 引擎和传统软件对比 o c r 技术发展至今已经较为成熟,传统的图像识别应用一般是针对某一特 定平台而定制的,例如使用扫描仪得到图像,然后在p c 或是工作站上对其进行 识别。但跨平台o c r 引擎需要在众多平台上运行,而且很多是计算资源极其有 限的嵌入式设备,这就决定了跨平台o c r 引擎和传统o c r 引擎的差异:传统 o c r 引擎的运行环境计算资源较多,包括较大的内存和处理速度较快的c p u , 但跨平台o c r 引擎运行的环境可能内存较小,c p u 处理速度较慢,这就要求跨 平台o c r 引擎在设计时就要考虑这些因素并使用恰当的解决策略。 总体来说,跨平台o c r 引擎和传统o c r 引擎相比主要有以下三方面不同: 1 计算资源使用量的不同:正如上文所述,跨平台o c r 引擎需要运行于 移动设备上;而一般情况下这些设备的内存都较小,c p u 处理速度较慢, 其它外设的性能也较p c 或工作站低。 2 处理算法不同:由于计算资源的限制,使得跨平台o c r 引擎必须使用 特定的处理算法以适应受限的计算环境,而且就o c r 应用而言,使用 不同设备采集到的图像的尺寸和质量差异也较大,这就要求使用有别于 针对传统方式采集图像的处理操作和识别算法。 3 目标平台不同:传统o c r 引擎一般都是为确定的单一平台定制的,不 需要考虑平台因素对系统的限制;跨平台o c r 引擎需要运行于多个平 台,需要充分考虑平台差异带来的软硬件处理操作和性能的影响。 由于上述三个方面的差异,使得跨平台o c r 引擎在系统架构、代码组织方 式及实现算法和传统软件相比具有较大的不同。 1 5 第二章跨平台o c r 引擎的设计原则与分析方法 2 1 2 跨平台o c r 引擎的瓶颈 传统o c r 引擎主要专注于提升识别率和处理速度,跨平台o c r 引擎和传 统o c r 引擎相比,还需要考虑诸多的限制因素,而这些限制因素主要来源于2 1 1 小节中所描述的三个不同。这些不同决定了跨平台o c r 引擎的瓶颈主要为不同 平台之间的针对传统软件设计实现流程方法的整合,而需要整合的方面就是跨 平台o c r 引擎的瓶颈,也就是本文工作中所面临的挑战,它们主要包括以下几 个方面: 1 o c r 引擎系统结构:不同平台之间存在较大的软硬件差异,这就决定 了必须设计出能够适应于多平台的系统结构以保证系统各个模块之间 的组织和分工。 2 引擎的模块组织方法:主要涉及各处理模块的抽象和处理流程之间协 作,包括底层基础模块和上层算法实现模块之间的组织。 3 代码组织方式:主要涉及软硬件相关代码接口的封装和相应操作的抽 象,包括平台相关层和平台无关层之间的封装和抽象。 4 引擎的调试方法:各个平台所提供的调试工具存在较大的差异,这就决 定了必须整合现有的调试原则和方法。 5 引擎的评测方法:跨平台o c r 引擎源码中维护有适用于多个版本的源 码,不同的版本在运行时的处理分支及流程并不完全一样,这就对引擎 的评测方法提出了较大的挑战。 本章的以下章节将针对以上五点挑战一一给出相应的解决方案。 2 2 1 处理流程 第二节跨平台o c r 引擎的系统架构 在处理流程上,跨平台o c r 引擎和传统单一平台o c r 引擎的处理流程基 本一致。但因为跨平台o c r 引擎的主要功能是以该引擎为基础构建上层的应用 程序,所以引擎需要和上层应用分离,独自以中间件的形式存在。同时又必须 能够接收上层模块的参数以控制操作流程,这就要求跨平台o c r 引擎在设计时 要留出相应的接口接收上层的控制参数。 1 6 第二章跨平台o c r 引擎的设计原则与分析方法 图2 - 1 :跨平台o c r 引擎处理流程 应用程序构建于跨平台o c r 引擎( 模型) 之上,在运行时,引擎只和上层 应用进行通讯。上层应用将相应的识别请求( 包括待识别图像数据和配置参数) 传递给引擎后,引擎对相应的图像进行处理识别,处理步骤主要包括图像处理 操作,字符分类和后处理部分。在具体应用中,用户使用构建于上层应用取得 源图像,并使用相应的g u i 进行识别参数配置,随后上层应用将配置参数和源 图像提交给引擎进行处理。识别完成后,引擎将识别结果传回到上层应用程序 并进行结果的评估( 该步骤可选) 。 2 9 1 q b 提供了另一种适用于较多文档处理的 o c r 体系结构,但该结构需要较多的人机交互。 引擎的处理流程又可细分为图像处理,识别和后处理三个模块。图像处理 主要完成图去噪、二值化、图像自动校正和文字定位操作;识别模块使用预先 训练的分类器对经过定位的区域进行识别;后处理根据识别结果置信度对识别 结果进行处理以提高引擎的识别率。 传统的图形处理方法先使用图像采集设备( 例如:摄像头) 获取源图像, 之后对图像进行灰度处理,随后将图像二值化,在对图像进行自动校正之后才 去定位图像中的文本区域。该流程对内存的要求较高,而且处理速度相对较慢, 第二章跨平台o c r 引擎的设计原则与分析方法 如果在跨平台o c r 引擎中使用该处理流程,那么引擎将不适用于计算资源极其 有限的移动设备。多解析度分析( m u t i r e s o l u t i o n a n a l y s i s ) 1 3 较为适合处理该问 题。跨平台o c r 引擎使用该方法降低内存使用量,提高其性能。图2 2 给出了 相应的处理步骤: 图2 - 2 :m 嘶- r e s o l u t i o n a n a l y s i s 图像处理流程 图像处理模块首先对图像进行灰度处理,然后将其缩小到原始大小的1 1 6 , 例如:1 4 原始宽高。之后使用缩放后的图片进行处理。例如:当处理的图像 的分辨率为1 0 2 4 7 6 8 ,如果使用传统的处理方式需要处理7 8 6 4 3 2 个像素,但处 理缩小后的图像时,只需要处理2 5 6 1 9 2 的图像,这将极大提高系统的处理速 度。 现阶段有很多算法于o c r 处理,相应的研究工作可以参见 1 4 】。对于跨平 台o c r 引擎的识别模块,需要其具有较高的识别率,同时要具有较高的运行速 度。图2 3 为o c r 引擎的处理流程: 第二章跨平台o c r 引擎的设计原则与分析方法 图2 - 3 :o c r 分类流程示意 在分类识别后,得到相应的识别结果和置信度,如果置信度较低,则需要 对相应的字符做切分后再做后处理,如果置信度较高,则可以直接进行后续处 理工作。 2 2 2 引擎系统架构 正如2 1 1 所分析,跨平台o c r 引擎和传统o c r 引擎相比一个重要的差别 就是跨平台o c r 引擎需要在多个平台上运行。如1 2 1 所述,平台分为硬件平 台和软件平台,平台之间的差异也分为硬件平台引起的差异和软件平台引起的 差异,所以在设计跨平台o c r 引擎时,主要解决的就是这两方面的差异。 相对于应用软件,硬件平台处于整个运行系统的最下层,位于操作系统之 下,一般操作系统都会将硬件差异对应用程序运行时的影响降到最低,但硬件 平台的差异带来的影响并不能完全消除。在这些影响中,对应用程序设计和实 现影响最大的就是不同硬件平台上对数据访问的方式。 另一方面,即使硬件架构完全一致,如果应用程序需要运行在不同的操作 系统之上,操作系统平台的差异也会马上凸显出来:因为不同操作系统的内部 1 9 第二章跨平台o c r 引擎的设计原则与分析方法 实现机制的差异,不同操作系统提供的应用程序接n ( a p d 大相径庭。要实现操 作系统的跨平台特性,就必须对不同平台之间的差异有充分的认识,这些应用 程序接m ( a p d 主要涉及到线程进程管理,错误处理,文件i o 等。而且不同操 作系统的内存管理机制也有所不同,为了统一内存操作,需要为跨平台o c r 引 擎设计特定的内存管理模块。 基于上述分析,在进行跨平台o c r 引擎系统结构设计时,对相应的数据访 问操作,操作系统调用进行了封装,并实现了相应的平台无关的高效内存管理 模块,图2 4 为相应的跨平台o c r 引擎系统结构示意图: 平 台 o c r 核心模块 无 关 平台无关 锈 平 ;平台无关 内存管理 平台无关系统调用接口 台 ( 线程进程、错误处l 差 ,数据访闯 平台相关 理、文件l o ) 异 内存管理 z 封 缓 装 平台相关系统调用平台相关数据访闯 不 操作系统 同 平 硬件平台 台 图2 4 :系统结构图 如图所示,位于最下层的是不同的硬件和操作系统平台。位于操作系统上 为平台相关数据访问实现和平台相关的系统调用,这两个模块随着下层硬件平 台和操作系统平台的不同而有着不同的实现。该的跨平台模型基于源代码级别, 其它几种主要的模型见 1 7 。 平台相关系统调用之上为对操作系统处理的封装。其中主要进行线程进程 处理的封装,错误处理的封装和文件i o 的封装。经过对平台相关数据访问操作 的封装,抽象出平台无关数据访问层,通过该层访问进行数据的访问可以消除 硬件平台不同带来的数据模型不一致的问题。在平台相关的数据操作层之上构 建有平台相关的内存管理操作,而再其上是专用的平台无关内存管理模块,该 内存管理模块不仅将平台相关的内存管理操作进行了封装,同时还能够达到高 效使用内存,同时使引擎使用的内存可控。 位于最上层的是平台无关的o c r 处理模块,该模块的实现参见2 1 1 节。 第二章跨平台o c r 引擎的设计原则与分析方法 第三节跨平台o c r 引擎模块和接口组织 要使引擎能具有很好的跨平台性能,就必须在系统设计时充分考虑平台之 间的差异,并对相应的操作进行封装,使得引擎调用接1 3 和底层平台相关操作 相分离,当需要将跨平台o c r 引擎移植到新的平台上时,只需修改平台相关接 口即可。在静态接口模型 1 6 1 中,相应的接1 3 定义发生在位置l ,2 处。 i 接口定义位置2 图2 5 :在静态接口模型中接口的定义位置 跨平台o c r 引擎使用设计模式中的b r i d g e 模式【1 2 】对相关接i = 1 进行封装: 叁 l i m p - o p e r a t i o n l m p o 溯, 图2 6 :b r i d g e 设计模式示意 在对接口进行封装的过程中,使用 1 7 】中的方法进一步将所要封装的接口分 为硬件相关接口和系统调用相关接口,并且在系统实现时使用不同的策略对其 进行封装。 2 1 第二章跨平台o c r 引擎的设计原则与分析方法 2 3 1 硬件相关接口设计 正如1 2 节中对平台的定义中指出一样,平台很大程度上是指不同的硬件 设备:不同的处理器,不同的外设等。其中,不同外设对应用层的跨平台来说 可以通过对驱动程序的封装加于解决。要对硬件相关接口做出良好的设计,关 键是要理解系统架构之间的差异并将其抽象出来。以下就是主要的架构之间的 差异: 1 对齐: 现代处理器一般分为精简指令集( r i s c ) 和复杂指令集( c i s c ) ,精简指 令集指令数目较少,而且每一条指令采用相同的字节长度,一般长度 为4 字节,并且在字边界上对齐,字段位置固定,特别是操作码位置。 而复杂指令集指令数目较多,而且长短不一,且不需要对齐,详细信 息参见 2 7 。 这样就产生了一个问题:如果程序在r i s c 类型的架构上运行,程序就 必须保证操作数据的对齐,如果数据在内存中没有经过对齐,那么程序 在r i s c 平台上运行时很可能产生错误, 甚至导致程序的崩溃 1 1 。 c ; d ; 8 ; n t 字列齐,血a l 【i o n g ) 为4 字节 、 21o 8dc n 图2 - 7 :所有的数据必须按照其自然对齐方式对齐 由图2 7 可以看出,当在内存中分配空间时,各种数据类型都以相应的自 然对齐方式在内存中排布。 2 位域值: 在不同的系统中那个,对于有符号数据和无符号数据的操作算法是 不样的。例如:我们不能直接去比较两个有符号数的某一位是否相 等,因为对于有符号数据,此为可以为0 ,1 ,甚至1 ,在程序中直接 去比较位域的值可能会使程序失效出错。而且不同的平台字节出现的 顺序也不一致( 参见3 字节顺序 5 ) ,这将直接导致了位域比较出错。 3 字节顺序: 篁慧蛔 第二章跨平台o c r 引擎的设计原则与分析方法 微处理器普遍使用两种字节顺序策略:大端m i g e n d i a n ) 和小端 ( 1 i t t l e e n d i a n ) 。不同的字节顺序策略决定了多字节类型数据在内存中的 存放方式。当试图在一种架构上去读取在另外种架构上存储的数据 文件时,该问题的重要性尤为突出,文献 1 9 1 对该问题进行了详细分析。 当应用程序从网络上读取或是发送数据时,也需要考虑字节顺序问题。 如果没有考虑字节顺序,那么程序可能会运行错误。 u n s i g n e dc h a rc h a r v a l ; u n s i g n e dl o n gv a l u e = 0 x 1 2 3 4 5 6 7 8 ; u n s i g n e dl o n g 木p t r2 & v a l u e ; c h a r v a l = ( u n s i g n e dc h a r 木) p t r ; 图2 - 8 :字节顺序差异示意 在小端处理器上,变量c h a r v a l 的值为0 x 7 8 ,但在一个使用大端的处 理器上,c h a r v a l 的值为o x l 2 ,要确保以上代码平台无关,需要修改最后一行。 4 数据类型转换: 对于部分数据类型的转换,例如将一个s t r i n g 转换为一个l o n g 型变量, 或是将一个f l o a t 型值转换为一个整型变量等,在不同的平台上操作结 果是不一样的。当微处理器将一个浮点型变量转换为一个整型时,系 统将丢弃其浮点部分,并且,如果该浮点数的整型部分不能表示成一 个整数,该行为将没有定义( 后果不能预知) 。 第二章跨平台o c r 引擎的设计原则与分析方法 i n tm a i n ( i n ta r g c ,c o n s tc h a r 掌a r g v ) d o u b l ea ; i n t x ; a = 5 0 0 0 0 0 0 0 幸6 7 0 9 0 0 0 5 o ra n yr e a l l yb i gv a l u e x 2 a ; p r i n t f ( ”x = 0 8 x ”,x ) ; r e t u r no ; ) 图2 - 9 :平台相关操作示意图:不同平台上x 结果不一致 图2 - 9 展示了相应的平台相关代码:在p o w e r p c 微处理器上,变量x 的值 为0 x 7 f f f t 精或i n t m a x ,但在x 8 6 微处理器上,x 的值将是0 x 8 0 0 0 0 0 0 0 或 i n t m i n 5 数据类型: 不同平台对基本数据类型的定义也各有千秋。因为在最初实现各个操 作系统的时候,设计者们并没有规定操作系统的各种基本数据类型及 其长度,以至于后来在各个系统上出现了各种数据模型。常见的数据 模型为l p 3 2 ,i l p 3 2 ,l p 6 4 ,i l p 6 4 。 每一种模型命名的规则如下: 数据模型名以字母开头,每一个字母代表一种数据类型。 数据模型名以数字结尾,该数字必须为2 的n 次乘方。 模型名中的数字代表之前的每个字母所代表的数据类型的长度( 单位为 b i t ) 例如:l p 3 2 代表在该数据模型中l o n g , p o i n t e r 类型的长度为3 2 位,又 如i l p 6 4 表示i n t , l o n g , p o i n t e r 长度为6 4 位。以下是i l p 3 2 和l p 6 4 的各 种数据类型的信息【1 9 】: 第二章跨平台o c r 引擎的设计琢则与分析方法 l o n g jni 1 j 7 ( ” 】 t 。一j 一:。“o ne 。:e - e 0 n:一0 4 n 54 0 p e l d m n 。一。 一o os l 。 e ner s 。j1 1 e n l “s f i :。1 : 4。jj 【- 1 图2 - 1 0zi l p 3 2 l p 6 4 数据模型对比 最常见的数据模型为i l p 3 2 ,所以很多开发人员模型队下等式恒成立; s i z e o f 田q 1 ) - - s i z e o f 皿o n g ) - - s i z e o f ( p o i n t e r ) 但由上袁可以看出,以上等式在其它非1 l p 3 2 数据模型的环境中将失效。 如果在系统设计时没有充分考虑到数据模型之6 j 的差异,那么系统的扩展性将 受到极大的限制。 6 基本敷据类型算法差异: 在不同的平台上,处理基本数据运算的算法也存在一定差异。例如:在 x 8 6 平台上执行了一条整型数除零操作后,程序将出错:但如果在 p o w e r p c 上执行相同的操作,程序将返回零并继续执行( 对于浮点数 运算,其行为在两个平台上都会整型树操作一致) 。又如:浮点数的 比较也是平台相关的,比较操作是否有效受到很多因素的限制包括 蛐 蚺 蚺 蛳 悱 蛳 帅 帅 黼 啡 帆 船 蛔 m

温馨提示

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

评论

0/150

提交评论