利索能及
我要发布
收藏
专利号: 2021106315946
申请人: 浙江工业大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-08-12
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种通过java进行反向校准钢印编码的方法,其特征在于,包括如下步骤:

1)APP通过拍照获取多张照片,并将采集到的照片通过http协议传输照片给Python识别程序,识别程序完成识别后,将识别出来的编码传输给java服务端;

2)java服务端接收到Python识别程序识别的编码数据及识别次数,将获取的编码数据通过java的ArrayList中的contains方法把数据库里面的字符串和识别出来的编码数据进行对比,若无完全匹配则服务端返回false给Python识别程序;

3)Python识别程序对第二张照片进行识别,再将编码发送给java服务端,进行步骤2)操作,直到拍摄的照片全部进行匹配后,java服务端对比数据库依然没有找到完全相同的编码时,java服务端调用相似度匹配算法将识别的最后一张图片的编码与数据库编码进行相似度对比匹配;

4)相似度匹配算法对比匹配后,若匹配成功,则java服务端返回Python识别程序,则将人员工位信息以及加工识别的编码存入数据库中;若匹配失败,则返回APP最多三个相似度最高的编码进行人工选择,并进行人工录入,录入完毕后,保存到数据库;

所述步骤4)中相似度匹配算法步骤如下:

4.1)将Jaro–Winkler similarity算法放在算法的第一位,选择出得到相似度值较高的几个编码,若其中只有一个超过设定阈值,则java服务端返回Python识别程序,匹配成功;否则开始使用余弦相似度算法;

Jaro‑Winklersimilarity即在Jarosimilarity基础上进行修改,通过两字符串的相同前缀对Jarosimilarity进行修正,强调前缀的重要性;

simJ‑w=simjaro+l*p(1‑simjaro)

l为两字符串前缀相同数目;

p为缩放因子常量,它描述的是共同前缀对于相似度的贡献;p越大,表示共同前缀权重越大;最大不超过0.25;p默认取值是0.1,其中——simjaro即为Jaro相似度;

其中——|s1|,|s2|表示字符串的长度;

m表示两字符串的匹配字符数;

t表示换位数目transposition的1/2;

另外还需要一个匹配窗口,可被理解成是一个阈值,在这个阈值之内两个字符相等,认为是匹配的;超过了这个阈值,即使存在另一个字符与该字符相等,但由于它们的距离太远了,二者的相关性太低了,不能认为它们是匹配的;匹配窗口指的是Jaro算法进行字符之间比较的界限的大小,如果在这个界限范围内,来自两个不同字符串的两个字符相等,则视为匹配成功,m自增1;如果在这个界限范围内都找不到匹配的字符,则视为匹配失败;

在Jaro算法中,匹配窗口的大小如下定义:

4.2)通过余弦相似度算法,选择出得到相似度值较高的几个编码,若其中只有一个超过设定阈值,则java服务端返回Python识别程序,匹配成功;否则开始使用Levenshtein Distance算法;

余弦相似度算法,将所有的字符串视为一个空间向量,字符串中的出现过的字符视为向量中的一个分量;

余弦相似度公式:

4.3)通过LevenshteinDistance算法,选择出得到相似度值较高的几个编码,若其中只有一个超过设定阈值,则java服务端返回Python识别程序,匹配成功;否则开始使用LCS算法;

Levebshtein Distance算法,计算两个字符串之间的编辑距离;编辑距离:即字符串A转化为字符串B所需要的最少操作数,其中所包含的字符操作包括:删除一个字符;添加一个字符;修改一个字符;

两字符串相似度P(A,B)为:

P(A,B)=1‑LD(A,B)/max(|A|,|B|)

LD(A,B)表示编辑距离;

4.4)通过LCS算法选择出得到相似度值较高的几个编码,若其中只有一个超过设定阈值,则java服务端返回Python识别程序,匹配成功;

LCS算法,使用LCS算法求解两字符串的相似度的思想是通过计算两个字符串的最长子序列,来计算两个字符串之间的相似度;所述子序列,就是在一个字符串重删除任意若干项,剩余的字符序列即是该字符串的子序列;两字符串的最长子序列即是两个字符串中相同子序列中最长的一个;

根据其算出的最长子序列长度,通过以下公式计算出两字符串的相似度;

其中——A,B分别为要计算的两个字符串;LCS()函数计算两字符串的最长子序列;

A.length与B.length分别指字符串A与字符串B的长度。