OCR在数据救治中的应用设计
优采云 发布时间: 2020-08-25 04:52OCR在数据救治中的应用设计
OCR是通过算法辨识出图象中的文字内容,算是图象辨识的一个分支。但是在数据管理救治上,也十分实用。本文作者对具体的实现途径展开了梳理总结,并对过程中存在的问题进行了剖析,与你们分享。
一、服务于业务:数据救治的疼点在哪?
大数据工程的第一步是获得数据,而传统行业、政府机构、科研院所中有大量的存量数据,数据救治就是把这种数据数字化,一是防止数据流失,二是提升借助价值。而存量数据中包括大量珍稀的纸质数据,比如天文地理水文检测数据、试验数据、政府公文、古旧书籍等等。
纸质数据怎么救治?这步很简单,基本解决方式就是先扫描成电子版进行储存。但光是扫描储存就够了吗?我认为是不够的。
像前面所说的,数据救治的目的一是防止数据流失,二是提升借助价值,扫描储存仅仅解决了第一个问题防止数据流失,但并没有挺好的增强数据的借助价值。纸质数据的价值大部分在于文档的内容,仅仅把纸质文档电子化一直不能对内容进行进一步的检索、分析。
所以我们把产品的目标聚焦在了“提高数据利用率”上。接下来就是对目标进行细化拆解。关于怎么提升利用率,也就是数据怎么应用,我是这样思索的,一是从大数据角度看,如何借助统计剖析等手段增强数据整体的价值;二是从单份文档角度方面看,如何使单份文档更有价值,让有兴趣的用户更容易找到它,让用户找到这份文档后能快速了解其内容。
通过上面的剖析,单份数据借助的方法基本确定为【全文检索】和【内容剖析】,而这两种借助方式都须要对纸质文档中的文字进一步进行处理,这就须要我们数据救治的好伙伴:OCR出场了。
二、功能设计1. 业务场景
小李所在的单位有大量多年积累出来的文书,有些年代久远的早已出现了损坏丢失的情况,借着大数据工程建设的抓手,单位决定举办历史数据救治工作。
工作的第一步就是整理文书文档,然后扫描电子化,每扫描完一份文件小李就在页面上预览确认没有问题后递交,之后系统对文档进行OCR识别,识别完成后小李在页面上可以预览查看辨识结果,发现位置辨识不准或则文字辨识有误可以进行调整,最后保存调整结果即可。
小李辛辛苦苦做完的工作彰显在哪儿呢?
同事小陈近来做的一项工作须要查阅以往数据A的相关记录,小陈登入系统直接搜索“数据A”,搜索结果显示了所以收录“数据A”的文档。小陈依次点击搜索结果就可以查看文档的摘要和关键词,从而判定该文档是否对他有用。
大概业务的流程就是右图这样,我们这篇主要介绍小李的工作部份。
2. 实现途径
(1)数据采集
数据采集主要依赖于扫描纸质文档的扫描仪,所以这一部分是一要考虑扫描仪本身的性能,二要考虑扫描仪与整个系统的集成。
考虑到纸质数据量大、装订形式多样的特性,扫描仪最好满足快速扫描、不拆书、尽量自动化的要求。调研了市面上成熟的商用扫描仪,符合要求的扫描仪大约有几类:
专门用于古籍扫描的全手动翻书扫描仪,就一个缺点,太贵(140-180w)需要手工翻页,但不用拆书的高速扫描仪,这类扫描仪选择比较多,成本也可以接受最后一种选择,非常有趣,是google books的开源手动扫描仪方案,需要自行组装,有兴趣的同学可以了解一下()
系统与扫描仪集成方面,就涉及到扫描好的文件如何储存到系统?大概有两种方案:
1)我们平常用的扫描仪,一般是联接笔记本(客户端),把扫描好的文件存在本地,然后由用户把文件自动上传系统
2)网络扫描仪直接通过局域网联接服务器,扫描好的文件直接储存在服务器指定位置。这种网路扫描仪的方案须要扫描仪支持TWAIN或则其他SDK、api,好处是多个用户可以共用扫描仪,操作步骤也要简化好多
结合扫描仪性能、系统集成和成本角度考虑,我们选择了一款支持TWAIN插口的自动翻页扫描仪作为数据救治系统中硬件支撑。
(2) OCR识别
首先我们须要对OCR的算法有个大约的了解,可以参考OCR在资产管理系统的应用。
用于数据救治的OCR和用于资产标签辨识的OCR还是有一点区别的,资产标签辨识中的辨识对象是【自然环境】中的【印刷文字】,而数据救治对象是【文档图片】中的【印刷文字】。
但总体来说处理的流程还是预处理-文字检查-文字辨识,只不过对纸质文档中复杂的排版(图片、表格、文字、页码、公式混排等等)的文字检查换了种说法称作版面剖析(layout analysis),做的事情还是差不多的,除了负责检查出文字的位置外,也要同时确图表等其他要素的位置。
1)预处理:
预处理的目的主要是提升图象质量,一般用传统的图象处理手段就可以完成,现在好多扫描仪也会把这部份做在里面,比如手动纠偏、去黑边等,如果可以满足要求,预处理部份置于数据采集时由扫描仪完成也是可以的。
2)版面剖析:
先看下直观的看下版面剖析的预期疗效。关于版面剖析这块我们须要确认的事情主要有3件:一是测量的目标有什么,二是目前算法的成熟度,三是性能方面的要求有什么。
确定测量对象:毕竟版面剖析是个测量问题,和测量图片中的狗猫没有本质区别,所以我们要先确定版面剖析须要辨识哪些东西。在数据救治中我们关心哪些呢?首先文字是最重要的,第二为了定位图片和表格,我们也须要图片、表格的位置以及图注、表名,有了这种信息就可以产生类似索引目录,方便查找。所以初步确定,版面辨识须要辨识出文字、图片、表格、图注、表名五类对象。
算法成熟度:虽然传统的图象辨识也可以实现简单的版面剖析任务,但对上图这些特别复杂的版面剖析经过督查比较靠谱的方式还是上深度学习。可以做版面剖析的深度学习算法主要是图象检查一系列的,比如yolo、fastRCNN,这篇文章中的大鳄是用MaskRCNN实现的。所以版面剖析问题早已有不少研究基础了,但实际落地的应用可能还不是好多,其中须要优化的工作肯定还有不少。
性能要求:算法的选择其实要考虑实际中对硬件性能、识别速率、识别精度、召回率的要求。
用在我们数据救治中,首先系统是采用B/S架构,在服务器完成辨识任务,所以没有特殊硬件要求(如果是在端上实现就要考虑硬件对算法限制了)。识别速率方面,目前考虑到一份纸质数据可能有成百上千页,所以辨识时间会比较长,所以暂定以后台任务的方法执行,这就对辨识速率方面要求也比较低(如果要求实时返回辨识结果通常辨识速率就要做到秒级)。识别精度和召回率的平衡方面,由于上面有人工校准调整的环节,所以还是可以适当提升召回率,即使辨识有所偏差也可以通过人工调整填补。
c)文字辨识:
文字辨识部份相对来说也比较成熟,目前两大主流技术是 CRNN OCR 和 attention OCR。在我们的整体流程中,需要对版面辨识后的文字、图注、表名区域进行分别辨识即可。
上边技术实现途径的督查主要为了证明我们设计的功能是在技术上可实现的,避免出现设计出难以实现的功能的难堪情况。
3. 功能流程
正如前面所说的,我们这儿的功能只关注纸质数据救治工作没有涉及到数据应用的部份,所以从扫描文件到最后人工调整OCR识别结果,整个纸质数据救治的功能即使完成了。对用户来说,相较于只扫描文件并保存,多出的操作步骤就是查看辨识结果并调整的部份。
4. 核心页面设计
(OCR识别结果查看)
(OCR识别结果调整)
OCR相关的两个页面主要是查看辨识结果和调整辨识结果。查看页面主要包括预览文档、用线框表示图表区域和图表标题、显示OCR文字辨识结果。点击【编辑】跳转到调整页面,调整页面以每页为单位显示,图表框可拖放调整、文字变为可编辑状态。
三、小结
通过需求剖析我们发觉在数据救治中的确存在OCR应用的必要性,然后从技术实现的角度进行督查验证需求是否是可实现的,最后梳理整个功能流程再加上每位功能点的详细说明/原型设计功能基本就齐活了~