logo好方法网

一种基于标题位置参照模板的票据图像位置精确修正方法


技术摘要:
本发明提供一种基于标题位置参照模板的票据图像位置精确修正方法,对于特定的票据将基于标题位置参照模板作为参照物,自动化地逐步调整票据方向和位置,实现了一种据图像位置精确修正方法。利用本发明的方法,使用者仅需要在票据图像中点击票据标题的第一个字和最后一  全部
背景技术:
: 当前现代财务管理过程中很多企业和单位已经将票据进行了电子化存储,如果能 够识别这些票据中的具体上下文信息(如:一次购买耗材的列表,特定宾馆的费用明细)将 能够形成企业财务票据内容大数据,这些数据可以为企业管理、发现财务漏洞以及廉政建 设提供重要的数据支撑,因此十分有必要进行票据影像内容的识别。 当前OCR技术已经较为成熟,可以较容易的识别图像中的文字,然而票据内容不同 于一般的书本内容,所需的信息来自于特定的位置区域(如:某种发票的明细固定处在票据 表格的某一特定位置),我们只有正确定位了这一区域,才能保证识别到信息的准确和完备 性。在票据的图像化过程中,由于拍摄的人、设备以及环境多种多样,所以收集到的票据通 常有一定所位置、大小和方向的偏差;这些偏差导致我们无法准确的定位特定的区域,进而 影响了图像中所需信息的获取。因此对于票据图像十分有必要对其位置、大小和方向进行 细致的修正。 对于图像位置的修正,当前采用的主流方法是:一、将票据影像作为一个在特定背 景下的矩形(黑背景下的白色纸票据),在识别其边界或文字排列方向之后构造可能的票据 外框多边形(如在图像中票据可能呈现为平行四边形),基于该多边形和目标矩形在几何上 的差距,计算旋转、缩放的程度然后进行整个图像的变换,获得最终的修正结果。这种方式 可以达到较高的自动化,然而在实际工作中较难严格限制报销人的使用的票据拍摄背景和 图像裁剪方式,某些情况下拍摄环境背景存在多种颜色,拍摄设备在图像边界畸变情况不 一、图像文件裁剪不当以及票据内部文字本身存在多种方向,均会对以上描述的修正过程 造成影响,使得以上过程很难达到“位置精确”这一目标,最终校准的图像位置会有存在随 机的误差,这些误差最终会导致无法严格的确定图像中所需的区域。二、是采用纯人工的方 式,人工的不断对票据进行观察和调整,这种方式虽然可以解决扫描图像存在的复杂性,但 是需要大量的人工与计算机的交互迭代操作,所以耗费时间和人力成本较高,在业务量大 的时候难于满足要求。 面对“位置精确”这一目标,以及多种多样的票据、背景以及拍摄条件,完全无人参 与利用自动算法进行修正和完全依赖人工手段进行修正均难于完成目标,因此需要引入新 的方法,引入人的决策、参照物和自动化算法票据位置的精确修正。
技术实现要素:
本发明提供一种基于标题位置参照模板的票据图像位置精确修正方法,对于特定 的票据将基于标题位置参照模板作为参照物,自动化地逐步调整票据方向和位置,实现了 一种据图像位置精确修正方法。 5 CN 111582222 A 说 明 书 2/7 页 本发明所述的一种基于标题位置参照模板的票据图像位置精确修正方法,包括以 下步骤: S1,输入标题位置参照模板表TemplateTable,输入待修正影像InvoiceImage,输 入InvoiceImage对应的票据的类型名称InvoiceTypeName;获取InvoiceImage对应的标题 位置参照模板CurrentTemplate,InvoiceImage的宽度IWidth和高度IHeight,修正后影像 CorrectedImage; S101,输入标题位置参照模板表TemplateTable;TemplateTable为一个表,该表包 含以下两个字段: TemplateTableTypeName,票据的类型名称,该字段为字符串类型,该字段为 TemplateTable的主键; TemplateTableStruct,与票据对应的标题位置参照模板,该模板为一个结构体其 内部的数据包括: 1)PWidth修正后票据影像的宽度; 2)PHeight修正后票据影像的高度; 3)Name1票据标题名称第一个字的内容; 4)Name1CX票据标题名称第一个字中心点在修正后影像中的X坐标; 5)Name1CY票据标题名称第一个字中心点在修正后影像中的Y坐标; 6)Name2票据标题名称最后一个字的内容; 7)Name2CX,票据标题名称最后一个字的中心点在修正后影像中的X坐标; 8)Name2CY,票据标题名称最后一个字中心点所在修正后影像中的Y坐标; S102,在TemplateTable查找TemplateTableTypeName等于InvoiceTypeName的行, 如果找到了则将对应行的TemplateTableStruct存储到CurrentTemplate之中并转到S104, 否则转到S103; S103,设定CurrentTemplate=NULL,转到S104;其中NULL表示空值; S104,获取InvoiceImage的宽度存储到IWidth之中,获取InvoiceImage的高度存 储到IHeight之中; S105,设定CorrectedImage=NULL,其中NULL表示空值; S2,构建点选中心算子CenterOperator,输入为点选横坐标OpTX,位置点选纵坐标 OpTY,输出为调整后横坐标OpCX,调整后纵坐标OpCY,对应位置字符OpCChar; S201,算子截取宽度CutWidth=IWidth/25,算子截取高度CutHeight=IHeight/ 25; S202,以(OpTX,OpTY)为中心在InvoiceImage上截取宽度为CutWidth,高度为 CutHeight的图像存储到中心识别暂存图像SubImage中; S203,利用文字识别OCR程序来识别SubImage中的所有字符以及每个字符对应的 外框矩形,如果存在一个字符对应的外框矩形其范围包含点(CutWidth/2,CutHeight/2), 则将该字符存储到OpCChar中,输出该矩形左上角横坐标SubLX、左上角纵坐标SubLY、右下 角的横坐标SubRX、右下角的纵坐标SubRY,并转到S205;否则转到S204; S204,CutWidth=CutWidth 10;CutHeight=CutHeight 10;转到S201; S205,OpCX=(OpTX-CutWidth/2) (SubRX-SubLX)/2; 6 CN 111582222 A 说 明 书 3/7 页 S206,OpCY=(OpTY-CutHeight/2) (SubRY-SubLY)/2; S307,输出OpCX,OpCY,OpCChar; S3,使用者在InvoiceImage上分别点选票据标题的第一个字和最后一个字,利用 点选中心算子CenterOperator获得InvoiceImage上票据标题的第一个字的中心点坐标 (Name1TX,Name1TY),第一个字对应字符Name1TChar,最后一个字的中心点坐标(Name2TX, Name2TY),最后一个字对应字符Name2TChar;对InvoiceImage进行方向修正; S301,使用者在InvoiceImage上点选票据标题的第一个字,获得点选的位置坐标 (IPT1X,IPT1Y); S302,使用者在InvoiceImage上点选票据标题的最后一个字,获得点选的位置坐 标(IPT2X,IPT2Y); S303,利用CenterOperator计算,算子输入OpTX=IPT1X,OpTY=IPT1Y;算子输出 OpCX和OpCY存储到Name1TX和Name1TY之中,OpCChar存储到Name1TChar中;S304,利用 CenterOperator计算,算子输入OpTX=IPT2X,OpTY=IPT2Y;算子输出OpCX和OpCY存储到 Name2TX和Name2TY之中,pCChar存储到Name2TChar中;S305,计算InvoiceImage的方向矢量 DirectVector=(Name2TX-Name1TX,Name2TY-Name1TY); S306,计算DirectVector和矢量(Name2TX-Name1TX,0)之间的夹角存储到矢量夹 角变量sita之中; S307,如果Name2TY-Name1TY小于等于0在将InvoiceImage以(IPT1X,IPT1Y)为中 心顺时针旋转sita度,否则将InvoiceImage以(IPT1X,IPT1Y)为中心逆时针旋转sita度; S308,Name2TY=Name1TY; S309,DirectVector矢量长度DirectVectorLength=sqrt((Name2TX-Name1TX)× (Name2TX-Name1TX) (Name2TY-Name1TY)×(Name2TY-Name1TY)); S310,Name2TX=Name1TX DirectVectorLength×cos(sita); S4,如果CurrentTemplate的值不为NULL则转到S6;否则转到S5; S5,设定CorrectedImage=InvoiceImage,将方向修正后的InvoiceImage相关信 息作为标题位置参照模板表存储到TemplateTable之中,转到S7; S501,设定CorrectedImage=InvoiceImage; S502,建立一个新的行NewRow,NewRow={TemplateTa bleTypeName, TemplateTableStruct}; S503,NewRow.TemplateTableTypeName=InvoiceTypeName; S504,设定NewRow.TemplateTableStruct.PWidth=IWidth; NewRow.TemplateTableStruct.PHeight=IHeight; NewRow.TemplateTableStruct.Name1=Name1TChar; NewRow.TemplateTableStruct.Name1CX=Name1TX; NewRow.TemplateTableStruct.Name1CY=Name1TY; NewRow.TemplateTableStruct.Name2=Name2TChar; NewRow.TemplateTableStruct.Name2CX=Name2TX; NewRow.TemplateTableStruct.Name2CY=Name2TY; S505,将NewRow存储到TemplateTable表之中; 7 CN 111582222 A 说 明 书 4/7 页 S505,转到S7; S6,基于CurrentTemplate对InvoiceImage进行修正,将修正结果存储到 CorrectedImage之中; S601,如果CurrentTemplate.Name1等于Name1TChar且CurrentTemplate.Name2等 于Name2TChar则转到S602,否则转到S611; S602,CorrectedImage=新建一个宽度为CurrentTemplate .PWidth,高度为 CurrentTemplate.PHeight的白色背景图像; S603,缩放比例Bili: Bili=(CurrentTemplate .Name2CX-CurrentTemplate .Name1CX)/(Name2TX- Name1TX); S604,将InvoiceImage按照Bili的比例进行缩放; S605,dx=-(Name1TX×Bili-CurrentTemplate.Name1CX); S606,dy=-(Name1TY×Bili-CurrentTemplate.Name1CY); S607,将InvoiceImage的所有像元按X轴移动dx; S608,将InvoiceImage的所有像元按y轴移动dy; S609,将InvoiceImage中以(0,0)为起点的所有像元复制到CorrectedImage的对 应位置之中,超出CorrectedImage范围的像元不进行复制; S610,转到S612; S611,输出在点击或识别发票标题的过程中出现错误,未能进行彻底修正,设定 CorrectedImage=InvoiceImage; S7,将CorrectedImage作为结果输出。 本发明的有益效果是: 本发明对于特定的票据将基于标题位置参照模板作为参照物,自动化地逐步调整 票据方向和位置,实现了一种据图像位置精确修正方法。利用本发明的方法,使用者仅需要 在票据图像中点击票据标题的第一个字和最后一个字,本发明方法就可以自动化的对票据 位置、方向、大小进行更加精确的修正,为识别票据关键内容打下坚实基础。 附图说明 图1为本发明实施例1在方向和位置上有一定偏差的影像; 图2为本发明实施例1计算InvoiceImage的结果影像; 图3为本发明实施例1经过计算获得的结果影像。
分享到:
收藏