Skip to content

文字识别 OCR

对截图或指定区域做 OCR。匹配模式 modecontains(默认)/ exact / regex。结果对象含 textrectconfidence。截图与找图见 图片 Images,权限见 概述

getTextAndRegion(imageFile)

返回 {text, rect, confidence}[]

javascript
let screen = Images.capture();
let lines = Images.getTextAndRegion(screen);
for (let i = 0; i < lines.length; i++) {
    let item = lines[i];
    console.log(item.text, item.confidence, item.rect.left, item.rect.top);
}

getTextAndRegionInRegion(imageFile, left, top, width, height)

区域内识别,同样返回带坐标结果

javascript
let lines = Images.getTextAndRegionInRegion(Images.capture(), 0, 0, 1080, 600);
for (let i = 0; i < lines.length; i++) {
    console.log(lines[i].text, lines[i].rect.centerX(), lines[i].rect.centerY());
}

getText(imageFile)

返回拼接后的整段文字(行间换行)

javascript
let all = Images.getText(Images.capture());
console.log(all);

getTextInRegion(imageFile, left, top, width, height)

区域内拼接文字

javascript
let part = Images.getTextInRegion(Images.capture(), 0, 100, 1080, 400);
console.log(part);

ocr()

内部截屏后全图识别

javascript
let lines = Images.ocr();
console.log(lines.length, lines[0] && lines[0].text);

ocr(left, top, width, height)

截屏后对区域识别

javascript
let lines = Images.ocr(0, 0, 1080, 500);
console.log(lines);

hasText(imageFile, keyword)

是否包含关键字(contains)

javascript
let screen = Images.capture();
if (Images.hasText(screen, "登录")) {
    console.log("找到登录");
}

hasTextExact(imageFile, keyword)

是否存在整行精确匹配

javascript
if (Images.hasTextExact(Images.capture(), "确定")) {
    console.log("存在精确「确定」");
}

hasTextMatches(imageFile, regex)

是否匹配正则(行内 find)

javascript
if (Images.hasTextMatches(Images.capture(), "\\d{4,}")) {
    console.log("存在至少4位数字");
}

findText(imageFile, keyword, mode?)

返回 TextAndRegion[];mode 默认 contains

javascript
let hits = Images.findText(Images.capture(), "关注");
for (let i = 0; i < hits.length; i++) {
    console.log(hits[i].text, hits[i].confidence);
}
// 指定模式
let regHits = Images.findText(Images.capture(), "\\d+", "regex");

findTextExact(imageFile, keyword)

精确匹配文字行

javascript
let hits = Images.findTextExact(Images.capture(), "下一步");
console.log(hits.length);

findTextMatches(imageFile, regex)

正则匹配

javascript
let hits = Images.findTextMatches(Images.capture(), "¥\\d+(\\.\\d+)?");
console.log(hits);

findTextFirst(imageFile, keyword, mode?)

返回第一个匹配,或 null

javascript
let first = Images.findTextFirst(Images.capture(), "搜索");
if (first) {
    console.log(first.text, first.rect.left, first.rect.top);
}

findTextCenter(imageFile, keyword, mode?)

返回匹配文字中心点 Point,或 null

javascript
let p = Images.findTextCenter(Images.capture(), "登录");
if (p) {
    Hid.tap(p.x, p.y);
}

findTextPosition(imageFile, keyword, mode?)

返回 Rect[](兼容旧用法)

javascript
let rects = Images.findTextPosition(Images.capture(), "百度一下");
for (let i = 0; i < rects.length; i++) {
    console.log(rects[i].left, rects[i].top, rects[i].width(), rects[i].height());
}

findTextInRegion(imageFile, left, top, width, height)

兼容旧接口:区域内文字 string[]

javascript
let arr = Images.findTextInRegion(Images.capture(), 0, 0, 1080, 1920);
for (let i = 0; i < arr.length; i++) {
    console.log(arr[i]);
}

findTextInRegion(imageFile, keyword, left, top, width, height)

区域内按关键字查找,返回 TextAndRegion[]

javascript
let hits = Images.findTextInRegion(Images.capture(), "关注", 0, 200, 1080, 800);
if (hits.length > 0) {
    console.log(hits[0].text, hits[0].rect.centerX(), hits[0].rect.centerY());
}

findTextInRegion(imageFile, keyword, mode, left, top, width, height)

带匹配模式的区域查找

javascript
let hits = Images.findTextInRegion(
    Images.capture(),
    "^下一.?$",
    "regex",
    0, 0, 1080, 400
);
console.log(hits);

waitText(keyword, timeoutMs?, intervalMs?, mode?)

截屏轮询直到文字出现;超时返回 null

javascript
let hit = Images.waitText("加载完成", 10000);
if (hit) {
    console.log("出现:", hit.text);
}
// 精确匹配 + 自定义间隔
Images.waitText("完成", 8000, 300, "exact");

waitTextGone(keyword, timeoutMs?, intervalMs?, mode?)

等到文字消失,返回 boolean

javascript
if (Images.waitTextGone("加载中", 8000)) {
    console.log("加载文案已消失");
}

与 Hid 配合

javascript
Hid.ensureConnected();
Hid.clickText("登录", 5000);
Hid.waitText("完成", 8000);

详见 Hid 方法

相关页