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

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

Info

Publication number
CN111582222B
CN111582222B CN202010422916.1A CN202010422916A CN111582222B CN 111582222 B CN111582222 B CN 111582222B CN 202010422916 A CN202010422916 A CN 202010422916A CN 111582222 B CN111582222 B CN 111582222B
Authority
CN
China
Prior art keywords
invoiceimage
bill
title
name
image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010422916.1A
Other languages
English (en)
Other versions
CN111582222A (zh
Inventor
牛殿峰
赵合喜
毕莹
张明辉
张永江
张娜
王秀燕
张雪
王芪
杨柏欢
王众
刘伟
孔祥靖
郭云峰
刘俊娥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Electric Power Research Institute of State Grid Jilin Electric Power Co Ltd
State Grid Jilin Electric Power Corp
Original Assignee
Electric Power Research Institute of State Grid Jilin Electric Power Co Ltd
State Grid Jilin Electric Power Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Electric Power Research Institute of State Grid Jilin Electric Power Co Ltd, State Grid Jilin Electric Power Corp filed Critical Electric Power Research Institute of State Grid Jilin Electric Power Co Ltd
Priority to CN202010422916.1A priority Critical patent/CN111582222B/zh
Publication of CN111582222A publication Critical patent/CN111582222A/zh
Application granted granted Critical
Publication of CN111582222B publication Critical patent/CN111582222B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/40Document-oriented image-based pattern recognition
    • G06V30/41Analysis of document content
    • G06V30/418Document matching, e.g. of document images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/24Aligning, centring, orientation detection or correction of the image
    • G06V10/242Aligning, centring, orientation detection or correction of the image by image rotation, e.g. by 90 degrees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Character Input (AREA)

Abstract

本发明提供一种基于标题位置参照模板的票据图像位置精确修正方法,对于特定的票据将基于标题位置参照模板作为参照物,自动化地逐步调整票据方向和位置,实现了一种据图像位置精确修正方法。利用本发明的方法,使用者仅需要在票据图像中点击票据标题的第一个字和最后一个字,本发明方法就可以自动化的对票据位置、方向、大小进行更加精确的修正,为识别票据关键内容打下坚实基础。

Description

一种基于标题位置参照模板的票据图像位置精确修正方法
技术领域:
本发明涉及图像位置校准处理技术领域,具体涉及到一种基于标题位置参照模板的票据图像位置精确修正方法。
背景技术:
当前现代财务管理过程中很多企业和单位已经将票据进行了电子化存储,如果能够识别这些票据中的具体上下文信息(如:一次购买耗材的列表,特定宾馆的费用明细)将能够形成企业财务票据内容大数据,这些数据可以为企业管理、发现财务漏洞以及廉政建设提供重要的数据支撑,因此十分有必要进行票据影像内容的识别。
当前OCR技术已经较为成熟,可以较容易的识别图像中的文字,然而票据内容不同于一般的书本内容,所需的信息来自于特定的位置区域(如:某种发票的明细固定处在票据表格的某一特定位置),我们只有正确定位了这一区域,才能保证识别到信息的准确和完备性。在票据的图像化过程中,由于拍摄的人、设备以及环境多种多样,所以收集到的票据通常有一定所位置、大小和方向的偏差;这些偏差导致我们无法准确的定位特定的区域,进而影响了图像中所需信息的获取。因此对于票据图像十分有必要对其位置、大小和方向进行细致的修正。
对于图像位置的修正,当前采用的主流方法是:一、将票据影像作为一个在特定背景下的矩形(黑背景下的白色纸票据),在识别其边界或文字排列方向之后构造可能的票据外框多边形(如在图像中票据可能呈现为平行四边形),基于该多边形和目标矩形在几何上的差距,计算旋转、缩放的程度然后进行整个图像的变换,获得最终的修正结果。这种方式可以达到较高的自动化,然而在实际工作中较难严格限制报销人的使用的票据拍摄背景和图像裁剪方式,某些情况下拍摄环境背景存在多种颜色,拍摄设备在图像边界畸变情况不一、图像文件裁剪不当以及票据内部文字本身存在多种方向,均会对以上描述的修正过程造成影响,使得以上过程很难达到“位置精确”这一目标,最终校准的图像位置会有存在随机的误差,这些误差最终会导致无法严格的确定图像中所需的区域。二、是采用纯人工的方式,人工的不断对票据进行观察和调整,这种方式虽然可以解决扫描图像存在的复杂性,但是需要大量的人工与计算机的交互迭代操作,所以耗费时间和人力成本较高,在业务量大的时候难于满足要求。
面对“位置精确”这一目标,以及多种多样的票据、背景以及拍摄条件,完全无人参与利用自动算法进行修正和完全依赖人工手段进行修正均难于完成目标,因此需要引入新的方法,引入人的决策、参照物和自动化算法票据位置的精确修正。
发明内容
本发明提供一种基于标题位置参照模板的票据图像位置精确修正方法,对于特定的票据将基于标题位置参照模板作为参照物,自动化地逐步调整票据方向和位置,实现了一种据图像位置精确修正方法。
本发明所述的一种基于标题位置参照模板的票据图像位置精确修正方法,包括以下步骤:
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作为结果输出。
本发明的有益效果是:
本发明对于特定的票据将基于标题位置参照模板作为参照物,自动化地逐步调整票据方向和位置,实现了一种据图像位置精确修正方法。利用本发明的方法,使用者仅需要在票据图像中点击票据标题的第一个字和最后一个字,本发明方法就可以自动化的对票据位置、方向、大小进行更加精确的修正,为识别票据关键内容打下坚实基础。
附图说明
图1为本发明实施例1在方向和位置上有一定偏差的影像;
图2为本发明实施例1计算InvoiceImage的结果影像;
图3为本发明实施例1经过计算获得的结果影像。
具体实施方式
通过以下实施例进一步举例描述本发明,并不以任何方式限制本发明,在不背离本发明的技术解决方案的前提下,对本发明所作的本领域普通技术人员容易实现的任何改动或改变都将落入本发明的权利要求范围之内。
实施例1
以某公司的发票为实施例:
S1,输入标题位置参照模板表TemplateTable,输入待修正影像InvoiceImage,输入InvoiceImage对应的票据的类型名称InvoiceTypeName;获取InvoiceImage对应的标题位置参照模板CurrentTemplate,InvoiceImage的宽度IWidth和高度IHeight,修正后影像CorrectedImage;
输入包括:
TemplateTable为包含多个标题位置参照模板的表
InvoiceImage为一个在方向和位置上有一定偏差的影像,如图1所示:
InvoiceTypeName为:辽宁增值税电子普通发票:
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表示空值;
通过S1获得如下结果;
CurrentTemplate内容包括:1.PWidth=810;2.PHeight=520;3.Name1=辽;4.Name1CX=274;5.Name1CY=43;6.Name2=票;7.Name2CX=542;8.Name2CY=43;
IWidth=973;IHeight=649;
CorrectedImage=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);
在S301获得(IPT1X=348,IPT1Y=71);
在S302获得(IPT2X=650,IPT2Y=67);
在S303获得(Name1TX=342,Name1TY=62,Name1TChar=辽);
在S304获得(Name2TX=654,Name2TY=74,Name2TChar=票);
在S306获得sita=2.4;
在S307计算InvoiceImage的结果如图2所示:
S308至S310计算Name2TX=646,Name2TY=62;
S4,如果CurrentTemplate的值不为NULL则转到S6;否则转到S5;
经过S4算法转到S6;
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;
经过S6计算,获得的结果为图3所示:
S7,将CorrectedImage作为结果输出:
成功实现了票据的精确修正。

Claims (1)

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作为结果输出。
CN202010422916.1A 2020-05-19 2020-05-19 一种基于标题位置参照模板的票据图像位置精确修正方法 Active CN111582222B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010422916.1A CN111582222B (zh) 2020-05-19 2020-05-19 一种基于标题位置参照模板的票据图像位置精确修正方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010422916.1A CN111582222B (zh) 2020-05-19 2020-05-19 一种基于标题位置参照模板的票据图像位置精确修正方法

Publications (2)

Publication Number Publication Date
CN111582222A CN111582222A (zh) 2020-08-25
CN111582222B true CN111582222B (zh) 2023-12-22

Family

ID=72113688

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010422916.1A Active CN111582222B (zh) 2020-05-19 2020-05-19 一种基于标题位置参照模板的票据图像位置精确修正方法

Country Status (1)

Country Link
CN (1) CN111582222B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111583158B (zh) * 2020-05-19 2022-09-23 国网吉林省电力有限公司 一种背景简化表达的票据电子影像压缩存储方法
CN112949450B (zh) * 2021-02-25 2024-01-23 北京百度网讯科技有限公司 票据处理方法、装置、电子设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005018678A (ja) * 2003-06-30 2005-01-20 Casio Comput Co Ltd 帳票データ入力処理装置、帳票データ入力処理方法及びプログラム
CN107622255A (zh) * 2017-10-12 2018-01-23 江苏鸿信系统集成有限公司 基于位置模板与语义模板的票据图像字段定位方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005018678A (ja) * 2003-06-30 2005-01-20 Casio Comput Co Ltd 帳票データ入力処理装置、帳票データ入力処理方法及びプログラム
CN107622255A (zh) * 2017-10-12 2018-01-23 江苏鸿信系统集成有限公司 基于位置模板与语义模板的票据图像字段定位方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
电网企业会计信息质量评价研究;牛殿峰;《cnki博士电子期刊》;全文 *

Also Published As

Publication number Publication date
CN111582222A (zh) 2020-08-25

Similar Documents

Publication Publication Date Title
CN111582222B (zh) 一种基于标题位置参照模板的票据图像位置精确修正方法
US8515208B2 (en) Method for document to template alignment
CN110400278B (zh) 一种图像颜色和几何畸变的全自动校正方法、装置及设备
US20040207600A1 (en) System and method for transforming an ordinary computer monitor into a touch screen
JP5387193B2 (ja) 画像処理システム、画像処理装置およびプログラム
US8831350B2 (en) Generation of document fingerprints for identification of electronic document types
CN110427853B (zh) 一种智能票据信息提取处理的方法
CN107464266A (zh) 摄像机标定参数的校正方法、装置、设备和存储介质
JP4535337B2 (ja) 登記異動情報反映装置および方法
CN107610097A (zh) 仪表定位方法、装置和终端设备
CN114648776B (zh) 一种财务报销数据处理方法和处理系统
CN116092231A (zh) 票证识别方法、装置、终端设备以及存储介质
CN114140794A (zh) 一种基于ocr的通用图像校正方法
CN113688273A (zh) 面向图形类题目的作答及判定方法和装置
CN107527369A (zh) 图像校正方法、装置、设备和计算机可读存储介质
CN116777769A (zh) 畸变图像的校正方法及装置、电子设备、存储介质
CN111445540A (zh) 一种用于rgb有色三维点云的自动配准方法
Heitzler et al. A modular process to improve the georeferencing of the Siegfried map
CN115205251A (zh) 一种光学遥感影像几何质量可用性评价方法
JP2020113247A (ja) 画像処理装置およびその制御方法、情報処理システム
CN113688834A (zh) 车票识别方法、车票识别系统及计算机可读存储介质
CN112861694A (zh) 一种基于模板的联机书写评分方法
CN111435969A (zh) 图像处理装置及其控制方法、记录介质和信息处理系统
CN118072334B (zh) 一种尺规制图纸质作业自动批改系统及方法
JP2022170154A (ja) 写真管理支援システム及びプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant