Skip to content

项目介绍

xiaomaoaichiyu edited this page Jun 3, 2020 · 5 revisions

项目

基于OCR识别的表单处理工具

本项目是基于微软的Fott工具,进行表单处理的一个工具,具备表单识别和表单生成两个主要的功能。

微软原项目地址

原项目的主要功能是

  • 标注表单
  • 训练识别模型
  • 使用训练好的模型处理表单

这样做的原因有这样几点:

  • 通用的表单识别工具一般是对表单进行整体识别,为了使用识别后的数据,往往需要人工处理噪声数据
  • 表单作为被识别的对象,其数据具有一定的独特性————用户往往只关心其中的某些字段,而不是整个表单
  • 表单的识别和OCR识别是有一定的差距的,不完全一致

注意到这里有训练这一过程,看起来不是一个便捷的工具应该有的,会使用户感受到操作不便。 因此,我们的开发,主要是针对这一点做出改变!

  1. 训练需要数据,而真实情况中数据往往是隐私的,难以获得的,因此数据很大程度上决定训练的结果。 我们一个主要功能就是生成表单数据,根据用户提供的模板和标注信息来大量生成表单。

    这一功能主要是针对科研工作者的需求。

  2. 上面提到了训练过程,用户需要对训练的每一个表单进行标注以良好的训练模型,我们认为这对于用户是不友好的设计,因此在这方面做了较大的修改和补充,实现了两种崭新的训练方式,大大简化用户的工作。

    项目到了这个阶段,用户已经可以扩大到学生以及职场人士,如果有大量的表单需要处理,只需要简单的训练过程,就可以使用,后续处理大量的表单

  3. 将模型的预测做成批量预测,以及提供预测结果数据的整理和可视化处理

    这个功能也是为了大量表单的用户服务,批量预测可以减轻用户的使用负担,对结果的整理方便导出使用,结果可视化使得数据特征更清晰可见,方便用户从多个维度了解数据。

功能

表单识别

1. 用户上传空白模板

用户需要上传一个pdf模板,并且标自己需要训练的数据位置和属性; 工具会在后台自动生成训练数据并且训练,之后用户只需要上传待预测文档使用即可!

2. 用户上传5个有数据的表单

用户需要上传至少5个填好数据的pdf文档,不需要进行任何标注工作,后端会自动比较和解析数据,生成训练数据并且训练模型, 之后用户只需要上传待预测文档使用即可!

表单生成

用户只需要上传一个需要生成的pdf文件模板,并且标明自己需要的数据位置和属性,就可以生成所需的表单。

我们对数据生成的位置做了一定程度的扰动,使得生成的数据更加真实。

目前后端数据库主要针对美国,但是通过更换数据库可以支持各个国家的表单信息生成。

后端

关键问题

本项目需要通过对PDF进行批量化生产,从而满足微软表单识别工具的训练需求。在训练阶段,是需要调用微软API对表单中用户所填写内容进行识别,并输出为相关数据的json,才可以开始训练。但识别表单的API有较大限制,比如会将表单内所有字全部识别、将本应属于同一字段的文本识别成不同字段(因为空隙较大或换行)等。所以就需要对识别出的多个json进行错误处理之后,再训练微软表单识别工具。

主要算法

由于训练数据通常以五个为一组,所以本算法的输入数据为不同数据填写的同一表单的json。根据先验知识,可以知道表单本身内容一定会被识别为完全一样的字段,所以通过对比多个json相同的字段,可以直接对本部分冗余内容进行去除。

其次是对字段的拼接,在json数据中,包含字段内容有文本的bounding box,所以可以比较轻易的获知文本的字体大小以及在pdf中的位置。根据这个思路,可以首先通过对比两个文本的相对位置,再对比两者字体大小,进行相关内容的拼接(这里假设不同字段的内容距离较远或字体差距较大,事实也是如此)。

但由于不同字体下被微软API识别出的bounding box有较大偏差,本算法在某些字段会出现拼接失败的问题。

实例

pdf1

drawing

json1

drawing
drawing

pdf2

drawing

json2

drawing
drawing

从json和各自的pdf对比知道,对于用户填写的内容,可能会被分成不同的部分,而对于表格中本来就存在的内容,一定会被识别为相同。所以根据这一特点,使用上述算法,得到如下结果。

drawing

可以看到,第一个pdf中的地址内容被成功拼接,并且在查看json内容时,发现表格中原本存在的内容已经被删除,但由于不便展示,所以在此仅进行说明

微软认知服务

后端使用了微软的实体识别服务,用来识别字段中的实体,来构造用来训练的 {key: value} 。 我们主要使用了Azure.CognitiveServices.TextAnalytics的Named Entity Recognition (NER), 参考文档:

使用方法介绍

因为Azure账户需要使用Visa卡才可以注册,为了方便用户使用,我们在后端统一进行管理,前端使用时不需要注册,开箱即用!轻松简单!

支持三个模式

  • 原项目模式

移步官方文档

  • 空白模板模式

移步alpha阶段说明文档

  • 实体识别模式

实体识别模式说明文档

视频和文档链接