设为首页 - 加入收藏 - 网站地图 - RSS订阅 村姑网-www.cunguer.com
当前位置:首页 > 软件开发 > 按键精灵手机助手 > 正文

按键精灵手机版文字命令中findstr ocr文字识别错误的原因和解决方法

时间:2021-02-12 07:12:39 来源:村姑网 作者:喜欢安静 阅读: 0 次
导读:按键精灵手机版findstr识别错误问题描述:在使用按键精灵手机版自带的文字识别命令时,调试输出识别到的结果发现findstr没有找到文字,也就是说识别出错了,因为我确定字库没有稳定,正常情况下是肯定可以识别到文字的。当单独对识别出错的图片手动一个字符一个字符的识...

按键精灵手机版findstr识别错误问题描述:

在使用按键精灵手机版自带的文字识别命令时,调试输出识别到的结果发现findstr没有找到文字,也就是说识别出错了,因为我确定字库没有稳定,正常情况下是肯定可以识别到文字的。当单独对识别出错的图片手动一个字符一个字符的识别的时候没有任何问题,且所有字符的点阵信息都和字库里面的一样,只有当一起识别时,返回ocr返回识别结果出错。

分析识别错误的原因:

1、因为单独一个一个识别的话,识别结果是正确的,且字库点阵信息没有发生任何变化,只有当使用findstr命令找文字的时候,ocr识别的结果才会错误,这说明不是字库的原因。

2、通过观察待识别文字,发现他们是间隔1像素的,根据之前使用大漠插件中文字识别的经验,猜测可能是因为文字间距的原因导致findstr识别错误,那么按键精灵手机助手中有没有对ocr文字识别点阵间距进行设置的命令呢?

findstr识别错误的解决方法:

通过查询按键精灵手机助手的命令手册,找到如下命令:

命令名称: SetOffsetInterval 设置点阵比对间隔
命令功能: 设置找字时的点阵比对间隔,即每一次匹配都跳过设置数量的行和列进行匹配
语法格式: SetOffsetInterval(比对间隔)
参数说明:
比对间隔: 整形数,默认为0

通过上面的命令说明,我们知道默认情况下,进行文字识别时,按键精灵手机版的文字间距设置的是0,也就是没有间距,那么我们根据具体情况观察我们要识别的文字间距情况来设置ocr文字识别时都默认间距,可能就能解决该文字。

使用 SetOffsetInterval(1)  '设置文字识别列间距,SetOffsetInterval 默认情况下,列间距为0,当遇到上面的问题的时候,可以尝试设置一下列间距看看,我这里实际上都间距应该是1,所以我就设置为1试试看。

调试运行后发现,将文字间距设置为1后,再使用findstr进行文字识别时找到来文字,识别正确了。

此外,还有一个函数:SetRowsNumber 设置特征匹配行数 :

该函数默认情况下,参数是11,也就是当你用ocr和findstr做文字识别时,默认指识别11行的点阵信息,当你字库的点阵信息大于11时,后面的都不计算在内。

比如你要识别的文字 高度是12,那么当你不使用SetRowsNumber设置识别点阵的行数时,默认情况下只比对你文字高度的前11个高度,最后一行都点阵信息会被丢弃,这样就降低了识别精准度。

使用SetOffsetInterval和SetRowsNumber都注意事项:

一定要在使用ocr、findstr前先调用SetOffsetInterval或SetRowsNumber,这样做都原因是我们要先设置文字都间隔和文字都高度,这样在使用ocr和findstr时才会按照我们都设置进行识别。如:

SetOffsetInterval(1)'设置点阵对比间隔为1,及查找前后将跳1行和列进行查找
SetRowsNumber(33) '设置后面所有找字代码找字时匹配的行数为33行
Ocr(0,0,0,0,"9f2e3f-000000",0.9)
索引值 = FindStr(0,0,2000,2000,"长安","9f2e3f-000000",1.0,intX,intY)
If intX >= 0 and intY >= 0 Then
    Tap intX,intY
End If

《按键精灵手机版文字命令中findstr ocr文字识别错误的原因和解决方法》地址:www.cunguer.com/article/375.html,本文来自村姑网,您身边的IT专家 www.cunguer.com,转载请注明出处,您的支持是我们创作的源泉~!