Sikulix是一个开源工具,支持图片识别和图片文字识别。用在RPA(机器人流程自动化) 上一般是检查屏幕上是否有对应的图片,识别出来后进行对应的业务操作。如果你需要拿到某些图片中的文字信息,Sikulix的文字识别也能帮到你。
Sikulix有自己的IDE。工作中,我们一般用Sikulix的IDE截取要被识别的图片。Sikulix下载地址:
https://launchpad.NET/sikuli。Sikulix IDE是一个jar包,我们可以双击直接启动。这里我在使用时遇见一个问题:mac直接启动后,使用截屏无法捕捉正常屏幕。原因是Mac上我们应该使用iterm命令行窗口启动SikulixIDE jar包,启动后会有提示需要在偏好设置中允许iterm的截屏权限,我们按照提示操作即可。需要注意的一点是,启动jar包时尽量把桌面上的其它窗口都最小化,我当时启动时桌面开了好几个窗口,一直看不到提示,导致无法正常使用。如果是windows系统,双击启动IDE jar即可。
Sikulix JAVA api使用:引入依赖
<dependency>
<groupId>com.sikulix</groupId>
<artifactId>sikulixapi</artifactId>
<version>2.0.5</version>
</dependency>
简单的业务中,一般Screen类中的方法就可以满足需求。代码如下:
Sikulix识别屏幕上的图片也是有相似度分数的。我们可以设置相似度分数达到指定数值才认为是正确的图片。此时需要用到Pattern类。代码如下:
有时候桌面上可能会有多个相同的图片,我们可以借助指定图片周围的图标来确定唯一性。识别到大范围图片后,使用sikulix java api移动鼠标进行精确点击。代码如下:
识别文字:sikulix默认只支持英文识别。中文识别的话需要下载tesseract的中文数据。中文数据下载地址:
https://github.com/tesseract-ocr/tessdata。将下载的数据包放到sikulix的工作目录:Mac下目录:/Users/用户名/Library/Application Support/Sikulix/SikulixTesseract/tessdata。识别文字代码如下:
今天做个简单分享,大家点个关注吧!后面会持续分享哦