论文引用格式:Qiao L, Li Z S, Cheng Z Z and Li X. 2023. SCID : a Chinese characters invoice-scanned dataset in relevant to key information extraction derived of visually-rich document images. Journal of Image and Graphics, 28(08):2298-2313(引用格式:乔梁, 李再升, 程战战, 李玺. 2023. SCID:用于富含视觉信息文档图像中信息提取任务的扫描中文票据数据集. 中国图象图形学报, 28(08):2298-2313)[0 引 言文档是承载和传递文字信息的一种重要载体。在日常生活工作中,人们时刻在对文档中的一些关键信息进行获取和处理。随着智能化办公的普及,对于一些处理重复性高的文档类数据,也在探索使用先进的人工智能(artificial intelligence,AI)技术完成信息的高效提取,从而减少人力成本。从类型来看,文档可以大体分为两类,一类是包括PDF、Word、Excel、XML等的电子形式的文档,其中的文字信息可以直接由计算机识别或解析得到,因此信息抽取的任务主要集中在对于文字语义的处理;另一类是直接由一些视觉采集设备(相机、扫描仪等)获得的图像数据,这类数据除了需要满足前一类数据集的任务要求之外,还需要利用更多的视觉信息完成对于图像中文字或版式内容的提取。由于这种类型的文档文字、布局甚至成像都会更加自由开放,因此也更具有挑战性。这类文档信息抽取任务常称为视觉富文档信息抽取(visually-rich document information extraction),即在一些富含视觉信息的文档图像上进行关键信息的提取,是近些年比较火热的一个研究方向。它不仅需要依赖一定的光学字符识别(optical character recognition,OCR)技术完成文档中文字的感知,还需要依赖一定的版面分析(张利 等,1998;Ying等,2020)和语义理解能力完成信息的抽取,整体上旨在端到端地解决人们对于某类文档的信息提取需求。例如,在企业的日常报销过程中,财务人员通常会面临大量财务票据数据,需要对这些票据进行关键信息录入或审核。视觉富文档信息抽取可以利用深度学习技术,智能化地将扫描得到的图像自动地完成关键信息的结构化,从而大量解放重复性的人力劳动,具有巨大的商业价值。该领域的研究目前仍处于比较早期阶段,相关研究也通常需要依赖一些公开数据集。然而,这类数据由于本身收集和标注难度都比较大,甚至很多文档还涉及一定的敏感信息导致无法公开,目前可公开获得的真实公开文档数据集,无论数据规模还是覆盖的场景都比较少。近些年,有一些工作公开了针对某些视觉富文档的数据集,其中有代表性的包括:SROIE(scanned receipts OCR and information extraction)数据(Huang等,2019)是目前主流的文档信息抽取数据集,主要包含扫描的英文购物小票数据,提供了完整的OCR标注信息和基于key-value对的关键信息标注,主要目标是提取其中如金额、店名、消费时间等关键信息。基于此数据举办了ICDAR 2019 Robust Reading Challenge on Scanned Receipts OCR and Information Extraction竞赛,吸引了大量学术界和产业界的选手参与。 但该数据的测试集标注并未公开,仅可从竞赛平台提交成绩。类似地,CORD(consolidated receipt dataset)数据(Park等,2019)和WildReceipt(Sun等,2021)也是基于真实拍摄或扫描成像的购物小票数据集,包含商店、超市和饭店等地的消费记录。FUNSD(form understanding in noisy scanned documents)数据(Jaume等,2019)和Kleister-NDA(kleister non-disclosure agreements)数据(Graliński等,2020)主要包含一些档案文件类数据,例如报表、合同和财务报告等,原始文件均为PDF格式的文件,其OCR结果是通过一些引擎提取得到。由于文档的各种类型差异比较大,因此这类数据集可以定义的字段类型比较局限。对于表单数据集FUNSD,其中的大量实体类型是直接由其中的Key-Value对中的Key值直接决定的。EATEN(entity-aware attention text extraction network)数据(Guo等,2019)中公开了3种类型的中文文档数据:火车票、护照和名片,除火车票中提供了约4 000张真实数据,其余均为合成数据。合成数据基本上是基于同类或少量种类的模板经过一定的文字生成和图像扩增得到的。此外,该数据集只提供了最终的信息结构化标注,并未提供OCR标注,对于部分依赖OCR模型的解决方案带来了一定的限制。EPHOIE(examination paper head dataset for OCR and information extraction)(Wang等,2021)首次公开了一个教育场景的文档信息抽取数据,图像主要来源于扫描的试卷头部区域。其中的字段类别定义主要是基于Key-Value描述的一些基本实体,例如班级、学号和姓名等。值得注意的是,该场景中的文字除了印刷体以外,还包含大量手写体文字。以上数据集中,除EATEN数据集提供了大量合成数据以外,每个数据集包含的真实图像数量都比较少(几百或几千)。此外,EATEN数据集提供的合成数据版式都相对比较固定,因此无法有效反映真实世界中存在的数据复杂分布情况。想要进一步推动该领域技术的进步,仍然需要更多的真实数据加以支撑。从以上公开的数据集可以看出,对于每一个场景,信息提取任务需要抽取的字段是不同的。一般可以将信息抽取任务定义成两种类型。1)基于预设好的字段进行抽取。这种任务一般可以直接应用服务于某一个垂直领域的文档处理解决方案,例如票据或卡证类数据的信息抽取,其中一些预设的关键字段(如姓名、票据号码和时间等信息)是每个数据样本都基本具备的,提取后的信息可直接转换为关系型数据表进行存储。2)非预设的Key-Value对信息抽取。此类任务常见于一些存在开放版式的文档中(如表单、试卷),每个文档中的Key-Value信息中的Key值是根据图像中存在的实际值变化而变化的。这种类型的任务提取出的信息一般无法直接使用,而是进一步输出到下游任务中进行信息的筛选、过滤和处理,或用于构建知识图谱等。值得注意的是,以上两种任务形式对应的数据并不是完全绝对的,而是根据具体任务场景所定义的任务目标决定的。例如在购物小票中,如果任务目标是提取其中预设的票据总金额、消费时间等,则可以转化为第1种类型的任务;如果任务需要提取购物清单中的明细记录(各类商品的单价、数量等),则应视做第2类任务。基于以上提到的第1类任务形式,本文公开了一个新的基于预设关键字信息抽取的真实扫描中文票据数据集SCID(scanned Chinese invoice dataset)。该数据集共包含40 716幅来自全国范围内的真实票据扫描图像,按票据类型分为火车票、出租车发票、通用定额发票、通行费发票、客运发票和飞机行程单共6种类型。基于此数据集,本文定义了票据信息抽取任务,预设了10种类型的待提取关键字段。相较于之前的数据集来说,SCID数据集带来的额外挑战主要包括:1)数据集中包含不同种类的票据,不同类型的票据需要提取的关键字段也不相同。2)从票据的版式分类来看,飞机行程单和火车票的版式由于存在统一标准,相对比较固定;而出租车发票、通用定额发票、通行费发票和客运发票等类型的发票,不同地区甚至不同发行公司开具的票据都可能存在很大的版式差异。3)之前的数据集中,文字的印刷比较规整,例如购物小票或基于PDF转换的文档大多数都具有比较明显的前背景区分性(大多数为白底黑字),而且文字排布方向基本统一;而真实发票的形成过程通常会经过模板、机打印刷和盖章3个阶段,因此经常易出现打印模糊、文字错行以及文字重叠等现象,给OCR任务带来极大挑战。表1展示了SCID数据集和目前一些主流公开数据集的比较信息。基于SCID数据集,举办了第3届CSIG(China Society of Image and Graphics)图像图形技术挑战赛中“票据识别与分析挑战赛”赛道的比赛。该比赛定义了一个用于端到端票据关键信息抽取的任务,任务输入为单张票据图像,输出为对应票据的关键信息。选手提交的解决方案中需要同时解决票据分类、票据文字OCR和关键信息抽取等多方面的问题。这些解决方案可以直接应用于工业场景,服务于实际业务生产,具有很高的实用价值。10.11834/jig.220911送排稿.T001表1基于视觉富文档的信息提取公开数据集比较Table 1Comparison between different visually-rich documents datasets for information extraction tasks数据集参考文献数据描述语种字段类别数量(训练/验证/测试)FUNSDJaume 等人(2019)扫描的表单文档数据英文4149/0/50CORDPark等人(2019)拍摄/扫描的印度尼西亚购物小票(商店/饭店)英文30800/100/100SROIEHuang等人(2019)扫描英文购物小票英文4626/0/347EATENGuo等人(2019)合成的单类文档数据,包括火车票(含少量真实图像)、护照和名片中文火车票8护照7名片10301.6 k/0.4 k98 k/0/2 k198 k/0/2 kKleister-NDAGraliński 等人(2020)真实PDF文档数据,包括一些US保密协议文档和UK的财报文档英文4254/83/203WildReceiptSun 等人(2021)基于拍摄/扫描场景的购物小票英文251 268/0/472EPHOIEWang 等人(2021)扫描的试卷头部区域图像,文字含印刷体/手写体中文101 183/0/311SCID真实的中文财务票据扫描数据,含6种类型中文1019 999/10 358/10 3591 数据集1.1 数据采集与标注很多公司报销环节中,会将票据贴于一张白纸,经过扫描上传至报销系统。经企业法务和财务部门审核和授权,本文采集了企业内部对私报销单据中部分历史非敏感票据的扫描图像,并使用自研的票据切割引擎获取了6种类型的单张票据的扫描影像共40 716幅,包括飞机行程单、出租车发票、通用定额发票、火车票、通行费发票和客运发票,如图1所示。所有票据由于实际铺贴关系,可能存在轻微倾斜。对于各类发票中涉及的个人隐私信息(姓名、身份证和车牌号等)均经过了人工脱敏处理。10.11834/jig.220911送排稿.F001图1各类发票示例图Fig.1Illustration of different types of invoice((a) itinerary /receipt of air travel; (b) taxi invoice;(c) general quota invoice; (d) train ticket;(e) toll invoice; (f) passenger transport invoice)对于发票信息录入或审核需求来说,业务需要获取的信息为基于Key-Value对的字段内容,其中Key为预先设定好的键值,Value为图像中识别获取得到的对应文本内容(部分内容可能还需要进一步格式化处理)。对于不同票据来说,所能获取的关键信息各不相同。排除可能涉及个人信息的字段,SCID定义并标注了10种类型的关键字段,其中飞机行程单包括日期、金额、始发站、到达站和保险费5种待提取字段;出租车发票包括发票代码、发票号码、金额和日期4种待提取字段;通用定额发票包括发票代码、发票号码和金额3种待提取字段;火车票包括日期、金额、始发站、到达站和座位类型5种待提取字段;通行费发票包括发票代码、发票号码、金额、入口和出口5种待提取字段;客运发票包括日期、始发站、到达站和金额4种待提取字段。可以看到,不同类型的票据之间关键字段类型存在一定重叠,也存在一些特有字段。基于以上任务设定,SCID采用两个独立的数据标注流程来获取相应的标注信息,如图2所示。第1个标注流程获得的是票据的“结构化信息”,即每幅图像对应的关键字的Key-Value信息;第2个标注流程获得的是票据的“OCR信息”,即每幅图像中包含的所有文字(不含弯曲文字)的位置和对应文字内容。10.11834/jig.220911送排稿.F002图2两种不同标注信息示例Fig.2Illustration of two types of annotation((a) structural-information annotation;(b) OCR annotation)两个标注流程均采用首先生成伪标签,再人工复核清洗的标注方式。第1个标注流程使用自研的票据识别系统,直接获取结构化信息伪标签,伪标签内容包括关键字段的位置信息和文字内容,标注人员会对所有标签进行复核清洗,对人眼无法识别的模糊文字统一当做“NOT CARE”属性处理;第2个流程中,首先使用基于DavarOCR(Qiao等,2022)的OCR推理引擎获取全图的文字检测与识别结果,然后将第1个流程中的关键字段文本框与本次OCR推理文本框进行匹配。对于关键字段文本框来说,所有OCR推理文本框中如果与某文本框的交并比(intersection of union,IoU) 0.5,则直接将该文本框的坐标和内容替换为第1步得到的真值;如果某个关键字段文本框找不到与之匹配的OCR推理文本框,则认为是一个漏检,直接将该关键字段文本框加入到OCR推理文本框中。经过以上流程后,背景中的文字仍然可能包含一定程度的OCR噪声,但是保证了OCR标注中所有关键字段的标签是经过人工复核清洗的。1.2 数据统计SCID数据集共提供了6类票据40 716幅图像,包含结构化标注信息155 497对,OCR文本框979 309个。SCID数据集分为训练集、验证集和测试集,分别包含19 999幅、10 358幅和10 359幅图像,每种类型的票据数量统计如表2所示。该数据划分对应CSIG比赛提供的训练集、A榜测试集和B榜测试集。10.11834/jig.220911送排稿.T002表2SCID中各类别票据数量分布Table 2Distribution of invoice types in SCID票据训练集验证集测试集飞机行程单564324283出租车发票3 6701 9141 813通用定额发票8 1283 4963 620火车票1 581720750通行费发票4 7883 1383 136客运发票1 268766757图3展示了SCID数据集中各种不同类型的结构化字段数量分布。可以看到,由于不同类型票据可能包含的字段类型不同,字段种类出现的比例也不相同。其中绝大多数票据都包含“金额”字段,因为这个字段是所有票据进行审核或录入的主要关键信息。相比于票据总量来说,仍然存在一定数量由于发票残缺、印刷模糊和特殊版式等原因造成的“金额”字段缺失的情况。对于一些只存在于特定发票中的字段,如:“保险费”、“座位类型”等,实际上也可以作为用来判定发票种类的一项依据。10.11834/jig.220911送排稿.F003图3SCID中不同结构化字段数量分布Fig.3Distribution of different types of structural-keys in SCIDSCID数据集真实反映了扫描票据类文档实际的成像情况。除了火车票、飞机行程单这类具有统一国家/行业标准的票据以外,其他各类票据可能由于地区的差异而各不相同。例如,即便同属于客运发票,在某些票据中的Key-Value是左右排布的,而在另外一些票据中则是上下排布的,甚至还有一些票据没有明显的Key值。此外,与购物小票不同,大多数财务票据的印刷分为3个阶段,即“模板”、“打印关键信息”和“盖章”。其中模板上的文字相对清晰和固定,但是在印刷过程中,由于票据纸张摆放等原因,会经常出现文字的打印错位(即一些Key-Value的空间对应关系错乱,一般情况下打印错误的整体偏移是一致的)、打印模糊和文字重叠现象。发票章的覆盖也很大程度上会产生进一步的文字重叠问题和色彩干扰。这些都给解决方案中的OCR或信息提取技术提出了很大的挑战。图4展示了一些不同类型的难例样本,包括票据版式复杂多变、文字打印错位、打印模糊和文字重叠等。第1幅客运发票图像中的文字印刷存在错位甚至重叠,第2、3幅图像由于文字展示比较模糊导致识别难度较大,第4幅图像由于印章导致部分文字识别困难。10.11834/jig.220911送排稿.F004图4SCID中一些难例展示Fig.4Illustration of some hard samples in SCID1.3 评价指标SCID数据集主要关注业务实际应用中最终的信息提取结果,因此该任务的评价指标直接采用字段级别的F1值进行评价,这个指标由精确率P (Precision), 召回率R (Recall)计算得到P=TPTP+FP+ε (1)R=TPTP+FN+ε (2)F1=2×P×RP+R+ε (3)式中,TP(true positive)表示所有预测的字段中与信息结构化真值匹配上的数量,FP(false positive)表示预测出字段中未在信息结构化真值中出现的数量,FN(false negative)表示信息结构化真值中未被匹配上的字段数量。ε为一个小数值常量(0.001),防止出现无真值的空白图像。整个数据集的F1值为每幅图像的F1值平均。2 数据集基线2.1 方案选型基于视觉富文档信息抽取的技术路线可以大致分成两种类型,一类是基于文档视觉—语言预训练模型的,代表性工作包括LayoutLM(layout language model)系列(Xu等,2020;Xu等,2021a;Huang等,2022)、StructuralLM(structural language model)(Li等,2021)和DocFormer(document Transformer)(Appalaraju等,2021)等,这类模型通常经过了大量的文档数据自监督预训练,可以应用在下游很多不同的文档理解任务上;另一类则是不依赖预训练模型,例如TRIE(text reading and information extraction)(Zhang等,2020)、MatchVIE(matching model for visual information extraction)(Tang等,2021)和SDMG-R(spatial dual-modality graph reasoning)(Sun等,2021)等,这类技术只能针对性地解决文档信息抽取的任务。一般来说,前一类的技术由于利用了大量的预训练数据,在下游场景数据量不足时也会相对有一定的泛化和支撑能力,而且在新的应用场景可以较为快速和方便地搭建以适配。因此,本文选择使用前一类技术作为基线方案。具体地,以LayoutLM v2作为基线模型,使用其提供的多语言版本预训练模型LayoutXLM(Xu等,2021b)作为模型初始化参数。2.2 基线方案整体基线方案流程示意图如图5所示,包括OCR模块、文字排序模块、LayoutLM v2模型和后处理模块。10.11834/jig.220911送排稿.F005图5基线方案流程图Fig.5The pipeline of baseline solution2.2.1 OCR模块该模块主要是将图像中包含的所有文字内容进行提取,一般直接采用成熟的OCR引擎推理得到。通用的OCR推理引擎一般是基于大量自然场景图像训练得到,在泛化的新场景具有一定的文字识别能力,但是在实际工业使用中通常需要对具体的业务场景数据进行定制化的精调。因此,实验中会分别比较3种设定下的结果,包括:1)使用通用OCR推理引擎进行推理的文字输入;2)使用该场景数据精调文字检测/识别模型,并将模型预测结果作为输入;3)直接使用OCR真值的文字输入。本文采用基于DavarOCR(Qiao等,2022)的自研OCR推理引擎,其中使用Text-Perceptron-Det(Qiao等,2020)作为文字检测器,CRNN(convolutional recurrent neural network)(Shi等,2017)作为文字识别器,可获得基于文本行的文字坐标与识别结果。2.2.2 文字排序模块由于LayoutLM v2模型接收的输入是经过序列化的一维数据,需要将所有预测到的文字框进行一定的顺序排布。由于票据版式复杂多变,不同的文字排布顺序会给整个文字的语义带来一定干扰,例如在一些票据中,Key-Value对是左右排布,而在另一些票据中是上下排布。这里,根据人阅读文档的顺序习惯,本文采用一种启发式的文字阅读排序方法,基本思想为:在每次循环中,选取位置最上方的一个文本框为基准,遍历剩余所有文本框,将所有与其属于同一行的文本框找出并加入一个队列当中。其中,判断两个文本框是否属于同一行的标准为判断它们在高度上的重合比例是否大于一个阈值。其中,α是一个用来控制文本行重叠程度的阈值参数,使用时设定为0.3。在寻找同一行文本框时,待判定的文本框将会与之前已经加入队列的所有文本进行两两比较,直到无法再添加新的文本框到队列当中,将会移出该队列,并在下一个循环中创建新的队列。在每个队列当中,按照横坐标左至右的方式进行排列。具体实现步骤如下:算法1 文字排序方法输入:文字框列表B=[b1,b2,⋅⋅⋅,bn], 其中,每个文字框由4个坐标框(左上角点、右上角点、右下角点和左下角点)表示; bi=[x1,y1,x2,y2,x3,y3,x4,y4],其中每个文字框位置信息由其中心点表示xmid=x1+x2+x3+x44, ymid=y1+y2+y3+y44。输出:经过排序的文字框列表B'=[b1',b2',⋯,bn']。初始已排序文字框B'←[ ]初始待排序文字框Bres←BRepeatbt←Bres中ymid最小的框Bcur←[bt], Bres-=[bt]Repeat:遍历当前Bcur中文字框bi和Bres中的文字框bj两两计算是否处于同一行:hi=max(bi[yk])-min(bi[yk]), k=1, 2, 3, 4hj=max(bj[yk])-min(bj[yk]), k=1, 2, 3, 4hoverlap←bi与bj在y轴方向上的重叠高度if hoverlapα×min(hi,hj):Bcur+=[bj], Bres-=[bj]until Bres找不到可以新增至Bcur中元素根据xmid排序Bcur中元素B'+=BcuruntilBres=[]2.2.3 LayoutLM v2模型依照原始模型的设定,该模型接收3种模态的数据编码输入。1)在文字模态编码中,将所有中英文及数字映射到统一的字典中,使用文字在字典的序号作为初始编码。对于经过排序后的文字实例序列,在序列头部插入[CLS]符号,并在每个文字实例之间插入[SEP]符号,对于最终结尾长度不足512位的,则补齐[PAD]操作。对于长度超过512位的,则将该样本拆分成两个或多个文本段输入。文字编码的组成由文本内容的编码、文字序列的一维顺序编码和文字序列中不同文本段切分的编码叠加组成。2)在视觉模态编码中,使用ResNeXt-FPN(ResNeXt-feature pyramid network)作为视觉编码器,将原始图像输入进去后得到高维的特征图。根据文本框的位置,在高维特征图中将对应区域截取下来,并按照前面提到的相同顺序排列。类似的,这里的编码也叠加了文本块的一维顺序编码和不同文本块的切分编码。3)在布局模态编码,直接拼接了各文本框的二维空间坐标信息编码。以上3种模态信息会经过一个空间感知的自注意力机制进行模态融合,最后的预测头中,会给文字序列中的每个文字位置预测一个相应的类别标签。2.2.4 后处理模块该模块主要负责将模型输出转换成最终解决方案的输出形式,主要包括将预测值映射回字典取值、过滤特殊符号、空文本等。需要注意的是,在业务实际应用中,会根据下游任务需求,定制化地设计数据的后处理形式。例如,将金额转换成统一格式的数字保存,对于不同格式的日期,如2022/08/06、2022-07-07、2022年08月06日,使用统一正则表达式的方式存储,以方便后续数据存储或处理。由于目前SCID数据集是一个面向研究的数据集,所有字段内容的形式以图中原始展示的形式为准,因此无需对文本格式进行转换。2.3 实验细节2.3.1 训练细节票据中共包含10个类别的字段,分别是发票号码、金额、发票代码、日期、入口、出口、到达站、始发站、座位类型和保险费。训练时额外新增了一个“其他”类,用于描述所有不属于上述10类的文字框。将所有类别的票据数据直接全部混合在一起进行训练,不采用额外的数据扩增方式。优化器选择AdamW(Loshchilov和Hutter,2019),初始学习率为0.000 05,采用指数衰减,共训练50个epoch。其中,前10个epoch采用STLR(slanted triangular learning rate)(Howard和Ruder,2018)策略进行预热。所有实验均在2张Tesla-V100-32G GPU上进行。训练采用分布式训练方案,批大小(batch size)设为8。位置编码方式、最大序列长度等均与原始LayoutLM v2设置保持一致。2.3.2 推理细节推理过程统一采用单幅图像的测试推理。首先将原始图像送入文本检测网络,等比例缩放至长边为960像素。然后对文本检测结果进行外扩、透视变换矫正和像素值归一化等操作,将矫正后的图像送入文本识别网络,采用固定测试尺度512 × 32像素。获得文本识别结果后,将其与文本坐标、原始图像共同送入LayoutLM v2模型,这里将图像输入尺寸放缩至224 × 224像素。2.3.3 推理速度以上方案实现了整体对于单张票据的端到端信息抽取,在单个Tesla V100 下推理耗时约为532 ms/幅(1.88帧/s)。其中OCR推理耗时270 ms/幅,LayoutLM v2模型耗时262 ms/幅。2.4 实验结果表3展示了基线模型在SCID测试集上的测试结果,其中精确率、召回率和F1分数都是平均值。为了还原比赛时数据使用情况,分别展示了仅使用SCID数据训练集样本训练(比赛训练集)的结果和同时使用SCID数据训练集和验证集(比赛训练集+A榜数据集)数据进行训练的结果。由于不同的OCR结果可能对于最终端到端结果产生的影响不同,分别展示了直接使用“OCR引擎推理”得到的结果,利用SCID数据集标注“OCR模型精调”后得到的结果,以及直接使用“OCR真值”的结果3种设定。10.11834/jig.220911送排稿.T003表3基线方案在SCID测试集上的实验结果Table 3Results of the baseline methods on SCID训练集实验设定精确率召回率F1分数SCID训练集OCR引擎推理0.780 80.748 30.760 2OCR模型精调0.857 80.830 50.840 4OCR真值0.977 50.958 10.965 2SCID训练集+验证集OCR引擎推理0.779 70.762 40.768 7OCR模型精调0.864 90.853 00.857 0OCR真值0.988 60.985 00.985 7从表3可以看出,LayoutLM v2具有很强的语义表征能力,基于OCR真值的信息结构化分类准确率非常高。然而,当直接使用OCR引擎推理得到的OCR结果时,精度产生了明显下降,主要是因为,在当前端到端评价体系下,结构化信息只有完全预测正确才视为正确。如前文提到,当前场景对于OCR具有一定的难度,因此引入的OCR预测错误会对最终预测指标产生比较大的影响。当使用当前数据集的OCR标注对OCR模型进行精调过后,模型的性能可以得到一定程度的提升(约10%),但是距离完全使用OCR真值来说还是有非常大的差距,这也说明了OCR带来的问题是当前场景的一个最主要瓶颈,其中包括由于文字检测过程中多检、漏检造成的错误,也包括了文字识别过程中模糊、重叠或特殊符号等问题带来的识别错误。如果想克服这些问题,从工程角度看,最主要的一个优化方向就是添加更多的样本,使OCR模型在该场景下的文字检测和识别准确率更高。从对比增加验证集(A榜数据)联合训练的实验结果来看,使用更多的样本可以对模型性能带来一定的提升。为了更好地分析基线方案对于不同问题的适配性,表4和表5分别展示了按票据类型划分和按字段类型划分的性能分布,实验均使用SCID数据的训练集和验证集进行训练。10.11834/jig.220911送排稿.T004表4基线方案在不同票据类型上的准确率分布Table 4Distribution of the baseline method′s accuracy on different invoice types票据类型数量OCR引擎推理OCR模型精调OCR真值飞机行程单2830.455 10.664 80.997 3出租车发票1 8130.706 60.812 10.987 2定额发票3 6200.876 70.931 30.990 6火车票7500.935 30.966 30.997 6通行费发票3 1360.708 00.819 70.979 7客运发票7570.664 30.764 60.967 310.11834/jig.220911送排稿.T005表5基线方案在不同字段上的准确率分布Table 5Distribution of the baseline method′s accuracy on different text type字段类型数量OCR引擎推理OCR模型精调OCR真值金额10 2030.637 40.781 70.990 1发票号码8 4660.909 50.943 70.991 5发票代码8 1780.931 10.958 00.994 1日期3 4930.605 40.750 70.990 5入口2 4780.478 30.674 90.940 9出口2 7760.570 10.728 70.952 5到达站1 7750.771 20.847 70.985 0始发站1 7770.694 50.802 40.985 0座位类型7500.989 20.993 20.994 5保险费2830.811 50.868 00.995 0从表4可以看出,在使用OCR真值时,虽然各类票据均可以达到比较高的性能,但从分布上可以明显看出,客运发票和通行费发票精度相对较低,出租车发票次之,其他3种发票精度非常高。这也反映了不同类型票据的版式丰富程度,即客运发票和通行费发票的版式布局种类最为复杂,而火车票和飞机行程单相对比较固定,模型可以很容易从一些相对比较固定的版式上学习到固有的记忆。而在一些变化的版式中,模型就需要依赖更多的上下文信息才可以做出判断。此外,在结合了OCR推理结果后,飞机行程单的性能下降最为严重。这主要是因为其中的OCR识别难度较大,且该类型的票据数据量相对较少。类似地,其他票据由于OCR引入带来的性能下降程度不同,也反映了不同场景下OCR的难度不同。从表5可以看出,发票号码、发票代码和座位类型的指标最高,即便使用未精调的OCR模型也能取得0.9以上的F1分数。这主要是因为这3个字段对应的文本内容较为固定(有限个取值)或简单(纯数字),OCR识别难度较低。在日期、金额和保险费等字段中,由于存在着很多“¥”、“-”、“/”等特殊字符以及大小写数字混杂的情况,导致OCR识别精度不高。对于出口、入口、始发站和到达站这类字段,其取值范围较为开放,因此学习难度比较大,使得OCR精度偏低。特别地,在使用OCR真值的情况下,出口和入口字段也容易出现混淆,这是因为票据版式风格多变,导致模型很难做出准确判断。图6展示了一些当前基线模型的推理结果可视化,其中使用“类型:文字”的方式将对应的预测标签和结果叠加到图像中对应的字段位置。这些可视化的结果一方面展现了SCID中数据分布的丰富程度,另一方面也可以看出当前基线模型有着一定的版式泛化能力,可以同时利用场景的视觉、语义和位置信息作出相对准确的判断。10.11834/jig.220911送排稿.F006图6SCID中一些模型推理可视化结果Fig.6Illustration of some visualization samples in SCID3 票据识别与分析挑战赛3.1 比赛介绍基于SCID数据集,本文作者承办了第3届CSIG图像图形技术挑战赛中“票据识别与分析挑战赛”赛道的任务。比赛协办单位包括复旦大学计算机科学技术学院和海南大学计算机科学与技术学院。比赛旨在发掘更多具有创新性、实用性和可落地性的解决方案,以直接解决实际工业应用问题。比赛时间为2022年4月11日至8月20日,其中初赛(开发阶段)历时约3个月,共吸引了全国范围内高校、企业和个人参赛者185人参与。表6展示了部分成绩优秀队伍在测试集B榜上的成绩,表中数据为B榜榜单成绩,不代表最终比赛排名。B榜测试中仅提供原始图像。表中精确率、召回率、F1分数均为平均值。10.11834/jig.220911送排稿.T006表6CSIG票据识别与分析挑战赛B榜成绩Table 6Results of Test B in CSIG competition on invoice recognition and analysis队伍单位精确率召回率F1分数SECAI中国科学院信息工程研究所0.919 60.921 80.918 8Dialga华南理工大学0.928 40.910 60.917 0DataGrand达观数据0.904 40.901 90.901 5cpic太保科技数智研究院0.898 90.858 00.873 1naiveocr上海交通大学0.853 90.854 70.852 2RiverCat_w广电运通研究院0.837 60.828 10.830 7bestpay翼支付0.842 90.799 40.814 1注:加粗字体表示各列最优结果。3.2 比赛方案以下为部分参赛队伍解决方案概述:SECAI整体流程如下:1)数据处理。通过对OCR标注与信息结构化标注进行全匹配,得到图片中目标字段的位置与类别以及目标字段的识别结果,并通过简单的规则筛选获得每幅图像的票据类型。2)模型设计。文字检测模型使用Cascade- RCNN(Cai和Vasconcelos,2018)为主体模型,将模型主干替换为Swin-Transformer(Liu等,2021),使用FPN(feature pyramid network)(Lin等,2017a)进一步提取多尺度的特征,并将头部修改为Mask-RCNN(He等,2017)的头部,然后在当前数据集上进行训练。与普通的文字检测模型不同,这里要求模型仅检测需要提取的目标字段。文字识别模型使用预训练的中文CRNN(Shi等,2017)模型,并使用从训练集中裁剪下来的字段进行精调。图像分类模型使用ResNet(residual neural network)(He等,2016),为其添加了FPN与全连接层,并在当前数据集上精调。3)预测流程。图像首先分别输入至检测模块与分类模块,检测模块预测得到关键字段的位置与类型,分类模块预测得到图像所属类别及其置信度。然后经过如下的后处理:如果分类模块对于一幅图像所属类别的置信度非常高,那么就会抛弃检测结果中不属于当前票据类别的字段。这是为了抑制检测模块给出的明显错误分类。最后,将得到的目标字段所在区域进行裁剪,交由识别模块进行文字识别,得到最终的结果。Dialga方案将票据信息提取任务分为4个步骤,即文字检测、文字识别、信息提取和后处理。文字检测采用基于RetinaNet(Lin等,2017b)的模型。将票据图像输入到ResNet101-FPN(He等,2016; Lin等,2017a)的主干进行特征提取。对FPN中每个输出特征层上的特征点进行预测,输出提议框对应的类别和具体文本框的位置。文字识别模块采用基于CRNN(Shi等,2017)的方法。根据检测模块输出的文本行坐标,将图像中的文本行裁剪出来,输入到基于ResNet-LSTM的CRNN中,采用CTC Loss(connectionist temporal classification loss)进行训练。信息提取模块采用ViBERTGrid(Lin等,2021)模型,首先将文本输入到开源的NLP(natural language processing)模型提取语义信息,随后根据文本所处位置,将语义信息赋值到一个网格当中,将网格看做一个多通道特征图,与原图一起作为模型的输入。模型利用卷积神经网络建模版面信息,并利用语义分割、BIOES(begin-inside-outside-end-single)分类和文档分类信息进行监督。根据BIOES分类的结果进行解码,得到每个字段的提取信息,进行后处理。主要包括:针对票据类型删除多余字段;利用正则表达式修改日期、金额和数字位数类型等模式较为固定的字段;全半角字符统一等。DataGrand票据信息抽取方案可分为3个阶段,即OCR、票据分类和关键信息抽取。1)OCR基于行业主流方案实现,比赛中使用通用OCR引擎获取OCR结果。具体方案上使用了DBNet(differentiable binarization network)(Liao等, 2020)作为文本检测器和CRNN(Shi等,2017)作为文本识别器,采用PaddleOCR(Du等,2020)公开数据进行模型预训练和比赛数据精调。2)票据分类算法是基于YOLOv5(you only look once v5)实现的,YOLOv5是工业界常用的一种目标检测算法,其推理速度和性能都非常易于落地。虽然比赛数据是单张结果,但是考虑到未来业务场景扩展,更多的小票以混贴样本出现,这里选择使用网络的分类头来实现本次比赛的分类步骤。在网络后处理还加入了简单的规则判断,以提高最终分类效果,可达到99.97%的分类准确率。3)关键信息的抽取是基于BERT(bidirectional encoder representations from Transformers)(Devlin等,2019)实现的。不同于常见的BERT,方案在embedding阶段加入了检测框的 [x, y, w, h] 坐标作为文本框的位置信息编码。由于发票版面通常不是固定的,方案参考了T5(Raffel等,2020)关于relative bias的设计,将每个框与其他所有框的距离依次归类到N个bias,再经过Linear层后的relative bias加在注意力分数上。除此之外,方案还参考了LayoutLMv2(Xu等,2021a)和LayoutLMv3(Huang等,2022)的设计思路,将图像特征也作为一个模态编码融入BERT的Encoder当中。经过大量实验后,最终选择了LayoutLMv1-large (Xu等,2020)和LayoutLMv2这两个算法作为当前的发票抽取场景下的抽取算法,将LayoutLMv1模型应用于出租车发票,LayoutLMv2应用于其他票种。最后,根据失败样例中的部分常见问题,例如多检、漏检,对模型抽取的结果进行了部分后处理操作,完成最终结果输出。naiveocr针对数据集中存在的部分图像倾斜的问题,首先调用paddleOCR(Du等,2020)对图像做文本定位,得到Bounding Boxes,然后由以上Bounding Boxes估算图像的倾斜角度,最后根据该角度对原图像和标注做旋转矫正。该队伍提出了两种赛题方案:方案1是“目标检测+文本识别”;方案2是“文本定位+文本识别+信息抽取”,并对两种方案进行了融合。方案1首先基于Swin-Transformer(Liu等,2021)的主干提取图像特征,然后将图像特征输入到Cascade R-CNN(Cai和Vasconcelos,2018)模型,定位各类字段文本框的位置,最后根据定位结果切割文本图像,并送入Swin-Transformer+CRNN(Shi等,2017)模型进行文本识别。方案2的Backbone部分与方案1相同,但不对文本框分类,而是直接识别出所有文本,即票据全文,然后基于BERT + Span(Devlin等,2019)对票据全文做命名实体识别(named entity recognition,NER),直接标注各类字段的文本内容,在BERT中通过Bounding Box位置构造Position Embedding,引入部分Layout信息。方案1和方案2的单模型在赛题数据集上都有效,由于二者是基于不同视角的方案,最终使用朴素投票法融合了两种方案作为最终结果。bestpay方案整体流程分为文本检测、文本识别、信息抽取和后处理4个部分。文本检测采用了两种模型融合的方式,分别为DBNet(Liao等,2020)和SAST(single-shot arbitrarily-shaped text detector)(Wang等,2019)。其中,DBNet用于票据的全文本检测,包括关键信息内容和非关键信息内容;SAST用于票据的关键信息检测,仅用于检测票据中所需要提取的文本内容的位置,用于进一步提升关键信息的召回。文本识别模块使用的是CRNN(Shi等,2017)模型,通过精调百度PaddleOCR(Du等,2020)中内置CRNN模型,该模型使用的主干为ResNet-34。信息提取模块使用的是SDMG-R(Sun等,2021)算法,该算法将图像特征和文本特征融合,通过图节点分类的方法将提取出来的文本进行文本分类来提取出所需要的关键信息。后处理模块使用先验专家知识对提取到的关键信息进行后处理,主要可以分为两类,一类是不同票据差异化处理,如客运发票中过滤发票代码和发票号码,通行费发票中过滤日期,飞机行程单中修正“入口—出口”为“始发站—到达站”;另一类是字段格式处理,包括日期字段格式化、金额字段格式化、发票代码和号码的位数约束。3.3 方案分析从以上各队伍展示的整体解决方案来看,可以大致分为两种类型,第1种是直接将结构化任务融入在文字检测中,即多类别检测,识别模型仅用于识别拥有对应关注类别的文字即可;第2种是采用通检通识策略,并使用独立的信息抽取模型进行关键信息的提取。两种类型的方案各有优劣。对于第1种类型的方案来说,整体使用到的模型会更少,文字识别需要执行推理的文字片段数量也会较少,整体耗时会更低。但是,这个检测过程中实际上大多是通过检测模型对于文档版式的记忆(如文字的位置、字体和颜色等),因此对于一些版式相对比较固定的票据种类(如火车票、飞机行程单),检测模型可以非常容易地过拟合到对应的版式上,实现模板提取的功能。与此同时,整个方案所需要的标注成本也会更低一些(只需要标注关注的字段即可),文字识别模型可以仅使用关注的字段进行训练精调,提高对应场景的识别性能。但是,对于可能存在版式风格变化的或开放版式的场景,此类方法的可拓展性会较差。因此,对于文档版式有限,场景相对固定的业务场景,可以基于此种类型的方案进行定制开发。对于第2种类型的方案来说,由于独立信息抽取模型的存在,这个模型通常是经过大量语料预训练过的,模型可以根据文本的上下文进行一些相关信息的推理,因此在语义上的泛化能力更强。此外,在这种方案中,OCR模型和信息抽取模型是相互独立解耦的,OCR模型旨在提升其通用文字的检测和识别能力,而信息抽取模型则可以使用OCR真值进行独立的优化。但是,以SCID数据集来说,通用OCR模型的识别不可能是完全准确的,会给第2阶段的信息抽取引入大量的文本噪声,这些文本噪声会给后续模型的鲁棒性带来一定的挑战。对于一个业务原型的开发来说,如果需要对应场景较高的OCR识别准确率,需要标注的工作量相较于第1种方案也会更加多。因此,这种方案更加适用于一些可能存在开放版式,需要结合语义理解的文档场景;或是需要快速建立一个初始模型的场景,利用预训练模型的优势,仅需要少量样本就可以有一个相对不错的演示效果。从比赛成绩反映的最终指标并对应本文基线方案中使用OCR精调的实验结果可以看出,本文提出的基线方案是具有一定竞争力的。尽管如此,处于前列队伍的最终性能较基线方案还会有不同程度的性能提升。除了本身算法流程的创新性以外,还可以看出在各比赛队伍的方案中,包含了许多用于提升方案最终性能的技巧或工程手段。这些都可以给最终的推理结果带来不同程度的帮助。例如,引入先验知识“发票代码国标为12位”、“发票号码为8位”等帮助校正OCR识别模型,或通过多模型融合的方式补足单一模型存在的缺陷。这些工程手段是在实现一个实际业务解决方案时,除技术算法模型以外,同样非常重要甚至不可或缺的一个环节,这体现了算法研究与工程实现的联系和差异。SCID数据集的提出首次将一些更具挑战的实际问题暴露出来。相较于之前较为规整的票据类数据集,SCID包含的挑战问题主要包括:1)票据种类和版式布局的丰富性;2)票据中可能存在的打印错位给语义理解带来的挑战;3)票据中可能存在的印刷文字模糊、重叠和字体大小变化等问题给OCR带来的挑战。以上问题在现阶段仍需要同时结合AI算法和工程调优的方式进行解决。但在实际AI技术生产中,同样需要考虑工程定制化的开发成本与实际产生收益之间的关系,因此算法技术的不断进步是未来必须关注的问题,期望未来能够提出更先进的技术手段来解决现在需要依靠工程化手段解决的问题。4 结论财务票据是日常工作中经常遇到的一种包含丰富视觉语义信息的文档类型,企业财务人员需要每日审核或录入大量票据数据。在真实环境下的票据可能存在着很多成像上的难点,包括打印模块、重叠、错行和版式复杂多变等,这使得利用深度学习技术实现自动化信息提取的流程具有诸多挑战。然而,当前还没有一个包含足够真实数据量的中文票据数据集。本文首次收集、标注并公开发布了一个基于扫描成像的真实中文票据数据集SCID,包含了6种(飞机行程单、出租车发票、火车票、通用定额发票、过路费发票和客运发票)不同类型的票据图像,共40 716幅。该数据集提供了两种不同的数据标签,OCR标签和结构化信息标签,数据标注采用先模型生成伪标签,再人工清洗和脱敏的方式获得。基于SCID数据集,本文构建了用于端到端票据信息提取的任务目标和评价方法,旨在直接形成可应用实际业务的完整解决方案。基于以上任务设定,本文提出了一种基线方案,使用OCR引擎串联视觉语言模型LayoutLM v2实现完整的信息抽取,在数据集验证集上达到了有效的实验结果。与此同时,基于本数据集所主办的“CSIG 2022票据识别与分析挑战赛”,吸引了大量来自高校和企业的研究人员参与,参赛选手结合不同领域技术提出了多种先进的解决方法,为该问题的解决提供了很多技术与工程经验上的启发。本文提出的数据中包含的票据种类仅是实际生活中所能见到的所有种类中的一小部分,然而由于隐私等原因,票据的数据集构建与公开是一个相对困难和复杂的问题。未来想要使得技术发展更贴近实际需求,仍然需要不断扩充数据集中票据版式的丰富程度,针对部分很难获取的样本,可以结合一些样本合成的技术(Guo等,2019;孙杉 等,2022)来构造更多的数据。随着越来越多新数据集的公布和相关领域技术的发展,相信针对该方向的研究工作也将越来越多。从技术发展方面,未来一些主要研究方向可以包括:1)多模态信息如何更合理地利用,针对不同类型的任务(甚至不同类似字段的提取)需要依赖的模态信息都不尽相同;2)如何设计更加高效的端到端流程,减少技术组件之间的误差累积;3)如何有效地引入人类的先验信息或将工程经验融入模型中,帮助模型拥有更强的领域适配性。
使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,
确定继续浏览么?
复制成功,请在其他浏览器进行阅读
复制地址链接在其他浏览器打开
继续浏览