简介:本文详细解析AutoJS OCR模块功能,涵盖基础文字识别、截图文字提取及高阶应用场景,提供完整代码示例与优化策略,助力开发者快速掌握自动化文字识别技术。
AutoJS作为一款基于JavaScript的Android自动化工具,其OCR(Optical Character Recognition)模块为开发者提供了强大的文字识别能力。该模块整合了多种图像处理与机器学习算法,能够精准识别图片中的文字内容,特别适用于自动化测试、数据采集、智能办公等场景。
相较于传统OCR方案,AutoJS OCR具有三大核心优势:
典型应用场景包括:
// 基础图片识别示例let ocr = require("ocr");let imagePath = "/sdcard/test.png";try {let result = ocr.recognize(imagePath);console.log("识别结果:", result.text);console.log("置信度:", result.confidence);} catch (e) {console.error("识别失败:", e);}
关键参数说明:
recognize()方法支持PNG/JPG/BMP格式text(识别文本)和confidence(0-1的置信度)ocr.setLanguage("eng")切换语言结合AutoJS的截图功能实现动态识别:
// 截图识别完整流程function recognizeFromScreenshot() {// 1. 获取当前屏幕截图let img = captureScreen();// 2. 保存临时文件(部分版本需要)let tempPath = "/sdcard/temp_ocr.png";images.save(img, tempPath);// 3. 执行识别let result = ocr.recognize(tempPath);// 4. 清理资源files.remove(tempPath);return result;}// 使用示例let recognition = recognizeFromScreenshot();console.log("截图内容:", recognition.text);
通过指定识别区域减少干扰:
// 区域识别示例function recognizeRegion(x, y, w, h) {let img = captureScreen();let region = images.clip(img, x, y, w, h);let tempPath = "/sdcard/region.png";images.save(region, tempPath);let result = ocr.recognize(tempPath);files.remove(tempPath);return result;}// 识别屏幕顶部通知栏文字let notificationText = recognizeRegion(0, 0, device.width, 100);
// 中英文混合识别配置ocr.setLanguage("chi_sim+eng"); // 简体中文+英文ocr.setPSMMode(6); // 设置为自动分段模式let mixedText = ocr.recognize("/sdcard/mixed.png");console.log("混合识别结果:", mixedText.text);
PSM模式说明:
// 批量识别示例function batchRecognize(imagePaths) {let results = [];for (let path of imagePaths) {results.push({path: path,text: ocr.recognize(path).text});}return results;}
// 图像预处理示例function preprocessImage(imgPath) {let img = images.read(imgPath);// 转换为灰度图let gray = images.grayscale(img);// 二值化处理(阈值128)let binary = images.threshold(gray, 128);let tempPath = "/sdcard/processed.png";images.save(binary, tempPath);return tempPath;}
images.findImage()定位文字区域
let img = captureScreen();// 使用后立即释放img.recycle();
let smallImg = images.resize(img, 0.5); // 缩小50%
ocr.setCharWhitelist("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
// 验证码识别流程function recognizeCaptcha() {// 1. 定位验证码区域(假设坐标为(100,200,300,250))let captchaImg = captureScreen().clip(100, 200, 200, 50);// 2. 预处理增强let processed = images.threshold(images.grayscale(captchaImg),150);// 3. 识别并返回结果return ocr.recognize(processed).text;}// 集成到登录流程let code = recognizeCaptcha();id("et_captcha").setText(code);
// 表格数据提取方案function extractTableData() {let screenshot = captureScreen();let tableRegion = /* 定位表格区域 */;let rows = 5; // 假设表格有5行let cols = 3; // 假设表格有3列let data = [];for (let i = 0; i < rows; i++) {let rowData = [];for (let j = 0; j < cols; j++) {let cell = images.clip(tableRegion,j * 100, // 假设列宽100pxi * 50, // 假设行高50px100, 50);rowData.push(ocr.recognize(cell).text);}data.push(rowData);}return data;}
| AutoJS版本 | OCR模块特性 | 注意事项 |
|---|---|---|
| 4.1.1以下 | 基础功能 | 需手动配置Tesseract路径 |
| 4.1.1-4.3.0 | 集成优化 | 默认支持中文识别 |
| 4.3.0+ | 性能增强 | 新增PSM模式配置 |
升级建议:
ocr.setLanguage()参数通过系统掌握AutoJS OCR模块的使用方法,开发者能够显著提升自动化项目的文字处理能力。建议从基础识别入手,逐步掌握区域识别、预处理等高级技巧,最终实现复杂场景下的高效文字提取。实际开发中应注意平衡识别精度与性能消耗,针对具体需求选择最优实现方案。