ocr

OCR

文字识别,ocrtessOcrocrFindView,,ocrClick,,ocrSwitchPageocrBack2Page。注意:这里都是免费的离线ocr,如果要想精确度非常高请使用在线的收费ocr版本,比如百度ocr等。
例子:
function main() {
    requestScreenShot();
    var ret = ocr(100, 100, 200, 130);
    console.log('ret:' + ret);
}

ocr

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表示像素值。
bitmap Bitmap 选填 默认为null,如果为null则使用截屏后图片,否则直接使用该位图

tessOcr

tesseractOCR,专用于识别数字和英文(注意不能识别中文,若想识别中文请用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表示像素值。
bitmap Bitmap 选填 默认为null,如果为null则使用截屏后图片,否则直接使用该位图

在线ocr

如果您对离线、免费的ocr效果不满意的话可以使用在线收费的ocr,比如百度的ocr等。下面直接给出百度ocr调用源码,注意key和secret需要自己去百度申请。
var key = '', secret = '';
function main() {
    requestScreenShot();

    // 从自定义数据中获取key。您需要去冰狐官网创建自定义数据并填入key
    key = getCustomData('custom_data_key')

    // 从自定义数据中获取secret。您需要去冰狐官网创建自定义数据并填入secret
    secret = getCustomData('custom_data_secret')

    var ocrResult = screenShot(cbDealImage)
    console.log('ocrResult:', ocrResult)
}

// 截屏处理函数,data为截屏后的png数据
function cbDealImage(data) {
    var r = base64Encode(data)
    // 注意这里不需要调用urlEncode,因为httpPost默认会自动调用urlEncode

    var ret = httpPost('https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + key '&client_secret=' + secret, null, {"Content-Type":"application/json", "Accept":"application/json"})
    if (ret.state == "success") {
        var data = JSON.parse(ret.data);
        var token = data.access_token;
        console.log('token:', token)
        var ret = httpPost('https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=' + token, {image:r}, {"Content-Type":"application/x-www-form-urlencoded"})
        console.log('req:', ret)
        if (ret.state == 'success') {
            var data = JSON.parse(ret.data)
            var result = data.words_result;
            console.log('data:', result)
            return result;
        }
    }
    return null;
}

ocrFindView

先用ocr识别文本,然后再查找匹配的文本,返回值为json对象,包含tag、text和region(left, top, width, height)三个key,如果没找到则对象的length为0,若找到则tag为匹配到的tag, text为匹配到的文本,region为匹配到文本的位置,例:{tag:'hello', text:'hello world' region:[100, 200, 30, 80]}。当页面的ui树获取不到时使用,比如游戏等。注意:第一次调用前必须先申请截屏权限
例子:
function main() {
    requestScreenShot();
    var ret = ocrFindView('txt:数据分析|txt^:首页');
    console.log('ret:' + ret);
}
参数:
参数名 类型 必填 说明
tag string 必填 目标页面的tag,注意只能为text,多个文本使用|连接,找到任意一个即可,txt:表示精确搜索text为tag的控件,txt$:表示搜索text以tag结尾的控件,txt^:表示搜索text以tag开始的控件,txt*:表示搜索text包含tag的控件。例:'txt:我的|txt:首页'。
options json object {region:null, duration:500, maxStep:5, random: false, beforeWait:0, afterWait:0, failed: null, timeout: 1000, returnAllData: false} region可以在ocr时指定区域[left, top, width, height],注意:若取值在[0, 1]之间表示比例,例:[0.5, 100, 100, 200]表示left位于屏幕x轴中点;若取值大于1表示像素值。duration表示两次搜索的间隔时间,单位毫秒。maxStep表示当搜索失败时,重搜索的最大次数。beforeWait表示在搜索前等待的时间,单位毫秒。afterWait表示在搜索完成后等待的时间,单位毫秒。failed表示搜索控件失败后调用的函数,主要用于在操作期间出现弹窗的场景。timeout指ocr的超时时间,默认1000毫秒。
bitmap Bitmap 选填 默认为null,如果为null则使用截屏后图片,否则直接使用该位图

ocrClick

ocrClick,先用ocr识别文本,然后再点击文本,返回boolean。当页面的ui树获取不到时使用,比如游戏等。注意:第一次调用前必须先申请截屏权限
例子:
function main() {
    requestScreenShot();
    var ret = ocrClick('数据分析|首页');
    console.log('ret:' + ret);
}
参数:
参数名 类型 必填 说明
tag string 必填 目标页面的tag,注意只能为text,多个文本使用|连接,找到任意一个即可,txt:表示精确搜索text为tag的控件,txt$:表示搜索text以tag结尾的控件,txt^:表示搜索text以tag开始的控件,txt*:表示搜索text包含tag的控件。例:'txt:我的|txt:首页'。
options json object {region:null, duration:500, maxStep:5, random: false, beforeWait:0, afterWait:0, failed: null, timeout: 1000} region可以在ocr时指定区域[left, top, width, height],注意:若取值在[0, 1]之间表示比例,例:[0.5, 100, 100, 200]表示left位于屏幕x轴中点;若取值大于1表示像素值。duration表示两次搜索的间隔时间,单位毫秒。maxStep表示当搜索失败时,重搜索的最大次数。beforeWait表示在搜索前等待的时间,单位毫秒。afterWait表示在搜索完成后等待的时间,单位毫秒。failed表示搜索控件失败后调用的函数,主要用于在操作期间出现弹窗的场景。timeout指ocr的超时时间,默认1000毫秒。
bitmap Bitmap 选填 默认为null,如果为null则使用截屏后图片,否则直接使用该位图

ocrSwitchPage

ocrSwitchPage,使用ocr来实现切换页面,返回boolean。当页面的ui树获取不到时使用,比如游戏等。注意:第一次调用前必须先申请截屏权限
例子:
function main() {
    requestScreenShot();
    var ret = ocrSwitchPage('查看', '数据分析|首页');
    console.log('ret:' + ret);
}
参数:
参数名 类型 必填 说明
findTag/clickPosition string/array 必填 findTag,表示需要点击的文本,注意只能为text,txt:表示精确搜索text为tag的控件,txt$:表示搜索text以tag结尾的控件,txt^:表示搜索text以tag开始的控件,txt*:表示搜索text包含tag的控件。clickPosition表示点击的目标位置信息,可以为[left, top]或者[left, top, width, height]。
checkTag string 必填 目标页面的tag,注意只能为text,多个文本使用|连接,找到任意一个即可,txt:表示精确搜索text为tag的控件,txt$:表示搜索text以tag结尾的控件,txt^:表示搜索text以tag开始的控件,txt*:表示搜索text包含tag的控件。例:'txt:我的|txt:首页'。
options json object {findRegion:null, checkRegion:null, duration:500, maxStep:5, maxCheckStep:1, random: false, beforeWait:0, afterWait:0, failed: null, timeout: 1000} findRegion和checkRegion可以在ocr时指定区域[left, top, width, height],注意:若取值在[0, 1]之间表示比例,例:[0.5, 100, 100, 200]表示left位于屏幕x轴中点;若取值大于1表示像素值。duration表示两次搜索的间隔时间,单位毫秒。maxStep表示当搜索失败时,重搜索的最大次数。maxCheckStep表示一次搜索时最多检查几次目标tag。beforeWait表示在搜索前等待的时间,单位毫秒。afterWait表示在搜索完成后等待的时间,单位毫秒。failed表示搜索控件失败后调用的函数,主要用于在操作期间出现弹窗的场景。timeout指ocr的超时时间,默认1000毫秒。注意:如果failed返回true则会立即检查2次是否到达目标页面。

ocrBack2Page

ocrBack2Page,使用ocr来实现返回指定页面,返回boolean。当页面的ui树获取不到时使用,比如游戏等。注意:第一次调用前必须先申请截屏权限
例子:
function main() {
    requestScreenShot();
    var ret = ocrBack2Page('首页');
    console.log('ret:' + ret);
}
参数:
参数名 类型 必填 说明
tag string 必填 tag,表示目标页面中的tag文本,注意只能为text,txt:表示精确搜索text为tag的控件,txt$:表示搜索text以tag结尾的控件,txt^:表示搜索text以tag开始的控件,txt*:表示搜索text包含tag的控件。
options json object {midTag:'', region:null, backFirst: true, duration:1000, maxStep:5, maxCheckStep:2, beforeWait:0, afterWait:0, failed: null, timeout:1000} midTag表示在返回目标页面过程中的中间页面上的唯一tag。backFirst表示是否先模拟点击返回按键。region可以在ocr时指定区域[left, top, width, height],注意:若取值在[0, 1]之间表示比例,例:[0.5, 100, 100, 200]表示left位于屏幕x轴中点;若取值大于1表示像素值。duration表示两次搜索的间隔时间,单位毫秒。maxStep表示当搜索失败时,重搜索的最大次数。maxCheckStep表示一次搜索时最多检查几次目标tag。beforeWait表示在搜索前等待的时间,单位毫秒。afterWait表示在搜索完成后等待的时间,单位毫秒。failed表示搜索控件失败后调用的函数,主要用于在操作期间出现弹窗的场景。timeout指ocr的超时时间,默认1000毫秒。