CN105631447A - 一种识别圆形公章中文字的方法 - Google Patents
一种识别圆形公章中文字的方法 Download PDFInfo
- Publication number
- CN105631447A CN105631447A CN201510960809.3A CN201510960809A CN105631447A CN 105631447 A CN105631447 A CN 105631447A CN 201510960809 A CN201510960809 A CN 201510960809A CN 105631447 A CN105631447 A CN 105631447A
- Authority
- CN
- China
- Prior art keywords
- jdarray
- angle
- word
- radius
- data
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/60—Type of objects
- G06V20/62—Text, e.g. of license plates, overlay texts or captions on TV images
- G06V20/63—Scene text, e.g. street names
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/14—Image acquisition
- G06V30/146—Aligning or centring of the image pick-up or image-field
- G06V30/1475—Inclination or skew detection or correction of characters or of image to be recognised
- G06V30/1478—Inclination or skew detection or correction of characters or of image to be recognised of characters or characters lines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Character Input (AREA)
- Collating Specific Patterns (AREA)
Abstract
本发明涉及一种识别圆形公章中文字的方法,第1步:裁剪出一个覆盖了盖章位置的尽量小的图片1。第2步:在图片1中找圆。第3步:根据找到的圆形的圆心和半径从图片1中再次裁剪出一个只含有圆形的图片2;第4步:二值化图片2;第5步,将文字图像按顺序“拉直”;第6步:将“拉直”后的图像内容进行文字识别。本发明的有益效果为:公章中的内容虽环绕圆心看起来不是平直的,但单独看每个字,依然都是标准的印刷体,只不过每个文字都有一定的倾斜角度。本发明将这些环绕圆心的文字想办法“拉直”变为按行书写的文字,再送入通用的OCR模块,即可实现公章内容的识别,使业务系统自动识别出企业的名称,进一步提高运营商业务系统的工作效率。
Description
技术领域
本发明属于图像处理、文字识别技术领域,尤其涉及一种识别圆形公章中文字的方法。
背景技术
目前OCR(OpticalCharacterRecognition,光学字符识别)技术已经相当成熟并应用在各个领域。如手机上的各种拍摄名片即可将名片内容导入通讯录的程序、高速公路上拍摄车牌进行号牌识别的仪器、扫描文档将文档图片转化为文字的程序等等。这些应用都是借助OCR技术对相关文字图片进行分析转化为文字信息,极大地降低了人们的工作量。
电信运营商也应用了此技术来提高工作效率。如目前集团业务占电信运营商的业务比重非常高,有的电信运营商派出客户经理去企业办理集团类业务时,集团企业需要签订相关的纸质协议单,运营商的客户经理只要用手机拍摄协议单,利用OCR技术,就可将协议单上的关键信息录入运营商的后台管理系统,提高了客户经理的工作效率。同时集团客户签订的协议单作为回执保留在客户处,运营商不再需要保留纸质的协议单,节省了50%的协议单印刷量,实现了一定的节能减排。
这里存在的问题是,集团类业务需要加盖企业的公章,业务系统OCR只会识别正规的印刷体,而无法识别圆形的印章内容,也就无法从协议单上读出办理业务的企业名称,还是要靠客户经理手工输入企业名称,没有实现完全的自动化,工作效率还有待提高。
发明内容
本发明的目的在于克服现有技术存在的不足,而提供一种识别圆形公章中文字的方法,使业务系统自动识别出企业的名称,进一步提高运营商业务系统的工作效率。
本发明的目的是通过如下技术方案来完成的。这种识别圆形公章中文字的方法,步骤如下:
第1步:裁剪出一个覆盖了盖章位置的尽量小的图片1。
第2步:在图片1中,利用Hough变换找圆。
第3步:根据找到的圆形的圆心和半径从图片1中再次裁剪出一个只含有圆形的图片2
第4步:二值化图片2;
第5步,根据发明的算法将二值化后的围绕圆心的文字图像按顺序“拉直”;
第6步:将“拉直”后的图像内容送入通用OCR模块进行文字识别。
其中,除了“步骤5”外,其它步骤都是成熟的技术。简单介绍如下:
Hough变换,将图像空间内具有一定关系的像元进行聚类,寻找能把这些像元用某一解析形式联系起来的参数空间累积对应点,用来找图像中的直线和圆比较理想。
图像的二值化,就是将图像上的像素点的灰度值根据一定的阈值设置为0或255,也就是将整个图像呈现出只有黑和白的视觉效果。实际应用为便于分析,一般白色空白用0表示,黑色有效像素用1表示。
故本发明只讨论如何将二值化后的公章内圆形的文字“拉直”并重新组合为“平直”的文字。
二值化后的印章图片采用一维数组存储,图片的原点在左上角,按行存储,其中值为0表示空白像素,值为1表示黑色像素。
1,计算印章文字形成的圆圈底部和顶部到圆心的距离r1,r2;
2,计算印章文字形成的圆圈的开始和结束角度b1、b2
3,计算印章圈中每个文字的开始、结束角度a1、a2
4,根据每个文字的角度a1,a2和半径r1,r2,经过3次坐标变换,可算得“摆正”后的点阵数据
5,按顺序拼接每个“摆正”后的文字,形成“拉直”后的文字点阵数据。
下面分别介绍每一个步骤。
第一节:计算印章文字形成的圆圈底部和顶部到圆心的距离r1,r2;
圆的直角坐标圆心为(x0,y0),半径为r。
采用圆心处的极坐标分析,其和图片实际存储数据的直角坐标转换关系如下:
x=r*cos(θ)+x0;
y=y0-r*sin(θ);
设:Rsum[]数组,记录半径从1到r的圆上的,360度内整数度数对应的有效点数,数组下标为半径;
Data[]数组,存储二值化后的印章图片数据,其中值为0表示空白像素,值为1表示黑色像素;
Width为印章图片的点阵宽度;
步骤如下:
1,初始化半径变量R为1;
2,判断R是否小于印章半径r;若小于r则进入下一步,否则进入步骤10
3,初始化角度变量A为0,计数器Sum为0;
4,判断角度变量A是否小于360;若小于360则进入步骤7,否则进入步骤5
5,半径R的圆上的点数已经计算完毕,保存该半径圆上的有效点数Rsum[R]=Sum;
6,计算下一个半径R上的点数:半径R递增1,进入步骤2;
7,对当前的半径R和角度A,进行极坐标和实际存储数据的直角坐标之间的转化:x,y为直角坐标的坐标值,其中:x=R*cos(A*π/180)+x0;y=y0-R*sin(A*π/180);
8,判断公章原始数据Data[]中,该(x,y)对应的值是否为有效像素;即判断Data[y*width+x]是否为1,若为1,则计数器Sum递增1并进入下一步;否则直接进入下一步;
9,角度A递增1度,进入步骤4;
10,得到了半径从1到r的各个圆上的整数角度对应的点数,即Rsum[]数组
11,在Rsum[]中,从半径R为5开始向外遍历每个半径圆上的点数,当Rsum[R]为0时,停止遍历。此时求得的Rsum的下标R为公章中心五角星的半径;
12,继续向外遍历半径R,当Rsum[R]大于10时,停止遍历,记录此时R为r1,则r1为公章文字形成的圆圈底部的半径;
13,继续向外遍历半径R,当Rsum[R]小于10时,停止遍历,记录此时的R为r2,则r2为公章文字形成的圆圈顶部的半径;
至此,得到了印章文字形成的圆圈底部和顶部到圆心的距离r1,r2;
第二节:计算印章文字形成的圆圈的开始和结束角度b1、b2;
设:
JDArray[]为标记360度内每个角度上是否有有效点的数组。数组下标为角度,当对应角度A上无有效点时,JDArray[A]为1;否则JDArray[A]为0。
步骤如下:
1)初始化角度A为0,扫描的半径R为(r1+r2)/2;
2)判断角度A是否小于360,若小于,则继续;否则进入步骤9;
3)对当前的半径R和角度A,进行极坐标和实际存储数据的直角坐标之间的转化:x,y为直角坐标的坐标值,其中:x=R*cos(A*π/180)+x0;y=y0-R*sin(A*π/180);
4)判断公章原始数据Data[]中,该(x,y)对应的值是否为有效像素;即判断Data[y*width+x]是否为1,若为1,则角度A递增1,进入步骤2;否则进入下一步;
5)将扫描半径R向r2增长,检查是否存在有效点。设置TmpR为R;
6)判断TmpR是否小于r2,若小于r2,则进入下一步;否则说明该角度上无有效点,JDArray[A]设置为1,扫描下一个角度,角度A递增1,进入步骤2;
7)对当前的半径TmpR和角度A,进行极坐标和实际存储数据的直角坐标之间的转化:x,y为直角坐标的坐标值,其中:x=TmpR*cos(A*π/180)+x0;y=y0-TmpR*sin(A*π/180);
8)判断公章原始数据Data[]中,该(x,y)对应的值是否为有效像素;即判断Data[y*width+x]是否为1,若为1,则说明该角度上存在有效点,需要扫描下一个角度,角度A递增1,进入步骤2;否则扫描半径TmpR递增1,进入步骤6;
9)得到填充后的JDArray[],当该数组对应下标角度A上无有效点时,JDArray[A]为1;否则JDArray[A]为0;
10)遍历JDArray[],当JDArray[A]为1时,JDArray[A]=JDArray[A-1]+1;即将空白区域连接起来;显然,若JDArray[A]非0,JDArray[A+1]为0,则JDArray[A]的值为角度A前连续空白的角度数;
11)设最大的连续空白角度值JdMax为0;开始角度值JdStart为0;
12)令角度A从359度向0度后向遍历JDArray[],当JDArray[A]为0时,说明该角度为文字区域,继续遍历JDArray[];否则进入下一步;
13)判断JdMax是否小于当前的JDArray[A],若小于,则更新JdMax为JDArray[A];记录JdStart=A-JDArray[A];
14)循环变量A=A-JDArray[A],跳过连续的空白,进入第12步,继续遍历JDArray[];
15)当JDArray[]遍历结束时,此时JdStart指示文字开始的角度b1,JdStart+JdMax则指示文字结束的角度b2;
至此,得到了印章文字形成的圆圈的开始角度b1,结束角度b2
第三节:计算印章圈中每个文字的开始、结束角度a1、a2
设:
A1Array[]为文字的开始角度数组,A2Array[]为文字的结束角度数组;
Count为文字的个数;
Step为扫描经过0度的次数;
计算每个文字的角度步骤如下:
1)设置A为b1,即文字圈开始的角度;
2)判断A是否小于结束角度b2,若小于,则进入下一步;否则进入步骤7;
3)记录此时一个文字的开始角度,A1Array[Count]=A;同时设置Step为0;
4)判断JDArray[A]是否为0并且Step小于2。若条件不满足,则记录此时一个文字的结束角度A2Array[Count]=A,文字个数Count递增1,扫描角度A=A-JDArray[A],即跳过连续空白区域,进入步骤2;若条件满足,则进入下一步;
5)扫描角度A递减1;
6)判断A是否小于0,若小于,则令A为359,Step为1,进入步骤4;否则直接进入步骤4;
7)此时得到每个文字的开始角度数组A1Array[]、结束角度数组A2Array[]和文字的个数Count
至此,得到了印章中每个文字的开始角度a1数组A1Array[]、结束角度a2数组A2Array[]以及文字数量Count
第四节:根据每个文字的角度a1,a2和半径r1,r2,经过3次坐标变换,可算得“摆正”后的点阵数据
各关键点和线段介绍如下:
公章的圆心在(x2,y2)坐标系的原点;
粗体框内为倾斜的文字,其所处直角坐标系为(x,y)坐标系;
倾斜的文字左侧底部和x2轴的夹角为A1,右侧底部和x2轴的夹角为A2;
作一条射线平分文字左侧和右侧的夹角,该射线垂直于文字的(x,y)坐标系内的x轴;
圆心到文字底部即x轴的距离为r1,到文字顶部的距离为r2;
文字底部中心到y2轴的距离为L1,到x2轴的距离为L4;
文字底部宽度的一半为L2;
由于三角形的平行关系,L2,L3,L5构成一个直角三角形;
算法的目标是:求得(x,y)坐标系内的点阵数据,印章文字在该坐标系是“正”的。
这里存在4个坐标系:
1,倾斜的文字本身的坐标系(x,y);
2,(x,y)坐标系顺时针旋转θ角后变为水平的(x1,y1)坐标系;
3,(x1,y1)坐标系水平平移L1-L3,垂直平移L4+L5后变为圆心处的(x2,y2)坐标系;
4,(x2,y2)坐标系根据圆心的坐标(x0,y0)变换为(x3,y3)坐标系
(x3,y3)坐标系内存储原始的点阵数据
其中:
A1,A2为第三节求得的单个文字的开始、结束角度a1,a2;
r1,r2为第一节求得的文字圈底部和顶部到圆心处的距离;
α为A1和A2的夹角的一半,值为(A1-A2)/2
θ为(x,y)坐标系顺时针旋转到(x1,y1)坐标系的角度,值为(A1+A2-π)/2;
L1=r1*cos((A1+A2)/2);
L2=r1*tan(α);
L3=L2*cos(2π-θ);
L4=r1*sin((A1+A2)/2);
L5=L2*sin(2π-θ);
各坐标系的变换关系如下:
(x,y)到(x1,y1)的转换:
X1=x*cos(θ)-y*sin(θ);
Y1=y*cos(θ)+x*sin(θ);
(x1,y1)到(x2,y2)的转换:
X2=X1+(L1-L3);
Y2=Y1+(L4+L5);
(x2,y2)到(x3,y3)的转换:
X3=X2+x0;
Y3=-Y2+y0;
其中(x0,y0)为(x3,y3)坐标系内圆心的坐标。
(x,y)坐标系内文字的宽度为2*L2,高度为(r2-r1)。
则将(x3,y3)坐标系内倾斜的文字内容“拉直”为(x,y)坐标系内平直的文字点阵的步骤如下:
1,初始化缓冲区newData[]长度为宽度*高度,即(2*L2)*(r2-r1);
2,y从0开始,扫描每一行,遍历到文字的高度r2-r1;
3,x从0开始,遍历到文字的宽度2*L2;
4,进行三个坐标的转换:
X1=x*cos(θ)-y*sin(θ);
Y1=y*cos(θ)+x*sin(θ);
X2=X1+(L1-L3);
Y2=Y1+(L4+L5);
X3=X2+x0;
Y3=-Y2+y0;
5,点阵数据拷贝:newData[y*(2*L2)+x]=Data[Y3*Width+X3];其中Data[]为图形的原始数据;
6,x,y遍历结束,则newData中数据填充完毕。
至此,得到了一个(x,y)坐标系内,横平竖直的文字点阵数据集合newData[]。
第五节:按顺序拼接每个“摆正”后的文字,形成“拉直”后的文字点阵数据.
按照第四节的方法,根据第三节得到的A1Array[]和A2Array[]中的每个文字的角度数据,可以得到每个文字的“摆正”后的点阵数据。将这些数据按顺序拼接,即可得到连续的“拉直”后的文字点阵数据。将其输入OCR模块即可进行识别。
本发明的有益效果为:公章中的内容虽环绕圆心看起来不是平直的,但单独看每个字,依然都是标准的印刷体,只不过每个文字都有一定的倾斜角度。本发明将这些环绕圆心的文字想办法“拉直”变为按行书写的文字,再送入通用的OCR模块,即可实现公章内容的识别。
附图说明
图1是本发明的流程示意图;
图2是本发明的图片数据存储形式;
图3是拉直文字的总步骤;
图4是极坐标分析图;
图5是计算Rsum[]步骤图;
图6是计算JDArray[]步骤图;
图7是计算每个文字角度步骤图;
图8是单个文字算法分析图;
图9是印章实例;
图10是二值化后的印章文字实例;
图11是拉直后的印章文字实例。
具体实施方式
下面将结合附图对本发明做详细的介绍:
总的方案如图1所示:
第1步:裁剪出一个覆盖了盖章位置的尽量小的图片1。
第2步:在图片1中,利用Hough变换找圆。
第3步:根据找到的圆形的圆心和半径从图片1中再次裁剪出一个只含有圆形的图片2
第4步:二值化图片2;
第5步,根据发明的算法将二值化后的围绕圆心的文字图像按顺序“拉直”
第6步:将“拉直”后的图像内容送入通用OCR模块进行文字识别
本实施例上述第3步得到的图片2如图9。
第4步得到二值化后的图片如图10。
二值化后的印章图片采用一维数组存储,图片的原点在左上角,按行存储,其中值为0表示空白像素,值为1表示黑色像素。
此实施例图9公章的圆心(x0,y0)的值为(135,128),半径r为122。
图片的宽度Width为256。
总的步骤如图3:
1,计算印章文字形成的圆圈底部和顶部到圆心的距离r1,r2;
2,计算印章文字形成的圆圈的开始和结束角度b1、b2
3,计算印章圈中每个文字的开始、结束角度a1、a2
4,根据每个文字的角度a1,a2和半径r1,r2,经过3次坐标变换,可算得“摆正”后的点阵数据
5,按顺序拼接每个“摆正”后的文字,形成“拉直”后的文字点阵数据
下面分别介绍每一个步骤。
第一节:计算印章文字形成的圆圈底部和顶部到圆心的距离r1,r2;
如图4,圆的直角坐标圆心为(x0,y0),半径为r。此实施例分别为(135,128)和122。
采用圆心处的极坐标分析,其和图片实际存储数据的直角坐标转换关系如下:
x=r*cos(θ)+x0;
y=y0-r*sin(θ);
设:
Rsum[]数组,记录半径从1到r的圆上的,360度内整数度数对应的有效点数,数组下标为半径;
Data[]数组,存储二值化后的印章图片数据,按照图2的方式进行存储,其中值为0表示空白像素,值为1表示黑色像素;
Width为印章图片的点阵宽度;
步骤如下:
1)初始化半径变量R为1;
2)判断R是否小于印章半径r;若小于r则进入下一步,否则进入步骤10
3)初始化角度变量A为0,计数器Sum为0;
4)判断角度变量A是否小于360;若小于360则进入步骤7,否则进入步骤5
5)半径R的圆上的点数已经计算完毕,保存该半径圆上的有效点数Rsum[R]=Sum;
6)计算下一个半径R上的点数:半径R递增1,进入步骤2;
7)对当前的半径R和角度A,进行极坐标和实际存储数据的直角坐标之间的转化:x,y为直角坐标的坐标值,其中:x=R*cos(A*π/180)+x0;y=y0-R*sin(A*π/180);
8)判断公章原始数据Data[]中,该(x,y)对应的值是否为有效像素;即判断Data[y*width+x]是否为1,若为1,则计数器Sum递增1并进入下一步;否则直接进入下一步;
9)角度A递增1度,进入步骤4;
10)得到了半径从1到r的各个圆上的整数角度对应的点数,即Rsum[]数组
11)在Rsum[]中,从半径R为5开始向外遍历每个半径圆上的点数,当Rsum[R]为0时,停止遍历。此时求得的Rsum的下标R为公章中心五角星的半径;
12)继续向外遍历半径R,当Rsum[R]大于10时,停止遍历,记录此时R为r1,则r1为公章文字形成的圆圈底部的半径;
13)继续向外遍历半径R,当Rsum[R]小于10时,停止遍历,记录此时的R为r2,则r2为公章文字形成的圆圈顶部的半径;
根据上述步骤得到的Rsum[]值为
Rsum[1]=90
Rsum[2]=135
Rsum[3]=145
Rsum[4]=184
Rsum[5]=198
Rsum[6]=154
Rsum[7]=175
Rsum[8]=205
Rsum[9]=213
Rsum[10]=193
Rsum[11]=175
Rsum[12]=145
Rsum[13]=118
Rsum[14]=104
Rsum[15]=88
Rsum[16]=82
Rsum[17]=64
Rsum[18]=53
Rsum[19]=40
Rsum[20]=29
Rsum[21]=19
Rsum[22]=15
Rsum[23]=0
Rsum[24]=0
Rsum[25]=0
Rsum[26]=0
Rsum[27]=0
Rsum[28]=0
Rsum[29]=0
Rsum[30]=0
Rsum[31]=0
Rsum[32]=0
Rsum[33]=30
Rsum[34]=55
Rsum[35]=100
Rsum[36]=80
Rsum[37]=82
Rsum[38]=95
Rsum[39]=80
Rsum[40]=69
Rsum[41]=65
Rsum[42]=73
Rsum[43]=79
Rsum[44]=79
Rsum[45]=88
Rsum[46]=63
Rsum[47]=61
Rsum[48]=75
Rsum[49]=72
Rsum[50]=55
Rsum[51]=63
Rsum[52]=71
Rsum[53]=70
Rsum[54]=32
Rsum[55]=29
Rsum[56]=23
Rsum[57]=8
Rsum[58]=2
Rsum[59]=7
注意:实际运算时,为提高运算速度,Rsum的下标地增量为2,即半径每次递增2个像素点。
根据上述Rsum[]数据,可以得到得到印章文字形成的圆圈底部和顶部到圆心的距离r1为64,r2为114。
第二节:计算印章文字形成的圆圈的开始和结束角度b1、b2;
设:
JDArray[]为标记360度内每个角度上是否有有效点的数组。数组下标为角度,当对应角度A上无有效点时,JDArray[A]为1;否则JDArray[A]为0。
步骤如下:
1)初始化角度A为0,扫描的半径R为(r1+r2)/2;
2)判断角度A是否小于360,若小于,则继续;否则进入步骤9;
3)对当前的半径R和角度A,进行极坐标和实际存储数据的直角坐标之间的转化:x,y为直角坐标的坐标值,其中:x=R*cos(A*π/180)+x0;y=y0-R*sin(A*π/180);
4)判断公章原始数据Data[]中,该(x,y)对应的值是否为有效像素;即判断Data[y*width+x]是否为1,若为1,则角度A递增1,进入步骤2;否则进入下一步;
5)将扫描半径R向r2增长,检查是否存在有效点。设置TmpR为R;
6)判断TmpR是否小于r2,若小于r2,则进入下一步;否则说明该角度上无有效点,JDArray[A]设置为1,扫描下一个角度,角度A递增1,进入步骤2;
7)对当前的半径TmpR和角度A,进行极坐标和实际存储数据的直角坐标之间的转化:x,y为直角坐标的坐标值,其中:x=TmpR*cos(A*π/180)+x0;y=y0-TmpR*sin(A*π/180);
8)判断公章原始数据Data[]中,该(x,y)对应的值是否为有效像素;即判断Data[y*width+x]是否为1,若为1,则说明该角度上存在有效点,需要扫描下一个角度,角度A递增1,进入步骤2;否则扫描半径TmpR递增1,进入步骤6;
9)得到填充后的JDArray[],当该数组对应下标角度A上无有效点时,JDArray[A]为1;否则JDArray[A]为0;
10)遍历JDArray[],当JDArray[A]为1时,JDArray[A]=JDArray[A-1]+1;即将空白区域连接起来;显然,若JDArray[A]非0,JDArray[A+1]为0,则JDArray[A]的值为角度A前连续空白的角度数;
11)设最大的连续空白角度值JdMax为0;开始角度值JdStart为0;
12)令角度A从359度向0度后向遍历JDArray[],当JDArray[A]为0时,说明该角度为文字区域,继续遍历JDArray[];否则进入下一步;
13)判断JdMax是否小于当前的JDArray[A],若小于,则更新JdMax为JDArray[A];记录JdStart=A-JDArray[A];
14)循环变量A=A-JDArray[A],跳过连续的空白,进入第12步,继续遍历JDArray[];
15)当JDArray[]遍历结束时,此时JdStart指示文字开始的角度b1,JdStart+JdMax则指示文字结束的角度b2;
根据上述步骤得到的JDArray[]值为:
JDArray[0]=1
JDArray[1]=2
JDArray[2]=3
JDArray[3]=4
JDArray[4]=5
JDArray[5]=6
JDArray[6]=7
JDArray[7]=8
JDArray[8]=9
JDArray[9]=0
JDArray[10]=0
JDArray[11]=0
JDArray[12]=0
JDArray[13]=0
JDArray[14]=0
JDArray[15]=0
JDArray[16]=0
JDArray[17]=0
JDArray[18]=0
JDArray[19]=0
JDArray[20]=0
JDArray[21]=0
JDArray[22]=0
JDArray[23]=0
JDArray[24]=0
JDArray[25]=1
JDArray[26]=2
JDArray[27]=3
JDArray[28]=4
JDArray[29]=5
JDArray[30]=6
JDArray[31]=7
JDArray[32]=8
JDArray[33]=9
JDArray[34]=10
JDArray[35]=11
JDArray[36]=0
JDArray[37]=0
JDArray[38]=0
JDArray[39]=0
JDArray[40]=0
JDArray[41]=0
JDArray[42]=0
JDArray[43]=0
JDArray[44]=0
JDArray[45]=0
JDArray[46]=0
JDArray[47]=0
JDArray[48]=0
JDArray[49]=0
JDArray[50]=0
JDArray[51]=0
JDArray[52]=0
JDArray[53]=1
JDArray[54]=2
JDArray[55]=3
JDArray[56]=4
JDArray[57]=5
JDArray[58]=6
JDArray[59]=7
JDArray[60]=8
JDArray[61]=9
JDArray[62]=10
JDArray[63]=11
JDArray[64]=0
JDArray[65]=0
JDArray[66]=0
JDArray[67]=0
JDArray[68]=0
JDArray[69]=0
JDArray[70]=0
JDArray[71]=0
JDArray[72]=0
JDArray[73]=0
JDArray[74]=0
JDArray[75]=0
JDArray[76]=0
JDArray[77]=0
JDArray[78]=0
JDArray[79]=0
JDArray[80]=0
JDArray[81]=0
JDArray[82]=1
JDArray[83]=2
JDArray[84]=3
JDArray[85]=4
JDArray[86]=5
JDArray[87]=6
JDArray[88]=7
JDArray[89]=8
JDArray[90]=9
JDArray[91]=10
JDArray[92]=11
JDArray[93]=12
JDArray[94]=0
JDArray[95]=0
JDArray[96]=0
JDArray[97]=0
JDArray[98]=0
JDArray[99]=0
JDArray[100]=0
JDArray[101]=0
JDArray[102]=0
JDArray[103]=0
JDArray[104]=0
JDArray[105]=0
JDArray[106]=0
JDArray[107]=0
JDArray[108]=0
JDArray[109]=0
JDArray[110]=1
JDArray[111]=2
JDArray[112]=3
JDArray[113]=4
JDArray[114]=5
JDArray[115]=6
JDArray[116]=7
JDArray[117]=8
JDArray[118]=9
JDArray[119]=10
JDArray[120]=11
JDArray[121]=0
JDArray[122]=0
JDArray[123]=0
JDArray[124]=0
JDArray[125]=0
JDArray[126]=0
JDArray[127]=0
JDArray[128]=0
JDArray[129]=0
JDArray[130]=0
JDArray[131]=0
JDArray[132]=0
JDArray[133]=0
JDArray[134]=0
JDArray[135]=0
JDArray[136]=0
JDArray[137]=0
JDArray[138]=0
JDArray[139]=1
JDArray[140]=2
JDArray[141]=3
JDArray[142]=4
JDArray[143]=5
JDArray[144]=6
JDArray[145]=7
JDArray[146]=8
JDArray[147]=9
JDArray[148]=10
JDArray[149]=0
JDArray[150]=0
JDArray[151]=0
JDArray[152]=0
JDArray[153]=0
JDArray[154]=0
JDArray[155]=0
JDArray[156]=0
JDArray[157]=0
JDArray[158]=0
JDArray[159]=0
JDArray[160]=0
JDArray[161]=0
JDArray[162]=0
JDArray[163]=0
JDArray[164]=0
JDArray[165]=0
JDArray[166]=0
JDArray[167]=1
JDArray[168]=2
JDArray[169]=3
JDArray[170]=4
JDArray[171]=5
JDArray[172]=6
JDArray[173]=7
JDArray[174]=8
JDArray[175]=0
JDArray[176]=0
JDArray[177]=0
JDArray[178]=0
JDArray[179]=0
JDArray[180]=0
JDArray[181]=0
JDArray[182]=0
JDArray[183]=0
JDArray[184]=0
JDArray[185]=0
JDArray[186]=0
JDArray[187]=0
JDArray[188]=0
JDArray[189]=0
JDArray[190]=0
JDArray[191]=0
JDArray[192]=1
JDArray[193]=2
JDArray[194]=3
JDArray[195]=4
JDArray[196]=5
JDArray[197]=6
JDArray[198]=7
JDArray[199]=8
JDArray[200]=9
JDArray[201]=10
JDArray[202]=0
JDArray[203]=0
JDArray[204]=0
JDArray[205]=0
JDArray[206]=0
JDArray[207]=0
JDArray[208]=0
JDArray[209]=0
JDArray[210]=0
JDArray[211]=0
JDArray[212]=0
JDArray[213]=0
JDArray[214]=0
JDArray[215]=0
JDArray[216]=0
JDArray[217]=0
JDArray[218]=0
JDArray[219]=1
JDArray[220]=2
JDArray[221]=3
JDArray[222]=4
JDArray[223]=5
JDArray[224]=6
JDArray[225]=7
JDArray[226]=8
JDArray[227]=9
JDArray[228]=10
JDArray[229]=11
JDArray[230]=12
JDArray[231]=13
JDArray[232]=14
JDArray[233]=15
JDArray[234]=16
JDArray[235]=17
JDArray[236]=18
JDArray[237]=19
JDArray[238]=20
JDArray[239]=21
JDArray[240]=22
JDArray[241]=23
JDArray[242]=24
JDArray[243]=25
JDArray[244]=26
JDArray[245]=27
JDArray[246]=28
JDArray[247]=29
JDArray[248]=30
JDArray[249]=31
JDArray[250]=32
JDArray[251]=33
JDArray[252]=34
JDArray[253]=35
JDArray[254]=36
JDArray[255]=37
JDArray[256]=38
JDArray[257]=39
JDArray[258]=40
JDArray[259]=41
JDArray[260]=42
JDArray[261]=43
JDArray[262]=44
JDArray[263]=45
JDArray[264]=46
JDArray[265]=47
JDArray[266]=48
JDArray[267]=49
JDArray[268]=50
JDArray[269]=51
JDArray[270]=52
JDArray[271]=53
JDArray[272]=54
JDArray[273]=55
JDArray[274]=56
JDArray[275]=57
JDArray[276]=58
JDArray[277]=59
JDArray[278]=60
JDArray[279]=61
JDArray[280]=62
JDArray[281]=63
JDArray[282]=64
JDArray[283]=65
JDArray[284]=66
JDArray[285]=67
JDArray[286]=68
JDArray[287]=69
JDArray[288]=70
JDArray[289]=71
JDArray[290]=72
JDArray[291]=73
JDArray[292]=74
JDArray[293]=75
JDArray[294]=76
JDArray[295]=77
JDArray[296]=78
JDArray[297]=79
JDArray[298]=80
JDArray[299]=81
JDArray[300]=82
JDArray[301]=83
JDArray[302]=84
JDArray[303]=85
JDArray[304]=86
JDArray[305]=87
JDArray[306]=88
JDArray[307]=89
JDArray[308]=90
JDArray[309]=91
JDArray[310]=92
JDArray[311]=93
JDArray[312]=0
JDArray[313]=0
JDArray[314]=0
JDArray[315]=0
JDArray[316]=0
JDArray[317]=0
JDArray[318]=0
JDArray[319]=0
JDArray[320]=0
JDArray[321]=0
JDArray[322]=0
JDArray[323]=0
JDArray[324]=0
JDArray[325]=0
JDArray[326]=0
JDArray[327]=0
JDArray[328]=0
JDArray[329]=1
JDArray[330]=2
JDArray[331]=3
JDArray[332]=4
JDArray[333]=5
JDArray[334]=6
JDArray[335]=7
JDArray[336]=8
JDArray[337]=9
JDArray[338]=0
JDArray[339]=0
JDArray[340]=0
JDArray[341]=0
JDArray[342]=0
JDArray[343]=0
JDArray[344]=0
JDArray[345]=0
JDArray[346]=0
JDArray[347]=0
JDArray[348]=0
JDArray[349]=0
JDArray[350]=0
JDArray[351]=0
JDArray[352]=0
JDArray[353]=0
JDArray[354]=0
JDArray[355]=0
JDArray[356]=1
JDArray[357]=2
JDArray[358]=3
JDArray[359]=4
至此,得到了印章文字形成的圆圈的开始角度b1为218度,结束角度b2为311度。
第三节:计算印章圈中每个文字的开始、结束角度a1、a2
设:
A1Array[]为文字的开始角度数组,A2Array[]为文字的结束角度数组;
Count为文字的个数;
Step为扫描经过0度的次数;
计算每个文字的角度步骤如下:
1)设置A为b1,即文字圈开始的角度;
2)判断A是否小于结束角度b2,若小于,则进入下一步;否则进入步骤7;
3)记录此时一个文字的开始角度,A1Array[Count]=A;同时设置Step为0;
4)判断JDArray[A]是否为0并且Step小于2。若条件不满足,则记录此时一个文字的结束角度A2Array[Count]=A,文字个数Count递增1,扫描角度A=A-JDArray[A],即跳过连续空白区域,进入步骤2;若条件满足,则进入下一步;
5)扫描角度A递减1;
6)判断A是否小于0,若小于,则令A为359,Step为1,进入步骤4;否则直接进入步骤4;
7)此时得到每个文字的开始角度数组A1Array[]、结束角度数组A2Array[]和文字的个数Count。
根据上述步骤得到的A1Array[]和A2Array[]值为:
A1Array[0]--A2Array[0]==218--201
A1Array[1]--A2Array[1]==191--174
A1Array[2]--A2Array[2]==166--148
A1Array[3]--A2Array[3]==138--120
A1Array[4]--A2Array[4]==109--93
A1Array[5]--A2Array[5]==81--63
A1Array[6]--A2Array[6]==52--35
A1Array[7]--A2Array[7]==24--8
A1Array[8]--A2Array[8]==355--337
A1Array[9]--A2Array[9]==328--311
至此,得到了印章中每个文字的开始角度a1数组A1Array[]、结束角度a2数组A2Array[]以及文字数量Count为10。
第四节:根据每个文字的角度a1,a2和半径r1,r2,经过3次坐标变换,可算得“摆正”后的点阵数据
这里存在4个坐标系:
1,倾斜的文字本身的坐标系(x,y);
2,(x,y)坐标系顺时针旋转θ角后变为水平的(x1,y1)坐标系;
3,(x1,y1)坐标系水平平移L1-L3,垂直平移L4+L5后变为圆心处的(x2,y2)坐标系;
4,(x2,y2)坐标系根据圆心的坐标(x0,y0)变换为(x3,y3)坐标系
(x3,y3)坐标系内存储原始的点阵数据,如图4
其中:
A1,A2为第三节求得的单个文字的开始、结束角度a1,a2;即:
A1Array[0]--A2Array[0]==218--201
A1Array[1]--A2Array[1]==191--174
A1Array[2]--A2Array[2]==166--148
A1Array[3]--A2Array[3]==138--120
A1Array[4]--A2Array[4]==109--93
A1Array[5]--A2Array[5]==81--63
A1Array[6]--A2Array[6]==52--35
A1Array[7]--A2Array[7]==24--8
A1Array[8]--A2Array[8]==355--337
A1Array[9]--A2Array[9]==328--311
r1,r2为第一节求得的文字圈底部和顶部到圆心处的距离,分别为64,114。
α为A1和A2的夹角的一半,值为(A1-A2)/2
θ为(x,y)坐标系顺时针旋转到(x1,y1)坐标系的角度,值为(A1+A2-π)/2;
L1=r1*cos((A1+A2)/2);
L2=r1*tan(α);
L3=L2*cos(2π-θ);
L4=r1*sin((A1+A2)/2);
L5=L2*sin(2π-θ);
各坐标系的变换关系如下:
(x,y)到(x1,y1)的转换:
X1=x*cos(θ)-y*sin(θ);
Y1=y*cos(θ)+x*sin(θ);
(x1,y1)到(x2,y2)的转换:
X2=X1+(L1-L3);
Y2=Y1+(L4+L5);
(x2,y2)到(x3,y3)的转换:
X3=X2+x0;
Y3=-Y2+y0;
其中(x0,y0)为(x3,y3)坐标系内圆心的坐标。
(x,y)坐标系内文字的宽度为2*L2,高度为(r2-r1)。
这里分析“技”这个字(见图10中“技”的位置)其在A1Array和A2Array内的下标为5:A1Array[5]--A2Array[5]==81--63
则将(x3,y3)坐标系内倾斜的文字“技”拉直为(x,y)坐标系内平直的文字“技”的步骤如下:
1,初始化缓冲区newData[]长度为宽度*高度,即(2*L2)*(r2-r1);
2,y从0开始,扫描每一行,遍历到文字的高度r2-r1;
3,x从0开始,遍历到文字的宽度2*L2;
4,进行三个坐标的转换:
X1=x*cos(θ)-y*sin(θ);
Y1=y*cos(θ)+x*sin(θ);
X2=X1+(L1-L3);
Y2=Y1+(L4+L5);
X3=X2+x0;
Y3=-Y2+y0;
5,点阵数据拷贝:newData[y*(2*L2)+x]=Data[Y3*Width+X3];其中Data[]为图形的原始数据;
6,x,y遍历结束,则newData中数据填充完毕。
实际运算时,为了尽量避免文字两边的信息丢失,可以将文字角度向2边略微扩充4度左右,则转化为弧度制后,本例得到的数据如下:
A1=1.48,A2=1.03,r1=64,r2=114,α=0.226893,θ=-0.314159,L1=19.777088,
L2=14.775564,L3=14.052397,L4=60.867617,L5=4.565900
根据上述数据,得到了一个(x,y)坐标系内,横平竖直的“技”字点阵数据集合
newData[]。
第五节:按顺序拼接每个“摆正”后的文字,形成“拉直”后的文字点阵数据.
按照第四节的方法,根据第三节得到的A1Array[]和A2Array[]中的每个文字的角度数据,可以得到每个文字的“摆正”后的点阵数据。将这些数据按顺序拼接,即可得到连续的“拉直”后的文字点阵数据。将其输入OCR模块即可进行识别。
拉直后的数据见图11。
综上,我们使用该发明算法,找到了印章中文字的开始角度和结束角度,找到了每个文字的倾斜角度,并将印章中各个倾斜的文字“拉直”变为了“平直”的文字,变为OCR模块可直接识别的输入源,实现了公章文字的OCR识别功能。
可以理解的是,对本领域技术人员来说,对本发明的技术方案及发明构思加以等同替换或改变都应属于本发明所附的权利要求的保护范围。
Claims (7)
1.一种识别圆形公章中文字的方法,其特征在于:该方法包括如下步骤:
第1步:裁剪出一个覆盖了盖章位置的图片1;
第2步:在图片1中,利用Hough变换找圆;
第3步:根据找到的圆形的圆心和半径从图片1中再次裁剪出一个只含有圆形的图片2;
第4步:二值化图片2;
第5步,将二值化后的围绕圆心的文字图像按顺序“拉直”;
第6步:将“拉直”后的图像内容送入通用OCR模块进行文字识别。
2.根据权利要求1所述的识别圆形公章中文字的方法,其特征在于:在上述的第5步中:二值化后的印章图片采用一维数组存储,图片的原点在左上角,按行存储,其中值为0表示空白像素,值为1表示黑色像素;
第1步:计算印章文字形成的圆圈底部和顶部到圆心的距离r1,r2;
第2步:计算印章文字形成的圆圈的开始和结束角度b1、b2;
第3步:计算印章圈中每个文字的开始、结束角度a1、a2;
第4步:根据每个文字的角度a1,a2和半径r1,r2,经过3次坐标变换,可算得“摆正”后的点阵数据;
第5步:按顺序拼接每个“摆正”后的文字,形成“拉直”后的文字点阵数据。
3.根据权利要求2所述的识别圆形公章中文字的方法,其特征在于:在第1步中:
1)初始化半径变量R为1;
2)判断R是否小于印章半径r;若小于r则进入下一步,否则进入步骤10;
3)初始化角度变量A为0,计数器Sum为0;
4)判断角度变量A是否小于360;若小于360则进入步骤7,否则进入步骤5;
5)半径R的圆上的点数已经计算完毕,保存该半径圆上的有效点数Rsum[R]=Sum;
6)计算下一个半径R上的点数:半径R递增1,进入步骤2;
7)对当前的半径R和角度A,进行极坐标和实际存储数据的直角坐标之间的转化:x,y为直角坐标的坐标值,其中:x=R*cos(A*π/180)+x0;y=y0-R*sin(A*π/180);
8)判断公章原始数据Data[]中,该(x,y)对应的值是否为有效像素;即判断Data[y*width+x]是否为1,若为1,则计数器Sum递增1并进入下一步;否则直接进入下一步;
9)角度A递增1度,进入步骤4;
10)得到了半径从1到r的各个圆上的整数角度对应的点数,即Rsum[]数组;
11)在Rsum[]中,从半径R为5开始向外遍历每个半径圆上的点数,当Rsum[R]为0时,停止遍历,此时求得的Rsum的下标R为公章中心五角星的半径;
12)继续向外遍历半径R,当Rsum[R]大于10时,停止遍历,记录此时R为r1,则r1为公章文字形成的圆圈底部的半径;
13)继续向外遍历半径R,当Rsum[R]小于10时,停止遍历,记录此时的R为r2,则r2为公章文字形成的圆圈顶部的半径。
4.根据权利要求2所述的识别圆形公章中文字的方法,其特征在于:在第2步中:
1)初始化角度A为0,扫描的半径R为(r1+r2)/2;
2)判断角度A是否小于360,若小于,则继续;否则进入步骤9;
3)对当前的半径R和角度A,进行极坐标和实际存储数据的直角坐标之间的转化:x,y为直角坐标的坐标值,其中:x=R*cos(A*π/180)+x0;y=y0-R*sin(A*π/180);
4)判断公章原始数据Data[]中,该(x,y)对应的值是否为有效像素;即判断Data[y*width+x]是否为1,若为1,则角度A递增1,进入步骤2;否则进入下一步;
5)将扫描半径R向r2增长,检查是否存在有效点,设置TmpR为R;
6)判断TmpR是否小于r2,若小于r2,则进入下一步;否则说明该角度上无有效点,JDArray[A]设置为1,扫描下一个角度,角度A递增1,进入步骤2;
7)对当前的半径TmpR和角度A,进行极坐标和实际存储数据的直角坐标之间的转化:x,y为直角坐标的坐标值,其中:x=TmpR*cos(A*π/180)+x0;y=y0-TmpR*sin(A*π/180);
8)判断公章原始数据Data[]中,该(x,y)对应的值是否为有效像素;即判断Data[y*width+x]是否为1,若为1,则说明该角度上存在有效点,需要扫描下一个角度,角度A递增1,进入步骤2;否则扫描半径TmpR递增1,进入步骤6;
9)得到填充后的JDArray[],当该数组对应下标角度A上无有效点时,JDArray[A]为1;否则JDArray[A]为0;
10)遍历JDArray[],当JDArray[A]为1时,JDArray[A]=JDArray[A-1]+1;即将空白区域连接起来;显然,若JDArray[A]非0,JDArray[A+1]为0,则JDArray[A]的值为角度A前连续空白的角度数;
11)设最大的连续空白角度值JdMax为0;开始角度值JdStart为0;
12)令角度A从359度向0度后向遍历JDArray[],当JDArray[A]为0时,说明该角度为文字区域,继续遍历JDArray[];否则进入下一步;
13)判断JdMax是否小于当前的JDArray[A],若小于,则更新JdMax为JDArray[A];记录JdStart=A-JDArray[A];
14)循环变量A=A-JDArray[A],跳过连续的空白,进入第12步,继续遍历JDArray[];
15)当JDArray[]遍历结束时,此时JdStart指示文字开始的角度b1,JdStart+JdMax则指示文字结束的角度b2。
5.根据权利要求2所述的识别圆形公章中文字的方法,其特征在于:在第3步中:
1)设置A为b1,即文字圈开始的角度;
2)判断A是否小于结束角度b2,若小于,则进入下一步;否则进入步骤7;
3)记录此时一个文字的开始角度,A1Array[Count]=A;同时设置Step为0;
4)判断JDArray[A]是否为0并且Step小于2,若条件不满足,则记录此时一个文字的结束角度A2Array[Count]=A,文字个数Count递增1,扫描角度A=A-JDArray[A],即跳过连续空白区域,进入步骤2;若条件满足,则进入下一步;
5)扫描角度A递减1;
6)判断A是否小于0,若小于,则令A为359,Step为1,进入步骤4;否则直接进入步骤4;
7)此时得到每个文字的开始角度数组A1Array[]、结束角度数组A2Array[]和文字的个数Count。
6.根据权利要求2所述的识别圆形公章中文字的方法,其特征在于:在第4步中:
将(x3,y3)坐标系内倾斜的文字内容“拉直”为(x,y)坐标系内平直的文字点阵的步骤如下:
1)初始化缓冲区newData[]长度为宽度*高度,即(2*L2)*(r2-r1);
2)y从0开始,扫描每一行,遍历到文字的高度r2-r1;
3)x从0开始,遍历到文字的宽度2*L2;
4)进行三个坐标的转换:
X1=x*cos(θ)-y*sin(θ);
Y1=y*cos(θ)+x*sin(θ);
X2=X1+(L1-L3);
Y2=Y1+(L4+L5);
X3=X2+x0;
Y3=-Y2+y0;
5)点阵数据拷贝:newData[y*(2*L2)+x]=Data[Y3*Width+X3];其中Data[]为图形的原始数据;
6)x,y遍历结束,则newData中数据填充完毕;
至此,得到了一个(x,y)坐标系内,横平竖直的文字点阵数据集合newData[]。
7.根据权利要求2所述的识别圆形公章中文字的方法,其特征在于:在第5步中:按照第4步的方法,根据第3步得到的A1Array[]和A2Array[]中的每个文字的角度数据,得到每个文字的“摆正”后的点阵数据;将这些数据按顺序拼接,即可得到连续的“拉直”后的文字点阵数据,将其输入OCR模块即可进行识别。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510960809.3A CN105631447B (zh) | 2015-12-18 | 2015-12-18 | 一种识别圆形公章中文字的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510960809.3A CN105631447B (zh) | 2015-12-18 | 2015-12-18 | 一种识别圆形公章中文字的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105631447A true CN105631447A (zh) | 2016-06-01 |
CN105631447B CN105631447B (zh) | 2019-02-15 |
Family
ID=56046360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510960809.3A Active CN105631447B (zh) | 2015-12-18 | 2015-12-18 | 一种识别圆形公章中文字的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105631447B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107610138A (zh) * | 2017-10-20 | 2018-01-19 | 四川长虹电器股份有限公司 | 一种票据印章区域序列分割方法 |
CN107944452A (zh) * | 2017-12-12 | 2018-04-20 | 深圳市创业印章实业有限公司 | 一种圆形印章文字识别方法 |
CN109460757A (zh) * | 2018-11-16 | 2019-03-12 | 上海中信信息发展股份有限公司 | 印章位置识别方法及装置 |
CN110378886A (zh) * | 2019-07-22 | 2019-10-25 | 中国工商银行股份有限公司 | 图像比对方法、图像比对装置、电子设备和介质 |
CN110555875A (zh) * | 2019-07-25 | 2019-12-10 | 深圳壹账通智能科技有限公司 | 瞳孔半径的检测方法、装置、计算机设备和存储介质 |
CN110598708A (zh) * | 2019-08-08 | 2019-12-20 | 广东工业大学 | 一种街景文本目标识别检测方法 |
CN110852315A (zh) * | 2019-09-27 | 2020-02-28 | 武汉大学 | 环形文字快速识别方法及装置 |
CN111339995A (zh) * | 2020-03-16 | 2020-06-26 | 合肥闪捷信息科技有限公司 | 一种基于神经网络的敏感图像识别方法 |
CN111767911A (zh) * | 2020-06-22 | 2020-10-13 | 平安科技(深圳)有限公司 | 面向复杂环境的印章文字检测识别方法、装置及介质 |
CN111950555A (zh) * | 2020-08-17 | 2020-11-17 | 北京字节跳动网络技术有限公司 | 文本识别方法、装置、可读介质及电子设备 |
CN112381081A (zh) * | 2020-11-16 | 2021-02-19 | 深圳壹账通智能科技有限公司 | 公章文字自动识别方法、装置、计算机设备及存储介质 |
CN112766275A (zh) * | 2021-04-08 | 2021-05-07 | 金蝶软件(中国)有限公司 | 印章文字识别方法、装置、计算机设备和存储介质 |
WO2022183907A1 (zh) * | 2021-03-04 | 2022-09-09 | 杭州睿胜软件有限公司 | 图像处理方法及装置、智能发票识别设备和存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2750395C1 (ru) * | 2020-08-19 | 2021-06-28 | Общество с ограниченной ответственностью "СМАРТ ЭНДЖИНС СЕРВИС" | Способ оценки действительности документа при помощи оптического распознавания текста на изображении круглого оттиска печати/штампа на цифровом изображении документа |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002109521A (ja) * | 2000-07-25 | 2002-04-12 | Canon Inc | 文書処理装置及び方法 |
CN101162506A (zh) * | 2007-11-02 | 2008-04-16 | 北京大学 | 圆形印章的印鉴图像检索方法 |
-
2015
- 2015-12-18 CN CN201510960809.3A patent/CN105631447B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002109521A (ja) * | 2000-07-25 | 2002-04-12 | Canon Inc | 文書処理装置及び方法 |
CN101162506A (zh) * | 2007-11-02 | 2008-04-16 | 北京大学 | 圆形印章的印鉴图像检索方法 |
Non-Patent Citations (3)
Title |
---|
梁吉胜: ""圆形印章图像提取与配准方法研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
董兰芳 等: ""基于二维中垂线Hough变换的圆形印章定位算法"", 《微型机与应用》 * |
魏西 等: ""圆形印鉴自动识别方法研究"", 《专题技术与工程应用》 * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107610138A (zh) * | 2017-10-20 | 2018-01-19 | 四川长虹电器股份有限公司 | 一种票据印章区域序列分割方法 |
CN107944452B (zh) * | 2017-12-12 | 2021-07-23 | 信翼博达科技(深圳)有限公司 | 一种圆形印章文字识别方法 |
CN107944452A (zh) * | 2017-12-12 | 2018-04-20 | 深圳市创业印章实业有限公司 | 一种圆形印章文字识别方法 |
CN109460757A (zh) * | 2018-11-16 | 2019-03-12 | 上海中信信息发展股份有限公司 | 印章位置识别方法及装置 |
CN110378886A (zh) * | 2019-07-22 | 2019-10-25 | 中国工商银行股份有限公司 | 图像比对方法、图像比对装置、电子设备和介质 |
CN110378886B (zh) * | 2019-07-22 | 2021-09-10 | 中国工商银行股份有限公司 | 图像比对方法、图像比对装置、电子设备和介质 |
CN110555875A (zh) * | 2019-07-25 | 2019-12-10 | 深圳壹账通智能科技有限公司 | 瞳孔半径的检测方法、装置、计算机设备和存储介质 |
CN110598708A (zh) * | 2019-08-08 | 2019-12-20 | 广东工业大学 | 一种街景文本目标识别检测方法 |
CN110598708B (zh) * | 2019-08-08 | 2022-09-23 | 广东工业大学 | 一种街景文本目标识别检测方法 |
CN110852315A (zh) * | 2019-09-27 | 2020-02-28 | 武汉大学 | 环形文字快速识别方法及装置 |
CN111339995A (zh) * | 2020-03-16 | 2020-06-26 | 合肥闪捷信息科技有限公司 | 一种基于神经网络的敏感图像识别方法 |
CN111339995B (zh) * | 2020-03-16 | 2024-02-20 | 合肥闪捷信息科技有限公司 | 一种基于神经网络的敏感图像识别方法 |
CN111767911A (zh) * | 2020-06-22 | 2020-10-13 | 平安科技(深圳)有限公司 | 面向复杂环境的印章文字检测识别方法、装置及介质 |
CN111950555A (zh) * | 2020-08-17 | 2020-11-17 | 北京字节跳动网络技术有限公司 | 文本识别方法、装置、可读介质及电子设备 |
CN111950555B (zh) * | 2020-08-17 | 2024-02-09 | 北京字节跳动网络技术有限公司 | 文本识别方法、装置、可读介质及电子设备 |
CN112381081A (zh) * | 2020-11-16 | 2021-02-19 | 深圳壹账通智能科技有限公司 | 公章文字自动识别方法、装置、计算机设备及存储介质 |
WO2022183907A1 (zh) * | 2021-03-04 | 2022-09-09 | 杭州睿胜软件有限公司 | 图像处理方法及装置、智能发票识别设备和存储介质 |
CN112766275A (zh) * | 2021-04-08 | 2021-05-07 | 金蝶软件(中国)有限公司 | 印章文字识别方法、装置、计算机设备和存储介质 |
CN112766275B (zh) * | 2021-04-08 | 2021-09-10 | 金蝶软件(中国)有限公司 | 印章文字识别方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105631447B (zh) | 2019-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105631447A (zh) | 一种识别圆形公章中文字的方法 | |
Mohammad et al. | Optical character recognition implementation using pattern matching | |
CN110619326B (zh) | 一种基于扫描的英语试卷作文检测识别系统及方法 | |
US8830258B2 (en) | Generating strokes in real-time on an electronic paper display | |
CN110728687B (zh) | 文件图像分割方法、装置、计算机设备和存储介质 | |
US6532302B2 (en) | Multiple size reductions for image segmentation | |
CN112052845A (zh) | 图像识别方法、装置、设备及存储介质 | |
CN108830133A (zh) | 合同影像图片的识别方法、电子装置及可读存储介质 | |
CN112446259A (zh) | 图像处理方法、装置、终端和计算机可读存储介质 | |
US11494588B2 (en) | Ground truth generation for image segmentation | |
CN112464941A (zh) | 一种基于神经网络的发票识别方法和系统 | |
CN105117741A (zh) | 一种书法字风格的识别方法 | |
CN112418180A (zh) | 表格数据提取方法、装置、设备及计算机存储介质 | |
CN111126266B (zh) | 文本处理方法、文本处理系统、设备及介质 | |
CN111145124A (zh) | 一种图像倾斜的校正方法及装置 | |
CN109741273A (zh) | 一种手机拍照低质图像的自动处理与评分方法 | |
CN115909378A (zh) | 单据文本检测模型的训练方法及单据文本检测方法 | |
US8311331B2 (en) | Resolution adjustment of an image that includes text undergoing an OCR process | |
CN110516592A (zh) | 一种基于手写数字字符的识别方法 | |
CN108427954B (zh) | 一种标牌信息采集与识别系统 | |
CN114519788A (zh) | 图像处理方法、装置、电子设备及计算机可读存储介质 | |
Tse et al. | An OCR-independent character segmentation using shortest-path in grayscale document images | |
CN109800758A (zh) | 一种极大值区域检测的自然场景文字检测方法 | |
JP3476595B2 (ja) | 画像領域分割方法、および画像2値化方法 | |
CN114937274B (zh) | 基于人工智能的手写字体擦除方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |