我们在编写自动化脚本过程中,经常会发现一个控件即没有text也没有id,有的甚至连控件也没有,可能就是一张图片。如果要点击的话如何实现呢?如果有文字的话此时就可以使用OCR来实现,典型的场景,比如有的app没有标准控件或者使用其他方式渲染的ui,甚至整个页面就是一张图片,此时就可以使用OCR来实现。
实现OCR需要两步:
1.请求截屏权限。因为要识别app界面中的文字,所以要先截屏。
2.调用ocr相关api实现文字识别。
OCR文字识别。返回值为数组,里面存放识别到的文本和对应的区域,区域格式为[left, top, width, height](相对屏幕的坐标,不是相对识别区域的坐标)例:[{text:'a', region:[11, 23, 10, 50]}, {text:'b', region:[111, 231, 50, 20]}]。注意:第一次调用前必须先申请截屏权限。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
left | double | 选填 | 识别区域的left,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 |
top | double | 选填 | 识别区域的top,若取值在[0, 1]之间表示比例,例:0.5表示top位于屏幕y轴中点;若取值大于1表示像素值。 |
width | double | 选填 | 识别区域的width,若取值在[0, 1]之间表示比例,例:0.5表示width为屏幕的宽度一半;若取值大于1表示像素值。 |
height | double | 选填 | 识别区域的height,若取值在[0, 1]之间表示比例,例:0.5表示height为屏幕的高度一半;若取值大于1表示像素值。 |
demo如下:
// 例子:
function main() {
requestScreenShot();
var ret = ocr(100, 100, 200, 130);
console.log('ret:' + ret);
}