SikuliX clickText()函数突然无法精准识别文本求助
SikuliX clickText() 突然无法识别文本的排查方案
关于OCR引擎突然改变行为的可能性
- SikuliX的OCR依赖Tesseract和OpenCV,除非底层依赖文件损坏或被篡改,否则不会突然改变行为。你已经验证了tessdata目录和OpenCV配置,这个可能性较低,但可以再确认系统是否有其他Tesseract版本覆盖了SikuliX自带的组件。
Java 11 & SikuliX 2.0.5的已知问题
- SikuliX 2.0.5在Java 11环境下,存在和高DPI显示、屏幕缩放相关的OCR识别问题:如果系统显示缩放比例(比如125%、150%)被意外调整,SikuliX的屏幕捕获会出现拉伸或压缩,导致OCR失效,而外部OCR工具通常会自动适配缩放。
- 此外,该版本的Tesseract集成存在字符集默认配置异常的情况:如果系统区域设置被修改(比如从英文切换到中文),可能导致Tesseract默认字符集不匹配,即使文本清晰也无法识别。
额外排查与修复步骤
- 检查系统显示缩放比例,强制设置为100%;或者在SikuliX配置文件(
SikulixSettings.cfg)中添加Screen.useHighDPI = true,启用高DPI适配。 - 调用
clickText()时显式指定语言参数,比如clickText("目标文本", lang="eng")(中文用lang="chi_sim"),避免系统区域设置干扰。 - 使用
capture()函数截取指针附近区域并保存为图片,检查捕获的图像是否存在模糊、拉伸,确认和人眼看到的画面一致。 - 删除
\AppData\Roaming\Sikulix\SikulixTesseract目录,重启SikuliX,让它自动重新下载适配的Tesseract组件。
内容的提问来源于stack exchange,提问作者Safaa Mhirsi
相关产品推荐
相关产品推荐

