当前位置: 首页 > news >正文

cheese安卓版纯本地离线文字识别插件

目的

        cheese自动化平台是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务,节省大量人工操作的时间。可以采用Vscode、IDEA编写,支持Java、Python、nodejs、GO、Rust、Lua。cheese也包含图色功能,识别屏幕上的图像,根据图像的变化自动执行相应的操作。本篇文章主要讲解下更优秀的cheese平台TomatoOCR纯本地离线文字识别插件如何使用和集成。

准备工作

1、搭建cheese的idea开发环境:

        

2、下载TomatoOCR纯本地离线文字识别插件

  • 目前插件支持中英文、繁体字、日语、韩语识别;
  • 支持小图、区域图和单行文字识别,准确率高达99%;
  • 支持多种返回格式,json\文本\数字\自定义;
  • 支持增强版二值化;
  • 支持找字返回坐标并点击;
  • 超高的稳定性,速度快;
  • 不联网、不联网、不联网;

插件集成

1、打开idea开发工具,新建项目,在工程assets目录下添加文字识别插件

下载插件后,先改名为TomatoOCR.apk

2、拷贝js中的代码

注意:loadDex("TomatoOCR.apk");  //该行必须写在main方法下,否则无非正常加载

// ********************************************************************************************
// ********欢迎使用TomatoOCR文字识别插件,加入群【469843332】可获取最新版本!!!************
// ********************************************************************************************import core from 'cheese-core';const base = core.base;
const assets = core.assets;
const recordscreen = core.recordScreen;
const plugins = core.plugins;
const cls = core.cls;var tomato_ocr;
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":韩语function ocr_image() {tomato_ocr.setRecType(rec_type) // 如果需要切换语言,直接在这里设置即可tomato_ocr.setDetBoxType("rect")  // 调整检测模型检测文本参数- 默认"rect": 由于手机上截图文本均为矩形文本,从该版本之后均改为rect,"quad":可准确检测倾斜文本tomato_ocr.setDetUnclipRatio(1.9)  // 调整检测模型检测文本参数 - 默认1.9: 值范围1.8-2.5之间,可调整文本检测框大小tomato_ocr.setRecScoreThreshold(0.3)  // 识别得分过滤 - 默认0.1,值范围0.1-0.9之间tomato_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 = tomato_ocr.ocrFile("/storage/emulated/0/test.png", type);console.log(result1);// 例子二let bitmap = recordscreen.captureScreen(3, 0, 0, 300, 300)let result2 = tomato_ocr.ocrBitmap(bitmap, type);console.log(result2);// 找字返回坐标,没有找到字返回“”空字符串,返回的是“百度”的中心点坐标var point = tomato_ocr.findTapPoint("百度")if (point != "") {var json_point = JSON.parse(point)var center_x = json_point[0] + x1var center_y = json_point[1] + y1}
}function run() {if (recordscreen.requestPermission(3)) {console.log("请求成功")}if (assets.copy("TomatoOCR.apk", "/storage/emulated/0/TomatoOCR.apk")) {console.log("复制成功");} else {console.log("复制失败");}if (plugins.install("/storage/emulated/0/TomatoOCR.apk")) {plugins.loadLibrary("ocr")var tmo = cls.findClass("com.tomato.ocr.cheese.OCRApi")tomato_ocr = tmo.new().objtomato_ocr.init(plugins.createContext(), rec_type)// 试用版license从群中获取或者网盘中获取var flag = tomato_ocr.setLicense("")// flag= -1: 无效license// flag= 0 : 过期license// flag= 1 或 到期日期 : 试用license或正式licenseconsole.log(flag);console.log("插件加载成功")}ocr_image();
}run()

3、其中的方法说明如下

方法名说明
init初始化
setRecType

设置识别语言,默认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":韩语

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

找字,返回传入字的中心点坐标,方便进行点击,找不到字时,返回“”空字符串

end释放插件,只需要在停止脚本的时候调用

4、识别结果

以上就是所有的运行情况。

完毕

        相对来说,在cheese进行插件开发还是比较困难的,需要会原生安卓开发,本地识别全屏会相对较慢,区域识别还是非常快,相比部署在服务器上,还可以减少了很多资源占用情况,更加方便便捷。

相关文章:

  • Python批量处理客户明细表格数据,挖掘更大价值
  • DDL 超时,应该如何解决 | OceanBase 用户问题集萃
  • 指令个人记录
  • 安卓使用memtester进行内存压力测试
  • Python绘图库----turtle(海龟)
  • Sui Bridge今日正式上线Sui主网
  • Recaptcha2 图像识别 API 对接说明
  • 在矩池云使用 Llama-3.2-11B-Vision 详细指南
  • 开放式耳机究竟是不是智商税?百元蓝牙耳机2024推荐指南
  • 常见的计算机网络协议
  • Next.js 14 使用 react-md-editor 编辑器 并更改背景颜色
  • VUE a-table 动态拖动修改列宽+固定列
  • Unity XR 环境检测
  • Trimble隧道测量软件为您解锁新深度
  • 车视界系统小程序的设计
  • 【Leetcode】101. 对称二叉树
  • @angular/forms 源码解析之双向绑定
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Akka系列(七):Actor持久化之Akka persistence
  • centos安装java运行环境jdk+tomcat
  • Java应用性能调优
  • Odoo domain写法及运用
  • PHP 小技巧
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 从伪并行的 Python 多线程说起
  • ------- 计算机网络基础
  • 前端路由实现-history
  • 人脸识别最新开发经验demo
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 三分钟教你同步 Visual Studio Code 设置
  • 微信小程序开发问题汇总
  • 正则表达式小结
  • 白色的风信子
  • ######## golang各章节终篇索引 ########
  • (20)docke容器
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (javaweb)Http协议
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (七)Flink Watermark
  • (四)鸿鹄云架构一服务注册中心
  • (一)Linux+Windows下安装ffmpeg
  • (一)VirtualBox安装增强功能
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)scrum常见工具列表
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .CSS-hover 的解释
  • .net 7 上传文件踩坑
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Core Web APi类库如何内嵌运行?
  • .net中应用SQL缓存(实例使用)
  • .so文件(linux系统)
  • ;号自动换行
  • [000-01-018].第3节:Linux环境下ElasticSearch环境搭建
  • [20170705]diff比较执行结果的内容.txt
  • [3]Opengl ES着色器