ocr

OCR

文字识别,ocrtessOcrocrSwitchPageocrBack2Page。注意:这里都是免费的离线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表示像素值。

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表示像素值。

在线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;
}

ocrSwitchPage

ocrSwitchPage,使用ocr来实现切换页面,返回boolean。当页面的ui树获取不到时使用,比如游戏等。注意:第一次调用前必须先申请截屏权限
例子:
function main() {
    requestScreenShot();
    var ret = ocrSwitchPage('查看', '数据分析|首页');
    console.log('ret:' + ret);
}
参数:
参数名 类型 必填 说明
findTag/clickPosition string/array 必填 findTag,表示需要点击的文本,注意只能为text。clickPosition表示点击的目标位置信息,可以为[left, top]或者[left, top, width, height]。
checkTag string 必填 目标页面的tag,注意只能为text,多个文本使用|连接,找到任意一个即可,例:'我的|首页'。
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毫秒。

ocrBack2Page

ocrBack2Page,使用ocr来实现返回指定页面,返回boolean。当页面的ui树获取不到时使用,比如游戏等。注意:第一次调用前必须先申请截屏权限
例子:
function main() {
    requestScreenShot();
    var ret = ocrBack2Page('首页');
    console.log('ret:' + ret);
}
参数:
参数名 类型 必填 说明
tag string 必填 tag,表示目标页面中的tag文本,注意只能为text。
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毫秒。