[发明专利]一种基于标题位置参照模板的票据图像位置精确修正方法在审
申请号: | 202010422916.1 | 申请日: | 2020-05-19 |
公开(公告)号: | CN111582222A | 公开(公告)日: | 2020-08-25 |
发明(设计)人: | 牛殿峰;赵合喜;毕莹;张明辉;张永江;张娜;王秀燕;张雪;王芪;杨柏欢;王众;刘伟;孔祥靖;郭云峰;刘俊娥 | 申请(专利权)人: | 国网吉林省电力有限公司;国网吉林省电力有限公司电力科学研究院 |
主分类号: | G06K9/00 | 分类号: | G06K9/00;G06K9/32 |
代理公司: | 吉林长春新纪元专利代理有限责任公司 22100 | 代理人: | 陈宏伟 |
地址: | 130022 吉林省*** | 国省代码: | 吉林;22 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 标题 位置 参照 模板 票据 图像 精确 修正 方法 | ||
1.一种基于标题位置参照模板的票据图像位置精确修正方法,其特征在于包括以下步骤:
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;
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={TemplateTableTypeName,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表之中;
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作为结果输出。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国网吉林省电力有限公司;国网吉林省电力有限公司电力科学研究院,未经国网吉林省电力有限公司;国网吉林省电力有限公司电力科学研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010422916.1/1.html,转载请声明来源钻瓜专利网。