目的
easy click是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务,节省大量人工操作的时间。easy click也包含图色功能,识别屏幕上的图像,根据图像的变化自动执行相应的操作。本篇文章主要讲解下更优秀的easy click平台TomatoOCR纯本地离线文字识别插件如何使用和集成。
准备工作
1、下载easy click的idea开发工具:IDEA 开发工具
2、下载TomatoOCR纯本地离线文字识别插件
- 目前插件支持中英文、繁体字、日语、韩语识别;
- 支持小图、区域图和单行文字识别,准确率高达99%;
- 支持多种返回格式,json\文本\数字\自定义;
- 支持增强版二值化;
- 支持找字返回坐标并点击;
- 超高的稳定性,速度快;
- 不联网、不联网、不联网;
插件集成
1、打开idea开发工具,新建项目,在工程plugins目录下添加文字识别插件
下载插件后,先改名为TomatoOCR.apk
2、拷贝js中的代码
注意:loadDex("TomatoOCR.apk"); //该行必须写在main方法下,否则无非正常加载
// ********************************************************************************************
// ********欢迎使用TomatoOCR文字识别插件,加入群【469843332】可获取最新版本!!!************
// ********************************************************************************************
function main() {
loadDex("TomatoOCR.apk"); //该行必须写在main方法下,否则无非正常加载
let rec_type = "ch-3.0";
// 注:ch、ch-2.0、ch-3.0版可切换使用,对部分场景可适当调整
// "ch":普通中英文识别,1.0版模型
// "ch-2.0":普通中英文识别,2.0版模型
// "ch-3.0":普通中英文识别,3.0版模型
// "cht":繁体,"japan":日语,"korean":韩语
var ocr = new com.tomato.ocr.ec.OCRApi(context, rec_type);
// 试用版license从群中获取或者网盘中获取
let license = ""
let flag = ocr.setLicense(license);
// flag= -1: 无效license
// flag= 0 : 过期license
// flag= 1 或 到期日期 : 试用license或正式license
// ----------------------注:以上代码全局只需写一次-------------------------------
// ----------------------注:以上代码全局只需写一次-------------------------------
// ----------------------注:以上代码全局只需写一次-------------------------------
ocr.setRecType(rec_type) // 如果需要切换语言,直接在这里设置即可
ocr.setDetBoxType("rect") // 调整检测模型检测文本参数- 默认"rect": 由于手机上截图文本均为矩形文本,从该版本之后均改为rect,"quad":可准确检测倾斜文本
ocr.setDetUnclipRatio(1.9) // 调整检测模型检测文本参数 - 默认1.9: 值范围1.8-2.5之间,可调整文本检测框大小
ocr.setRecScoreThreshold(0.3) // 识别得分过滤 - 默认0.1,值范围0.1-0.9之间
ocr.setReturnType("json")
// 返回类型 - 默认"json": 包含得分、坐标和文字;
//"text":纯文字;
//"num":纯数字;
//自定义输入想要返回的文本:".¥1234567890",仅只返回这些内容
let type = 3;
// type 可传可不传
// type=0 : 只检测
// type=1 : 方向分类 + 识别
// type=2 : 只识别
// type=3 : 检测 + 识别
// 只检测文字位置:type=0
// 全屏识别: type=3或者不传type
// 截取单行文字识别:type=1或者type=2
// 注意:注意:注意:识别不到时,返回的是""空字符串,请加上 if (result != "") 进行判断
// returnType为“json”时,返回的是json字符串,需要使用JSON.parse进行解析
// 例子一
let result1 = ocr.ocrFile("/sdcard/0.jpg", type);
logd(result1);
// 例子二
let x1 = 10
let y1 = 10
let bitmap = image.captureScreenBitmap("jpg", x1, y1, 300, 500, 95);
let result2 = ocr.ocrBitmap(bitmap,type);
logd(result2);
// 找字返回坐标,没有找到字返回“”空字符串,返回的是“百度”的中心点坐标
var point = ocr.findTapPoint("百度")
if (point != "") {
var json_point = JSON.parse(point)
var center_x = json_point[0] + x1
var center_y = json_point[1] + y1
}
//内存释放,释放插件,只需要在停止脚本的时候调用
//正式开发中可以删除该行
ocr.end()
}
main();
3、其中的方法说明如下
方法名 | 说明 |
init | 初始化 |
setRecType | 设置识别语言,默认ch-3.0: ch、ch-2.0、ch-3.0版可切换使用,对部分场景可适当调整 |
setDetBoxType | 调整检测模型检测文本参数-,默认"rect": 由于手机上截图文本均为矩形文本,从该版本之后均改为rect,"quad":可准确检测倾斜文本 |
setDetUnclipRatio | 调整检测模型检测文本参数,默认1.9: 值范围1.6-2.5之间,如果文字的检测框太小,可调整改参数,一般往大调整 |
setRecScoreThreshold | 设置识别得分过滤,默认0.1: 值范围0.1-0.9之间 |
setReturnType | 设置返回类型,默认"json",包含得分、坐标和文字; "text":纯文字; "num":纯数字; 自定义输入想要返回的文本:".¥1234567890",仅只返回这些内容 |
setBinaryThresh | 对图片进行二值化处理,非必须,正常情况下可以不用写 |
ocrFile | 两个参数,图片路径和类型,一般类型传3: type=-1 : 检测 + 方向分类 + 识别 type=0 : 只检测 type=1 : 方向分类 + 识别 type=2 : 只识别(单行识别) type=3 : 检测 + 识别 只检测文字位置:type=0 全屏识别: type=3或者不传type 截取单行文字识别:type=1或者type=2 如果识别为不到时,返回的数据为“”字符串 |
findTapPoint | 找字,返回传入字的中心点坐标,方便进行点击,找不到字时,返回[-1,-1] |
end | 释放插件,只需要在停止脚本的时候调用 |
4、识别结果
以上就是所有的运行情况。
完毕
相对来说,在easy click进行插件开发还是比较困难的,需要会原生安卓开发,本地识别全屏会相对较慢,区域识别还是非常快,相比部署在服务器上,还可以减少了很多资源占用情况,更加方便便捷。