Auto.js 是一款基于 JavaScript 的自动化工具,广泛应用于 Android 系统的自动化操作,其中文字识别功能是其核心能力之一,通过调用系统 OCR 接口或集成第三方 OCR 服务,Auto.js 可以实现界面文字提取、按钮识别、验证码识别等多种功能,本文将详细介绍 Auto.js 文字识别的代码实现方法,包括基础 OCR 调用、高级功能开发及常见问题解决方案。

基础文字识别功能实现
Auto.js 提供了 ocr 模块用于文字识别,支持系统默认 OCR 和自定义 OCR 服务,以下是基础代码示例:
// 使用系统默认 OCR 进行文字识别
function basicOCR() {
// 截取当前屏幕
let img = captureScreen();
// 调用 OCR 识别
let result = imagesocr(img);
console.log("识别结果:", result);
return result;
}
// 调用函数
basicOCR();
参数说明:
captureScreen():截取屏幕图像,返回Image对象。imagesocr(img):对图像进行文字识别,返回包含文本框和文字内容的数组。
返回值结构:
[
{
text: "识别的文字",
bounds: {left: 100, top: 200, right: 300, bottom: 250} // 文字位置坐标
}
]
区域文字识别优化
在实际应用中,通常只需识别屏幕特定区域的文字,通过 captureScreen() 的区域参数可实现精准识别:
// 识别屏幕指定区域的文字
function regionOCR() {
let region = {x: 100, y: 200, width: 500, height: 300}; // 定义识别区域
let img = captureScreen(region);
let result = imagesocr(img);
console.log("区域识别结果:", result);
return result;
}
应用场景:

- 针对固定布局的界面(如登录框、验证码区域)进行识别,减少干扰信息。
结合图像预处理提升识别率
复杂背景或低对比度图像可能影响识别效果,可通过图像预处理优化:
// 图像预处理 + OCR
function preprocessOCR() {
let img = captureScreen();
// 转为灰度图
img = images.grayscale(img);
// 二值化处理
img = images.binarize(img, 127);
// 降噪
img = images.gaussianBlur(img, 3);
let result = imagesocr(img);
console.log("预处理后识别结果:", result);
return result;
}
常用图像处理方法:
| 方法 | 功能说明 | 参数示例 |
|——————–|———————————|—————————-|
| grayscale(img) | 转为灰度图 | 无 |
| binarize(img, threshold) | 二值化处理 | threshold: 阈值(0-255) |
| gaussianBlur(img, radius) | 高斯模糊降噪 | radius: 模糊半径 |
多语言识别与自定义模型
Auto.js 支持多语言识别,可通过 lang 参数指定语言:
// 指定语言识别(如英文)
function langOCR() {
let img = captureScreen();
let result = imagesocr(img, {lang: "en"}); // lang: "en" 英文,"zh" 中文
console.log("英文识别结果:", result);
return result;
}
自定义模型:
若需识别特殊字体或专业术语,可集成第三方 OCR 模型(如 Tesseract.js),通过 HTTP 请求调用云服务:
// 调用云 OCR 服务示例(伪代码)
function cloudOCR() {
let img = captureScreen().toBase64();
http.post("https://api.example.com/ocr", {
headers: {"Content-Type": "application/json"},
body: JSON.stringify({image: img})
}, (res, err) => {
if (err) console.error("识别失败:", err);
else console.log("云识别结果:", res.body);
});
}
实战案例:自动点击识别文字
结合 click() 实现自动化操作,例如点击“登录”按钮:

// 识别文字并点击对应按钮
function clickByText(text) {
let img = captureScreen();
let result = imagesocr(img);
for (let item of result) {
if (item.text.includes(text)) {
let bounds = item.bounds;
click(bounds.left + bounds.width/2, bounds.top + bounds.height/2);
console.log("已点击:", text);
return true;
}
}
console.log("未找到:", text);
return false;
}
// 使用示例
clickByText("登录");
性能优化与错误处理
优化建议:
- 减少截图频率:结合
idle()或sleep()避免频繁截图。 - 区域限制:尽量缩小识别区域,提升速度。
- 缓存结果:对静态界面内容缓存识别结果。
错误处理:
function safeOCR() {
try {
let img = captureScreen();
if (!img) throw new Error("截图失败");
let result = imagesocr(img);
if (!result.length) throw new Error("未识别到文字");
return result;
} catch (err) {
console.error("OCR错误:", err.message);
return null;
}
}
相关问答 FAQs
Q1:Auto.js 文字识别失败的可能原因及解决方法?
A1:常见原因包括:
- OCR 服务未启用:部分 Android 系统需手动开启“文字识别”权限。
- 图像质量问题:模糊、反光或分辨率过低可能导致识别失败,可通过图像预处理优化。
- 语言不支持:默认仅支持中英文,需集成自定义模型。
解决方法:检查系统权限、调整截图参数、尝试第三方 OCR 服务。
Q2:如何提高 Auto.js 在复杂界面中的文字识别准确率?
A2:可通过以下方式提升:
- 精准定位区域:结合
id()或bounds()属性锁定目标文字区域。 - 动态阈值调整:根据界面明暗变化动态调整二值化阈值。
- 多帧融合:连续截取多帧图像合并识别,减少瞬时干扰。
- 正则过滤:对识别结果添加正则表达式校验,过滤无效内容。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/68380.html