版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
表格识别系统的实现和测试分析案例目录TOC\o"1-3"\h\u2757表格识别系统的实现和测试分析案例 1163471.1开发环境和工具 114991.2系统实现 2211841.2.1后端实现 2254271.2.2前端实现 540971.2.3针对性优化 11251411.3系统测试 14185751.3.1功能测试 1434691.3.2性能测试 151.1开发环境和工具本文系统均基于Windows1064位环境开发,Web后端应用使用Java开发,Web前端应用使用JavaScript开发,表格识别算法基于Python实现。硬、软件环境如表4-1和表4-2所示。表4-1系统硬件环境型号CPUIntel(R)Core(TM)i5-7300HQGPUNVIDIAGeForceGTX1050TiRAM16GB表4-2系统软件环境开发工具主要依赖Web前端应用IntelliJIDEAUltimate2021.3.1Vue3.2.33Node.jsv16.11.2ElementPlus1.0.2Axios0.18.1Web后端应用IntelliJIDEAUltimate2021.3.1DataGrip2022.1.1OracleOpenJDK1.8.0_311Maven3.8.1SpringBboot2.1.1Mybatis2.1.4ApachePOI5.2.2MySQL5.7.36表格识别算法PyCharmProfessional2021.3.1Anaconda1.11.0python3.6.13keras2.2.0tensorflow-gpu1.9.0opencv-python41.2系统实现1.2.1后端实现(1)架构实现表格文本识别系统后端服务的代码结构如图4-1所示。图4-1后端服务的代码结构图三层架构中的控制层、业务层、数据访问层分别对应包controller、service、mapper。控制层实现了FileController和TaskController两个类,使用@RestController注解将Controller返回的对象数据直接以JSON形式写入HTTP响应,使用@PostMapping、@GetMapping等注解配置路由,再结合@PathVariable、@RequestParam等注解解析请求参数,从而实现RESTfulAPI。业务层实现了两个接口FileService、TaskService及其实现类FileServiceImpl和TaskServiceImpl,还有一个表格文本识别服务类RecognitionService,这些类中的方法实现了具体的业务逻辑。数据访问层实现了两个接口FileMapper和TaskMapper,这两个接口中的方法以@Insert、@Update、@Select等注解的形式完成了对实体的增删改查等操作,同时在SpringBoot启动类上添加@MapperScan注解使框架自动生成mapper中接口的实现类。另外在resources/mappers目录下的xml文件中定义了MySQL查询结果集到实体类的字段映射resultMap,解决实体类中属性和数据库字段名不一致的映射问题。控制层对象有着对应业务层接口类型的私有成员,通过@Autowired注解自动装配,再通过私有成员的对应方法实现控制层对业务层的调用,业务层到数据访问层同理。(2)功能实现1.上传图片功能POST{Host}/files/接口中使用multipart/form-data的Content-Type来传输图片,后端服务接收到请求后使用Spring中的MultipartFile类接收文件,使用Java标准库中的UUID模块生成随机的UUID,使用该ID作为文件名将该文件存储至配置好的文件系统路径中,防止用户上传的图片名称相同导致文件保存失败。同时新建File实体对象,通过数据访问层保存文件的文件名、原文件名、类型等信息。2.下载功能后端收到下载的请求后,根据请求中的文件ID查询File表得到对应的文件名,使用Spring的UrlResource类将文件从接口中返回,同时指定返回的Content-Disposition为attachment。3.表格识别功能在业务层中实现了一个RecognitionService类,该类中有一个带缓存的线程池CachedThreadPool成员,通过调用该类的doRecognition方法提交一个RecognizeTable对象至线程池执行。RecognizeTable类重写了run方法,该方法中使用Java的Runtime.getRuntime().exec指定Anaconda环境的Python解释器执行实现了第二章中表格识别算法的Python程序,Python程序根据命令行参数传入的图片路径进行表格识别,返回表格的JSON结构表达。得到JSON字符串之后,通过Jackson库解析,再使用ApachePOI的API创建Excel文件还原表格结构,并保存至文件系统中创建File表记录,最后更新对应的识别任务状态为已完成。识别任务管理功能:通过{Host}/tasks路径下的一系列接口,通过对Task表的增删改查等操作实现表格识别任务的创建、查询、批量查询、修改等功能。后端收到修改识别结果的请求后,将保存前端传递的修改结果,并据此生成新的Excel文件,更新任务状态至已修改。1.跨域问题解决跨域问题指的是由于浏览器同源策略(SameOriginPolicy)的限制,一个域的JavaScript脚本访问相同的域,即相同协议、主机、端口号。在前后端分离的架构下,前后端应用的域往往是不同的,如本文中表格文本识别系统的前端服务端口为8080,后端服务端口为8081,存在跨域问题导致前端使用Ajax请求访问后端接口被浏览器禁止,因此需要解决跨域问题。本文采用跨域资源共享(Cross-OriginResourceSharing,CORS)机制,通过HTTP头部字段Access-Control-Allow-Origin声明资源的访问权限。具体实现为在后端服务中创建了WebMvcConfigurer接口的实现类CrosConfig并重写其addCorsMappings方法。(3)接口实现按照3.2.3节的接口设计实现了后端接口,除了下载接口外其他接口的返回类型均为Content-Type:application/json,接口示例如表4-3所示。表4-3后端接口示例接口参数位置/格式参数名返回示例POST{Host}/tasks/Body/x-www-form-urlencodedimage_id{"id":44,"imageId":80,……"status":0}GET{Host}/tasks/{id}Pathid同第一行GET{Host}/tasks/?Querylimitoffset{"taskList":[{"id":43,……"status":1}]}PATCH{Host}/tasks/{id}Body/x-www-form-urlencodedjson_str同第一行GET{Host}/files/{id}PathidContent-Disposition:attachment;filename="xxx.jpg"返回的是文件的二级制流POST{Host}/tasks/Body/form-datafile{"id":81,"fileName":"xxx.jpg",……}1.2.2前端实现Web前端应用代码结构如图4-2所示,实现的是一个单页面应用,实际上只有App.vue页面,基于vue-router实现路由,页面的跳转实际上是<router-view>标签内容的切换。基于axios网络请求库使用Ajax请求后端接口,得到JOSN格式的数据后进行解析和展示。图4-2前端应用代码结构图前端应用共有三个页面,首页如图4-3所示。首页使用el-table组件实现表格识别任务的列表展示,展示了任务ID、图片名称、创建时间、完成时间、任务状态等任务基本信息。图4-3表格文本识别系统首页根据任务状态,操作列会展示不同的操作按钮,所有状态任务均可以点击查看任务详情,只有识别完成或已修改的任务可以点击下载Excel文件和复制JSON。点击下载示例表格图2-2生成的Excel文件,如图4-4所示,可见表格识别系统可以正确还原了单元格结构并生成对应的工作表文件,但是也存在字符识别错误、缺失的情况、可以通过编辑功能修改。图4-4点击下载文件功能示例考虑到识别大量表格图片的场景,列表支持翻页查看,可以调整每页展示行数、前后翻页以及跳转页码。同时可以点击选中列表行,批量选择要下载工作表文件的识别任务,只有识别完成或已修改的任务是可选的,其他状态的任务不可选择。右上角的下载按钮,在未选中前置为不可选,选中列表行后才可以点击批量下载,如图4-5所示。图4-5批量下载功能示例点击新建识别任务按钮,跳转至{Host}/createTask路由下的上传页面,如图4-4所示。可以通过拖拽文件或者点击选择文件上传,支持批量选择文件上传。上传成功后页面将提示成功,并展示已上传的文件列表,在此列表中可以点击删除已上传的文件,删除成功后提示成功,最后点击提交识别任务按钮即可对上传的图片创建表格识别任务进行识别,上传功能示例如图4-5所示。图4-4表格识别系统上传页图4-5批量上传功能示例在主页点击任务的详情按钮,即可跳转至/taskDetail?id={id}路径下的任务详情页,如图4-6所示。详情页除了下载Excel和复制JSON外,提供了识别结果的同屏对比及编辑功能,页面左半部分展示该任务的表格图片,右半部分展示格式化后的识别结果JSON,对于文字或表格结构识别的误差,可以通过编辑JSON来调整,点击提交修改按钮即可保存结果,同时重新生成工作表文件,功能示例如图4-7所示。图4-6识别任务详情页图4-7结果编辑功能示例1.2.3针对性优化在本系统的实际使用场景——高考考生的登记信息识别中,第二章中描述的表格文本识别算法并能覆盖所有的场景,如图4-8所示,存在这样的登记表和登记书不能识别。图4-8登记表及登记书示例登记表并不是普通的表格样式,一方面没有最外围的表格框线,不属于全框线表格,另一方面可以看成是由两个子表构成的,因此为了识别该登记表增加了额外的预处理和后处理工作。对于基本信息和专业志愿意向两部分可以看成是普通的简单全框线表格识别,分别得到结果。对于这两部分之外的信息,直接进行文字检测和文字识别,文字检测和文字识别模块会返回识别出的文字的矩形框在图中的位置信息,通过这些位置信息,相互确定位置关系,结合得到的基本信息和专业志愿意向的识别结果,使用额外的后处理将所有的信息还原至一张表中,最终可以得到如图4-9的识别结果。图4-9登记表样表及识别结果登记书不是表格,且存在大量文字,本系统需要识别的只占其中一小部分,如果直接进行文字检测和识别,后续处理比较复杂,本文采取的思路是先通过OpenCV的直线检测识别左侧考生信息在图片中的位置,再将这个区域单独拿出来进行文本检测和识别,通过文本的相对位置关系将图片转化为一个两列表格,识别结果如图4-10所示。图4-10登记书样例及识别结果另外,在创建识别任务页增加了两个按钮,指定识别登记书和登记表,以和常规的表格识别任务区分,如图4-11所示。图4-11改进的上传页面1.3系统测试本节测试使用的部分表格图片如图4-11所示,有表格截图及表格照片,文字有印刷体及手写体,包括数字、字母、汉字等。图4-11系统测试表格示例1.3.1功能测试采用黑盒测试技术对本文实现的表格文本识别系统进行测试,根据系统的功能需求设计测试用例,运行这些测试用例来寻找系统错误,测试用例结果如表4-4所示。表4-4表格文本识别系统测试用例及结果模块功能测试用例测试结果文件管理模块图片上传1.点击上传,在弹出的文件选择窗口中选择一个图片点击确定。2.拖曳一个文件至图片上传页面。1.通过2.通过图片批量上传1.点击上传,在弹出的文件选择窗口中选择一次多个图片再点击确定。2.多次拖曳一个文件至图片上传页面。1.通过2.通过文件下载点击下载Excel文件按钮。通过文件批量下载选择多个识别完成的任务后,再翻页选择多个任务,点击批量下载按钮。通过识别结果管理模块任务信息展示1.查看任务信息展示是否与数据库一致,任务状态流转是否正确。2.翻页功能,设置每页展示页数,进行前后翻页以及页数跳转。3.点击复制JSON可以正确复制至粘贴板,点击详情可以跳转至该任务对应的详情页。1.通过2.通过3.通过对比编辑功能1.页面正确显示该任务显示的表格图片以及识别的结果。2.编辑JSON后点击提交修改按钮,下载工作表文件,对比Excel中的表格结构与修改后的JSON是否一致1.通过2.通过表格结构识别1.普通全框线表格识别2.考生登记表识别3.考生登记书识别1.通过2.通过3.通过表格文本识别文本识别1.印刷体识别2.手写体识别1.通过2.识别效果受手写体影响较大Excel文件生成根据JSON结构正确生成Excel文件通过1.3.2性能测试表格文本识别系统的性能测试主要关注两个方面,一个是识别效率,另一个是识别准确率。识别效率方面,由于系统设计时采用了创建识别任务的机制,系统异步识别表格结构和文本,对于用户来说比较友好,因此对于识别时长没有比较严格的要求,选取15张测试表格,识别所耗费的时间如表4-5所示,平均耗时为5.3秒,可以满足实际应用的需求。表4-5系统识别时长测试结果图片大小单元格数量字符数量识别时间/ms948×53349645229948×53364696217948×533451706237948×533561036008948×533131
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年行测资料分析专项模拟题库及答案
- 初中八年级语文《三峡》探究式教学设计
- 2026考研运动人体科学预测试题与答案
- 2026年广告设计师五级考试(含答案解析)
- 餐饮服务规范语言课件
- 小学五年级劳动教育《谁是清洁小能手》实践教学设计
- 初中八年级物理《力与弹力》教学设计
- 人教版八年级物理下册《10.1 浮力》导学案教学设计
- 小学语文四年级下册《天窗》深度阅读与表达教学设计
- 小学三年级语文《孔融让梨》教学设计:从经典诵读到核心素养的深度拓展
- GB/T 46605-2025硫化橡胶或热塑性橡胶动态耐切割性能的测定
- 具身智能在工业自动化生产线上的场景应用研究报告
- DB51∕T 3122-2023 蜀绣 绣法技艺
- 瓦斯检查工岗位安全生产责任制
- 赣韶线铁路桥施工方案
- 中药煎药上岗培训课件
- 高校PI团队管理办法
- 设备采购类可行性研究报告
- 企业管理咨询顾问合作协议样本
- 初中写字课程-课件
- 海南盛亨美安混凝土搅拌站建设项目建设环境影响评估报告表
评论
0/150
提交评论