发表回复 
屏幕抓字生成字库工具与找字函数 v5.6
2016-04-28, 19 : 56 (这个帖子最后修改于: 2016-04-28 19 : 56 by feiyue.)
RE: 快捷抓取、查找屏幕文字/图像字符串 v4.6
@iamwyf 感谢反馈!确实我考虑不周,抓字时把鼠标移到右下角,造成了后续影响,现在纠正了这个问题。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢feiyue
2016-05-03, 10 : 33 (这个帖子最后修改于: 2016-05-03 10 : 36 by feiyue.)
Star RE: 快捷抓取、查找屏幕文字/图像字符串 v5.0
更新到v5.0,增加了第三种查找模式:边缘灰差模式。
目前网络上广泛使用拖动拼图的验证方式。由于背景图片随机,拼图又是半透明的,
要识别这种验证图片还是要考察在边缘处的灰度突变,因此推出了这种新模式。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-05-05, 11 : 08
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.0
早起作为新手入门时就看到这个作品一直不为所动 随着知识的扩展需求的增加 发现这个工具真是个神器
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-05-07, 18 : 47 (这个帖子最后修改于: 2016-05-08 01 : 56 by feiyue.)
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.2
小更新。v5.2 改进:新增后台查找,相当于把指定ID的窗口搬到前台再查找。
因此编写用于前台操作的找字找图代码不用修改就可以转到后台模式。

此模式可以让后台窗口像显示在前台一样,若想后台挂机还要自己解决后台鼠标按键的问题。
比如用 PostMessage, 0x200,, (y<<16)+x,, ahk_id %cid% 发送后台鼠标移动消息,
用 ControlClick、ControlSend 发送后台鼠标点击、按键消息。
设置适当的后台发送参数 SendMode,SetControlDelay,SetKeyDelay。

查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢feiyue
2016-05-23, 17 : 06
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.2
@feiyue 对于复杂的图形,效果很好。但是对于作为选项的空心圆圈(type为 radio的flag),重新进入链接后,经常识别不出来。比较两次进入链接的“抓取文字图像”,无论“颜色二值”还是“自动”,抓取的“文字”结果都略有不同:多个0,​少个0,“*185”改变为“193"之类。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-05-23, 18 : 25
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.2
想起来了,方便时候,我再用边缘灰差的方式,试一试吧。
另外,请问
“查找文字( 中心点X, 中心点Y, 文字, 颜色, 左右偏移W
, 上下偏移H, 返回X, 返回Y, 返回OCR结果, 容差, 后台窗口ID )”
其中的容差的概念是不匹配的个数,还是百分比,还是什么?
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-05-23, 19 : 37 (这个帖子最后修改于: 2016-05-23 19 : 38 by feiyue.)
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.2
没有用过容差吗?这个是允许误差的个数,用了这个就可以模糊识别了。
还可以同时识别多个图像,无论是否选中都能找到第一个圈。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-05-24, 08 : 54
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.2
容差用到20,还不行。
ahk信息为:
*****
360: if DllCall(&MyFunc, "int",mode, "uint",c, "int",jiange, "ptr",Scan0, "int",Stride, "int",sx, "int",sy, "int",sw, "int",sh, "ptr",&ss, "Astr",wz, "int",n, "ptr",&in, "ptr",&out) (0.95)
373: Return,0 (0.02)
023: Return,0

用的语句如下:
文字=

文字=%文字%|< >
(
_________00000000_________
_______000000000000_______
_____00000______00000_____
____0000__________0000____
___0_0______________0_0___
__000________________000__
__00__________________00__
_000__________________000_
_00____________________00_
000____________________000
00______________________00
00______________________00
00______________________00
00______________________00
00______________________00
00______________________00
000____________________000
)

if 查找文字(404,503,文字,"**50",150000,150000,X,Y,OCR,20)
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-05-30, 08 : 45
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.2
if 查找文字(395,548,文字,"*187",150000,150000,X,Y,OCR,20)仍然不行。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-05-30, 12 : 36 (这个帖子最后修改于: 2016-05-30 12 : 40 by iamwyf.)
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.2
源代码是“<INPUT onclick=setBgColor(this.parentNode.parentNode); type=radio value="" name=ChooseFlag>”,ie设置为195%的缩放,基本上找字函数只能对当次有效。如果关闭Ie再次进入同一网页,找字函数对于“ type=radio”的空心圆圈,基本上找不到。
我对比过多次进入网页后抓取的“文字=**00000**”,其中只有个别的“0存在差异,但加上容差(最高到50)仍然识别不了。三种模式+容差均测试过,关闭IE重新​进入同一网页,基本上都不能查找成功。
但是,对于上述网页的文字图片,找字函数可以成功。

源代码为“<input type="radio" value="0" name="auditCondition.orderType" />升序
”的空心圆圈,问题和上面一样,找不到。
[Image: 34g6g4x.jpg]


附件
.jpg  radio1.jpg (大小: 1.48 KB / 下载: 213)
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-05-30, 13 : 42 (这个帖子最后修改于: 2016-05-31 09 : 29 by iamwyf.)
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.2
我找到问题了:如果ie缩放为100%的情况下,那么,对于圆圈图片,找字函数是可以反复成功的。甚至在一个页面中抓取的圆圈图片,对于另外一个页面中的圆圈也能够适用。​
ie缩放为其他数值时,对于圆圈图片,在页面刷新后,经常找不到(但是复杂些的图片可以找到)。

另外,在页面缩放为100%或其他数值的的情况下,实际截取的图片,都低于选取的位置。附件中图片,在抓取时,圆圈是居中的,但抓取到的图片偏下。

我的win7 -64,双显示器,主显示器1920*1080,显示器缩放150%。

我用下面的办法,大体解决了问题,容差最高用到了50,耗时最多2秒左右:
count :=-10
loop 10
{
count +=10
文字=

文字=%文字%|< >
(
_________0000000_________
______0000000000000______
_____00000_____00000_____
____0_00_________00_0____
___0_0_____________0_0___
__0_0_______________0_0__
_000_________________000_
_000_________________000_
_00___________________00_
000___________________000
00_____________________00
00_____________________00
00_____________________00
00_____________________00
00_____________________00
00_____________________00
000___________________000
_00___________________00_
_000_________________000_
_000_________________000_
__0_0_______________0_0__
___0_0_____________0_0___
)

if 查找文字(969,504,文字,"**50",150000,150000,X,Y,OCR,count)
******


附件 缩略图
   
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-05-30, 15 : 08
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.2
(2016-05-30 09 : 59)feiyue 提到:  可以把两个图像都抓取作为字库,这样即使两个图像变化再大也能一次性找出来了。

对于缩放问题,确实抓字时缩放为多少,查找时也要这种缩放才能找到。
如果抓字时缩放100%,查找时浏览器缩放为195%,单个字库肯定找不到的。

你试试把浏览器常用的缩放百分比中,圆圈图片都抓取为字库,不是一次就
可以识别了吗?100%缩放的、150%的、195%的,自己常用的都抓取,
字库中总有一款是匹配同样的百分比的图像,那样即使灰度图像容易差几个点,
加上几个点的容错就行了。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-05-30, 15 : 49
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.2
我肯定是在相同的缩放下面进行抓字和查找的。
只不过在ie缩放为100%的情况,对于圆圈,抓字和查找的成功率高,检索速度快。
ie缩放为其他值,成功率下降极快,或者容差增加后检索速度变慢。

ps:上面100%、195%的缩放,均为ie缩放。
显示器150%缩放,是在“桌面”-右键“屏幕分辨率”-“放大或缩小文本和其他项目”选择“较大——150%”。
另外,显示器150%缩放情况下,选择“抓取文字图像”后出现的长方形,实际截取的图像,一是位置低于选取的图像,二是小于选取的图像(长方形已经选取了图像,但截取获得​的图像只能是其中大部分,无论IE缩放100%或其他值)。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-05-31, 10 : 53 (这个帖子最后修改于: 2016-06-03 10 : 54 by feiyue.)
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.2
你的电脑真奇怪,老是出状况,真不可思议。我在XP上一切正常,改天用Win7试试
(Win7也有多种版本)。你把测试网址发一下吧,尽量再现你的情况。

至于抓取文字图像,实际截取的图像小于长方形选取的图像,我在Win7上试了一下,
确实在设置显示器放大文字(150%)后,抓取的图像不仅位置不对而且范围减小了,
但恢复文字正常显示(100%)就没有这种情况。上网查了一下,对于Win7屏幕截图,
这确实是普遍现象,网上也没有解决办法。我估计微软的这种设计影响了Bitblt这个
WinApi函数的功能,显示的数据和内存数据不一致。目前我还没时间研究这个问题。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-05-31, 12 : 24
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.2
我实际使用的是公司内网,外网无法测试。
可以试试
http://www.w3school.com.cn/tiy/t.asp?f=h..._accesskey
http://www.w3school.com.cn/tiy/t.asp?f=hdom_radio
在第一个页面截取圆圈,容差为零的情况下,在上面两个页面的圆圈都能快速检索到
但是,到了下面的这个圆圈,容差最低25才能检索到,耗时1123毫秒
http://www.w3school.com.cn/tiy/t.asp?f=h..._accesskey

但是,如果选择“查看结果”的话,在三个页面,容差为0的情况下,都可以快速检索到(小于250毫秒)。

win7-64显示器150%,ie195%
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-06-03, 10 : 56
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.3
我经常更新代码,有时会引入新BUG。最近我发现一个小BUG在宽度小于等于
高度时会出错,也许这就是圆圈图像反常的原因。你下载最新的代码试试。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢feiyue
2016-06-05, 21 : 11
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.3
小更新。v5.3 改进:
容差增加为两个,分别是0、_字符的容许减少百分比。
采用新的算法,提高了带容差参数时的查找速度。
容差为默认值0时,找不到会自动使用 5% 的容差再找一次。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 2用户表示感谢feiyue
2016-06-07, 20 : 13
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.3
能不能介绍几个这个脚本典型的应用场景啊,不知道在哪里能用,感觉很强大,但是又不知道怎样才能发挥他的效能
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-06-08, 01 : 53 (这个帖子最后修改于: 2017-03-22 02 : 04 by feiyue.)
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.3
如果不编写自动操作脚本,则基本上不需要使用它。比如AHK内置命令ImageSearch我也基本没用过。

如果要编写自动操作脚本,则下面几个场景可以用得上:(有些可以用颜色检测代替但可靠性低些)
1、登录时碰到简单的数字或字母验证码,要人工填写才能下一步,这时可以用它。——自动过验证码
2、要读取某个位置的数字是多少,可以用它。还可用于自动记牌的识别。——识别数字等
3、网页自动化时,点击了链接后要等待网页出现某个文字再进行下一步,可以用它。——等待状态出现
4、网页中用相对窗口坐标也不能确保位置绝对正确,可以搜索一个独特的单色文字作为原点,
返回原点坐标(X,Y)后,其他位置可以用相对原点的坐标,即用(X+10,Y+20)形式来定位。
这种方法可以在换了电脑(分辨率一致),或在许多天后在再用时有普适性。——基于文字原点的坐标系
5、要根据网页特定位置显示的是什么文字来决定下一步操作,可以用它。——定点条件判断
6、点击、选择、粘贴等操作后为了确保正确,可以定点查找结果文字。——定点可靠性验证
7、要搜索屏幕区域指定文字在哪儿,找到后点击或其他操作。——搜索文字动态位置

查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢feiyue
2016-07-09, 11 : 06
RE: 快捷抓取、查找屏幕文字/图像字符串 v5.3
试了一下, 报错了: ==> Call to nonexistent function. ( StrReplace )
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合