表格解析发展至今,仍然是一项很年轻的研究领域,出现了大量解决方案,常用的技术包括:线检测、box检测、分割、多模态融合、GCN、img2seq。以下按我的理解梳理一下表格解析各个流派,从中了解这项任务背后所采用的技术。在实际生产中,往往需要根据场景定制化多个模型进行堆叠以达到预期效果。
注意:以下的流派是按个人理解划分。
可以参考在pubtabnet数据集上的排名情况,目前tablemaster排名第一(2023.01)
https://paperswithcode.com/sota/table-recognition-on-pubtabnet
目录
2021 SEM(icdar2021综合第三名,复杂表格第一名)未开源
2021 TableMASTER(平安产险,icdar21top3,好未来表格大赛第一名)开源
2021.8.3RARE(百度paddlepaddle) 开源
2021 Maskrcnn+img2seq(好未来,icdar21top6)
Team: Kaen Context, Kakao Enterprise(韩国)
流派一:精确定位行列(线定位、行列定位)
2017 DeepDeSRT
《DeepDeSRT:Deep Learning for Detection and Structure Recognition of Tables in Document Images》
Faster RcNN+FCN对行列分割检测,由行列交叉确定表格结构
评价:类似腾讯UnetTable
2019 UnetTable (腾讯)
分割可见横线、可见竖线、不可见横线、不可见竖线。卷积核用1*5和5*1替代了常见的3*3。
评价:假设行列单元格文本宽高不一致时,不可见线分割效果并不好,对数据要求较高。现在主流的做法也是定位文本位置而不是行列间线位置。
复现腾讯表格识别解析| 鹅厂技术 - 腾讯云开发者社区-腾讯云
2019 TableNet
分割出表格的mask和列的mask
评价:显而易见,不适用于复杂表格、合并单元格。如果场景不复杂,用定位框的水平重叠占比也能获得整列的区域信息。但如果有倾斜、纸张变形或者两列的文本容易定位到同一个box的情况,列分割还是有意义的。
2019 DeepTabStR
《DeepTabStR: Deep Learning based Table Structure Recognition》
Deepstr(见上)+变形卷积
table-ocr/ table-detect
代码:https://github.com/chineseocr/table-ocr
GitHub - Rid7/Table-OCR: Recognize tables from images and restore them into word.
u-net提取线
流派二:分割到最小粒度再合并
2019 SPLERGE(庖丁)开源
《Deep Splitting and Merging for Table Structure Decomposition》
代码:GitHub - CharlesWu123/SPLERGE: Deep Splitting and Merging for Table Structure Decompositionj
解读:
[表格识别论文解读]Deep Splitting and Merging for Table Structure Decomposition - 简书
Splurge=split+merge
Split网络切分最细粒度单元格,预测横线和竖线的位置
Merge网络将split结果进行合并,输出是2个2维的矩阵,表示相邻的最小单元是否要合并,2个分别是表示上下是否要合并及左右是否要合并。
Projection pooling 替代n*n池化,提取行列的分隔信息
可处理无线表,假定表格横平竖直,适合不弯曲的场景。提出了投影池化(Projection Pooling)操作,它的输出实际上就是求取每一行或列的平均特征值,用于将每一行或列的整体特征整合到原先的局部特征上。模型预测每一行或列像素是否属于单元格间的分隔符区域。
2021 SEM(icdar2021综合第三名,复杂表格第一名)未开源
Split, embed and merge: An accurate table structure recognizer
Sem类似splerge思想,先得到最细粒度的单元格,再进行合并
Split分割出整行整列的分隔符获取网格化表格
ROIAlign+BERT获取每个网格的图像+语义特性
GRU预测merge关系进行合并
评价:用了多模态信息,最小粒度再合并
2022 TSRFormer: Table Structure Recognition with Transformers 微软 未开源
这篇文章将现有表格识别方法分为3类:
编码-解码范式:如tablemaster转HTML语音。缺点:需要的训练数据量比其他大,研发成本高,密集型大表格精度低
自底向上范式:从单元格或文本行出发,预测是否同行、同列、同单元格。 缺点:难以处理包含大量空白单元格或空行空列的表格
拆分-合并范式:先由拆分模块预测出所有行、列的表格分割线,求交点后,生成 N x M 个单元格,再由合并模块预测相邻单元格是否需要合并从而恢复出跨多行、多列的单元格。庖丁的SPLERGE及微软的TSRFormer都属于这种。
用回归的方法(从多个点来回归线)替代以往分割的方法来预测分割线,提出了一套新的基于两阶段 DETR[4] 的分割线回归算法:SepRETR。如图4所示,在第一阶段中,SepRETR 先用参考点预测模块,为每一条表格分割线预测出一个参考点(reference point);在第二阶段,由这些参考点的视觉以及空间信息组成的特征向量集合作为查询特征(query)输入进一个解码器(Transformer decoder)来回归对应的完整分割线。
TSRFormer 先由拆分模块预测出所有行、列的表格分割线,求交点后,生成 N x M 个单元格,再由合并模块预测相邻单元格是否需要合并从而恢复出跨多行、多列的单元格。
RobusTabNet
2022 TRUST: An Accurate and End-to-End Table structure Recognizer Using Splitting-based Transformers
基于transformer进行query,拆分模块预测多方向的行列分隔符,获取基准网格。基于顶点的合并模块合并相邻basic grids。
摘要中提到现有方法对倾斜表格风格线处理不好,这个方法的多方向分隔符可能是应对倾斜的?
流派三:单元格回归
(流派1+3):2020 CascadeTabNet 开源
code: https://github.com/DevashishPrasad/CascadeTabNet
端到端方法,带分类的检测,同时检测有线表及无线表,两者不同处理流程
有线表:基于膨胀腐蚀检测线
无线表:检测单元格内文本框
评价:分情况处理,有线表线检测,无线表单元格位置
2021 LGPMA(海康,icdar21top1) 开源
https://github.com/hikopensource/DAVAR-Lab-OCR/tree/main/demo/table_recognition/lgpma
LGPMA=LPMA+GPMA
局部单元格粒度LPMA:分割单元格文本区域、水平对齐、垂直对齐
全局整张图像粒度GPMA:单元格区域和非单元格区域的二分类mask、全局学习整张图上的非空单元格的水平和垂直对齐的soft mask
HRNet-W48 Cascade Mask RCNN
多尺度集成
3*2=6头多任务学习
评价:分别学习了文本和单元格的6头信息,大量分割网络叠加
2021 Cycle-CenterNet(腾讯)
双分支:中心点及顶点检测+中心点和顶点配对,配对中又有中心点到顶点及顶点到中心点2个分支。
设计了一种特殊的pairing loss
“我们的模型输出一个2通道的关键点热力图和一个2通道的offset热力图。cycle-pairing模块输出两个8通道的热力图,用来学习中心点和角点之间的相互回归的关系”
评价:关键点检测及匹配
【ICCV2021】户外场景图像表格解析-Parsing Table Structures in the Wild_CV小蜗牛的博客-CSDN博客
2021 CDeCNet (好未来表格大赛第二名)开源
dewarp+cascade Mask R-CNN+可变形卷积+dbnet
分别分割出表格体和单元格,规则排序单元格,求跨行跨列属性,dbnet检测文本。好未来有个ppt介绍好未来表格识别技术挑战赛,有具体方案介绍
流派四:GCN
2020 GFTE 开源
GFTE:Graph-based Financial Table Extraction基于图的金融表格提取
技术介绍:GFTE:Graph-based Financial Table Extraction_bigdreamerxz的博客-CSDN博客
GFTE:Graph-based Financial Table Extraction | 码农家园
代码
https://github.com/Irene323/GFTE
注意: 虽然下文详细介绍了这个算法,但实际测试效果不佳,可跳过这部分
流程为:
a)获取多模态特征,包括图像、文本、坐标。
基于ocr获取文字的切片,从而获得文本及坐标信息。对整张图像进行卷积,使用F.grid_sample函数在每个切片的中心进行图像特征采样。
坐标信息:归一化坐标、中心点、宽高作为节点坐标特征。节点坐标特征及潜在边位置信息输入2层图卷积,cat后经过线性层
文本信息:文本信息通过词表编码,经过nn.embedding后输入GRU模块,作为节点文本特征。节点文本特征及潜在边位置信息输入2层图卷积,cat后经过线性层
图像信息:3层Conv2d网络获得图像整体特征,单元格中心点采样作为图像特征。节点文本特征及潜在边位置信息输入2层图卷积,cat后经过线性层
b)使用torch_geometric.transforms.KNNGraph函数进行KNN,获得每个节点最邻近的N个节点,从而减少这些节点之间的潜在边,降低计算复杂度。
c)聚合潜在边两端节点的多模态特征,作为边的特征,对这些边进行分类,判断同行、同列、无关。这个算法预测的是同行同列,不是最邻近的节点。同行同列可以分开训练模型。
定位和文本信息有用,图像微乎其微。个人理解是从32*32的图像特征中采样一个中心点特征作为图像特征,包含信息太少了,用整个区域的均值用处可能还大一点,用kernel加粗的线条也没用到。
torch_geometric.transforms.KNNGraph介绍
torch-geometric:torch_cluster库knn_graph函数详解_噢啦啦耶的博客-CSDN博客
knn获得的边默认邻居节点位置在前,可使用cosine计算节点距离
缺陷:
1、Knn限制,列间距大的可能不在top中,水平关系检测能力弱于垂直关系检测
2、线信息基本没用上
3、检测的是同行、同列关系,不是邻接关系,还需要后处理筛选
4、从同行、同列关系反推结构复杂
5、准确率很一般,只有90%,非常规整的表格也检测错误,90%只是针对同行同列判断
复现用了开源代码和数据集后,效果不理想,最奇怪的是经过图卷积后,得到了N维完全一致的数据,N为cell数量。
网上另一个的疑问
“经过对GFTE代码的复现之后,通过GCN进行训练,发现每次训练几乎所有预测都集中在最多分类的边上,比如预测为0的边有10000条,预测为1的边有300条,那么预测值就都是0,这导致了看起来准确率很高,但是完全不可用的情况。”
评价:GCN学习单元格同行同列关系,开源代码效果不好,只能获得局部连接信息,knn下行关系容易丢失
TIES 开源
《Rethinking Table Recognitionusing Graph Neural Networks》
基于GCN预测单元格邻接关系(同行、同列、同单元格),采用蒙特卡洛采样
评价:GCN学习邻接关系,同GFTE类似
2020 TabStructNet 开源
GitHub - gds101054108/TabStructNet
Tabstructnet=Maskrcnn+GCN(TIES)
Maskrcnn自顶向下单元格检测
GCN自底向上获取单元格之间的行列关系矩阵(行邻接矩阵+列邻接矩阵),从而得到始末行列信息
评价:单元格检测+GCN学习单元格关系矩阵
2021 TGRNet 开源
https://github.com/xuewenyuan/TGRNet
TGRNet=语义分割+GCN
分割得到单元格区域,得到空间坐标。基于图像和坐标特征构建图,通过2路GCN来分别学习行列特征进行序列分类,得到逻辑坐标(第几行,第几列的意思?)
评价:单元格检测+GCN学习逻辑坐标
2022 Neural Collaborative Graph Machines for Table Structure Recognition(腾讯优图 ,2023.03 PubTabNet第四)未开源
https://blog.csdn.net/bevison/article/details/123492560
图神经网络+多模态
“提出了一种新的神经协作图模型(NCGM),该模型由若干堆叠的协作模块组成,以层级的方式交替提取模态内和模态间的关系交互。”
流派五:img2seq图片描述+单元格回归
2021 TableMASTER(平安产险,icdar21top3,好未来表格大赛第一名)开源
介绍:重磅开源!平安产险提出TableMASTER:表格识别大师 - 腾讯云开发者社区-腾讯云
论文解读丨表格识别模型TableMaster - 华为云开发者联盟 - 博客园
采用多任务学习的模式,同时进行表格结构序列预测img2seq以及单元格位置回归box regression,最后通过后处理匹配算法,融合表格结构序列和单元格文本内容。
统计数据集后将模型最大输出序列长度定为500(预测的单元格数量远小于500),并设计了39+2(开始符、结束符)个类别标签。
表格结构识别+单元格回归:基于master识别算法改进的双流结构,“为了使表格序列预测的长度与回归单元格的数目对齐,在训练时会把单元格位置回归分支中非单元格的地方Mask掉,不算入bbox回归损失。”
文本定位:PSENET
文本识别:master
Cell聚合方式:Center Point Rule,IOU Rule,以及Distance Rule。
评价:整体表格描述+单元格位置,和百度的做法基本一致,区别在于1)rare用了GRU,tableMASTER用了Transformer 2)双分支结构细节差别
2021.8.3RARE(百度paddlepaddle) 开源
GitHub Star 13.9k,顶级项目全新开源表格识别算法_风度78的博客-CSDN博客
基于yolov2检测技术对文档图片中的文本、表格、图片、标题与列表区域进行分类(即版面分析)。同时还可以利用RARE图像描述技术进行表格识别,完整地提取表格结构信息,使得表格图片变为可编辑的 Excel 文件。具体结构看我的另一篇单独介绍rare的文章。
Rare最早是做ocr的,和平安tablemaster的master最早做ocr异曲同工
评价:整体表格描述+单元格位置
2022 SLANet (Structure Location Alignment Network) 百度开源
一键PDF转Word,PP-Structurev2文档分析模型深度解读!
PP中作为TableRec-RARE的升级版,用了双塔结构CSP-PAN(基于PAN进行改进)。TableRec-RARE取特征金字塔最高层C5作为解码模块的输入,获得单元格和结构信息。
模型大小及准确率如下,在百度对外的数据上,SLANet优于TableRec-RARE,弱于TableMaster,但是模型大小很小
2024.07 SLANet-LCNetV2
2024.10 SLANet-Plus
2021 Maskrcnn+img2seq(好未来,icdar21top6)
分成分割和图片描述2个方案,然后用一套规则,选取最好的结果
Maskrcnn:五个基于Mask RCNN的检测模型,分别检测表头/表体检测,表格行检测,表格列检测,单元格检测,文本行检测。用了不同的优化器。
Img2seq: 按照文本检测的结果来对每个单元格中的内容进行编号,然后采用CNN对图像进行编码,采用transformer来解码得到表格结构。之后将相应的文本行识别的内容填进去。
评价:5头分割+1种比较特殊的img2seq。有点海康+图片描述2条线走的意思。
2022 小米 未开源
小米表格识别技术官方解读,支持智能提取图片中的表格__财经头条
表格检测:同时检测表格区域和4个角点,通过透视变换和抗扭曲算法获取平整表格
表格结构识别: HTML 的超文本,认为平安和百度的方法标签过多,换了一种编码方法,将表格定义为 M*N 个单元格组成的矩阵,只要4个标签。“0”:代表普通的单元格、“1”:代表向左合并单元格、“2”:表示向上合并单元格;并且每个单元格对应一个坐标框,以便后续把 OCR 识别的结果与之匹配。这样定义的优点:无人为语法规则;数据组织具有天然的二维对齐属性,网络更不容易产生漂移;少量标签可以还原出任意表格结构,无开放集分类问题。
文章里说的是4个标签,给的M*N 个单元格组成的矩阵只有0、1、2,推测还有一个是换行标签。
流派六:端到端
Team: Kaen Context, Kakao Enterprise(韩国)
12层只有解码的线性transformer,输出是HTML序列
将原始输入图像展开成(N,8*8*3)的序列,将图像进行线性映射为512维,目标HTML进行embedding为512维度。将两个512维度的信息拼接起来,并用位置编码进行区分,得到一个‘图像-文本序列’
Inference: The outputs of our model are sampled with beam search (beam=32).
评价:怪怪的,前面像vit,训练输入是图像文本,推理输入是啥。未出现在最终的排名榜上,但出现在了icdar的paper里,资料很少,属于比较稀有的一种方案。
其他未分类
有篇综述提到了一些近几年的其他方法,表格识别技术综述_CharlesWu123的博客-CSDN博客_表格识别算法
这篇文章还例举了以下方法:
A Genetic-based Search for Adaptive Table Recognition in Spreadsheets 2019
将单元格分类为不同标签,包括Header、Data和Metadata,然后用遗传算法预测结构
ReS2TIM: Reconstruct SyntacticStructures from Table Images
单元格检测定位后进行表格重建,关系判别网络判断任意2个单元格的上下相邻、左右相邻关系。基于相邻关系构建出对应的图模型
Rethinking Semantic Segmentationfor Table Structure Recognition in Documents
基于FCN进行语义分割对行和列预测,不能处理跨行跨列
TableStructure Extraction with Bi-directional Gated Recurrent Unit Networks
将预处理结果按像素行或列放入独立的两个两层双向循环神经网络,输出为是否为行列分隔符区域,将预测分隔区域的中点作为最终的行列分割结果
2021 FLAG-Net(Show, Read and Reason: Table Structure Recognition with Flexible Context Aggregator) 腾讯优图
ACM MM2021 | 腾讯优图实验室9篇论文入选,含弱监督图像描述及定位、表格结构识别等研究方向..._我爱计算机视觉的博客-CSDN博客
将Transformer与基于图的上下文累积器以一种自适应的方式结合在一起。FLAG (FLexible context AGgregator) 模块进行行列单元格关系推理
PubTables-1M: Towards comprehensive table extraction from unstructured documents20
TableFormer: Table Structure Understanding with Transformers
数据集
Marmot、UW3、UNLY、ICDAR 2013、ICDAR 2019、PubTabNet、SciTSR(标注质量较差)、TableBank、FinTab
PubTabNet数据集
包含500k训练数据+9k验证数据,有10G。
下载地址 https://dax-cdn.cdn.appdomain.cloud/dax-pubtabnet/2.0.0/pubtabnet.tar.gz
好未来表格识别竞赛数据集
下载地址:好未来AI开放平台-数据集
大厂技术
百度:表格文字识别,文本全字段识别,快速响应,免费试用-百度AI开放平台
腾讯:文字识别 OCR_ 图片文字识别_图片文字智能识别-腾讯云。
阿里:读光
赛事
Icdar2021比赛排名
ICDAR 2021 Competition on Scientific Literature Parsing
Team Name | TEDS Simple | TEDS Complex | TEDS all |
Davar-Lab-OCR VCGroup DBJ PaodingAI anyone LTIAYN | 97.88 97.90 97.60 97.38 97.39 97.30 97.35 96.95 97.18 | 94.78 94.68 94.89 94.79 93.87 93.93 93.79 93.43 92.40 | 96.36 96.32 96.27 96.11 95.66 95.65 95.61 95.23 94.84 |
Davar-Lab-OCR团队,来自海康,
VCGroup团队,来自平安,
TAL团队,来自好未来
PaodingAI团队,来自庖丁
百度RARE在代码库中提供的PubTabNet数据集用TEDS评分,得分93.32
好未来表格识别大赛
第一名:tablemaster
第二名:CDeCNet
第三名:ResNext分割表格线及单元格+单元格关系分类(同行左邻、同行右邻、同列左邻、同列右邻)+yolov5s进行单元格分类(插图、手写、空白)+Faster Rcnn检测插图
评估方法:TEDS树距离
Tree edit distance: Robust and memory-efficient. Infor-mation Systems ,2016年
插入和删除成本为1。用节点ns替代no时,如果两个节点有一个不是td,成本为1;如果都是td,但行列范围不一致,即指向的区域不一致时,成本为1;否则成本为归一化的 Levenshtein 相似度。下式分母||为求叶子结点数量操作。