表格识别是指将图片中的表格结构和文字信息识别成计算机可以理解的数据格式,在办公、商务、教育等场景中有着广泛的实用价值,也一直是文档分析研究中的热点问题。围绕这个问题,我们研发了一套表格识别算法,该算法高效准确地提取图片中的表格,转化为可编辑的 Excel 文件。目前算法已经成功落地于小米 10S 系列、MIX Fold 2 等旗舰机型,大家可以从相册-更多-表格识别,或者扫一扫进入体验。
一、背景
大多数人日常办公处理的文件,主要是表格和文档,其中表格的重要性毋庸置疑。在各行各业的桌面办公场景中,Excel 和 WPS 是电子表格的事实标准。我们经常遇到这种需求:将一个表格图片的内容导入 Excel。
以前我们只能对着图片一点点把内容录入 Excel,既低效又容易出错。近年来,随着技术的发展,OCR(光学字符识别)的可用性不断提升,用户可以借助 OCR 软件,从图片中自动提取文本信息。
然而对于表格场景,仅提取文字是不够的,用户还需反复手动复制粘贴以还原出电子表格,这仍会耗费大量时间。为此我们实现了一套表格图像提取方案,它能切实提升用户办公效率。图二是我们的识别效果展示:
图三展示的是我们目前算法的一个总体框架图,主要包含手机端的表格检测算法和服务端的表格识别算法。
表格检测算法主要是从图片中准确的提取表格区域,并对表格进行矫正,得到平整的表格图片以便下一步的表格识别;表格识别算法主要是从图片中提取表格结构和表格文字内容,然后将这些信息有效的结合在一起,输出可编辑的 Excel 表格。下文将详细介绍表格检测算法和表格识别算法。
三、表格检测算法
表格检测有以下难点:一方面是手机上的算法和内存有限,另一方面是对表格检测结果要求非常高,表格周围往往包含其他文字,如果检测结果不准,会对后面的识别结果造成负面影响。我们的表格检测算法会同时检测到表格区域和表格的四个角点,通过透视变换和我们自研的抗扭曲算法得到只有表格区域的平整表格,效果如图四所示。
表格检测算法框架如图五所示,由于算法运行在手机端,需要保证运行速度和模型大小,我们采用了一个非常轻便的一阶段检测框架,backbone 采用 shuffleNetV2;在检测出表格框的同时,回归出关键点信息,便于表格的透视矫正,并用 Wing loss 代替 L1 loss 让关键点回归更加准确;数据方面,用算法低成本地从公开数据中挖掘大量表格检测数据,显著性地提高表格检测效果。最终模型大小为 1M 左右,顺畅地运行在小米手机上。
四、表格识别算法
表格识别算法如图三所示,该算法在服务端运行,主要包含的模块有:文本检测、文本识别、表格结构预测、单元格匹配、对齐算法、Excel 导出。文本检测识别模块采用了我们之前已经上线的 OCR 服务,这里不再做重点介绍。下面将主要介绍表格结构预测算法和 Cell 坐标聚合算法。数据方面,由于表格数据标注困难,我们完成了一套表格渲染工具,可以合成各种样式的表格数据,极大地降低了标注成本。
表格样式多样,有线的表格、无线的表格、隔段横线表格等,并且表格中有非常多各种复杂的合并单元格出现;另外,图片含有阴影、光照、扭曲、变形等也增大了表格预测的难度。
表格结构预测前人有不少研究:
- 基于传统算法提取表格线,再由表格线推导行、列、合并单元格的信息;
- 基于目标检测,检测出单元格,再用后处理方法组织单元格还原表格结构;
- 基于语义分割,分割出表格线,然后对分割结果进行后处理还原表格结构;
以上算法有一个共同的问题,后处理复杂并且鲁棒性较差,通常需要针对特定表格的算法适配。
目前主流的方法是将表格用 HTML 的超文本表示,然后对 HTML 进行编码,预测 HTML 序列和对应的坐标信息
。该方法在开源数据集上取得了不错的效果,中国平安科技和百度也采用了这种方案,但是 HTML 的标签过多导致表格结构识别容易出错。针对该方法的不足,我们对表格采用全新的编码方式,仅用四个标签就能表示任意结构的表格,极大地提高了表格结构识别准确率。
如图六所示,将表格定义为 M*N 个单元格组成的矩阵,以及内部合并单元格组成。“0”:代表普通的单元格、“1”:代表向左合并单元格、“2”:表示向上合并单元格;并且每个单元格对应一个坐标框,以便后续把 OCR 识别的结果与之匹配。这样定义的优点:无人为语法规则;数据组织具有天然的二维对齐属性,网络更不容易产生漂移;少量标签可以还原出任意表格结构,无开放集分类问题。
我们采用了如图七所示的表格结构预测框架,该方法基于 cnn+transformer decoder 的图像到序列学习网络,在解码阶段包含两个预测头,分别预测表格序列和表格 Cell 的坐标信息。
表格结构效果如图八所示,表格结构识别算法预测出每个单元格的位置信息和每个位置对应的序列信息。图八左右两个图是一一对应的,同一种颜色的检测框对应右边 Cell 单元格,Cell 是有顺序的。
表格识别在部署过程中,采用 Fastertransformer 推理框架进行加速,我们的推理速度提升了大约 20 倍,明显改善用户体验。
Cell 坐标聚合算法主要是将文本检测到的内容与表格预测的单元格进行正确匹配,算法流程如图九所示。文本框与单元格框进行匹配,首先匹配 IOU 最大的,如果 IOU=0,则匹配两个框中心距最近的。如果一个单元格中包含多个文本框的结构,还要在单元格内按照阅读顺序输出,并实现智能换行从而改善用户体验。
最终我们的算法在表格结构提取和端到端表格还原的准确率上,均领先业界的主要竞品。
五、对齐算法
上述算法已经基本还原出表格信息,但是同一表格里单元格的对齐方式并不相同,可能同时存在“左对齐” “右对齐” “居中对齐”。我们设计了一套对齐算法,通过分析表格中单元格的位置信息实现自动对齐,完全还原出真实表格,明显改善用户体验。对齐算法效果如图十所示: