【全网唯一】一键玩IDE版纯本地离线文字识别插件
·
目的
一键玩是免费、方便、0基础的全中文的手机开发脚本工具。本篇文章主要讲解下一键玩IDE版TomatoOCR纯本地离线文字识别插件如何使用和集成。
准备工作
1、下载LUA语言开发脚本IDE工具
![]()
2、下载一键玩对应的TomatoOCR插件:下载插件

- 目前插件支持中英文、繁体字、日语、韩语识别;
- 支持小图、区域图和单行文字识别,准确率高达99%;
- 支持多种返回格式,json\文本\数字\自定义;
- 支持二值化;
- 支持找字返回坐标并点击;
- 超高的稳定性,速度快;
插件集成
下载插件后将名字改成TomatoOCR.apk,插件放置:

调用方式
以下代码拷贝到lua中,配置license后,点击运行,可以
local tmo_ocr = require("TomatoOCR")
tmo_ocr.init() -- 初始化可以指定apk的路径,默认加载资源下的TomatoOCR.apk
-- tmo_ocr.init(getScriptRunRootPath().."/资源/TomatoOCR.apk") --指定工程里的插件
-- tmo_ocr.init("/sdcard/TomatoOCR.apk") --指定设备里的插件
local license = "" -- 设置license,见授权码获取
local remark = “” -- 设置备注
local flag = tmo_ocr.setLicense(license, remark); -- 设置license,见授权码获取
print(flag)
----------------------注:以上代码全局只需写一次-------------------------------
function ocr_start(x1, y1, x2, y2, zi)
-- 以下方法详细介绍,见文档:方法介绍
-- 注:ch、ch-2.0、ch-3.0版可切换使用,对部分场景可适当调整
-- "ch":普通中英文识别,1.0版模型
-- "ch-2.0":普通中英文识别,2.0版模型
-- "ch-3.0":普通中英文识别,3.0版模型
-- "cht":繁体,"japan":日语,"korean":韩语
tmo_ocr.setRecType("ch-3.0")
tmo_ocr.setDetBoxType("rect") -- 调整检测模型检测文本参数- 默认"rect": 由于手机上截图文本均为矩形文本,从该版本之后均改为rect,"quad":可准确检测倾斜文本
tmo_ocr.setDetUnclipRatio(1.9) -- 调整检测模型检测文本参数 - 默认1.9: 值范围1.6-2.5之间
tmo_ocr.setRecScoreThreshold(0.3) -- 识别得分过滤 - 默认0.1,值范围0.1-0.9之间
tmo_ocr.setReturnType("json")
-- 返回类型 - 默认"json": 包含得分、坐标和文字;
-- "text":纯文字;
-- "num":纯数字;
-- 自定义输入想要返回的文本:".¥1234567890",仅只返回这些内容
tmo_ocr.setBinaryThresh(0) -- 二值化设定,非必须
tmo_ocr.setRunMode("slow") -- 默认“slow”;“fast”:小图识别上会加速,但准确率会降低,推荐用默认值“slow”
tmo_ocr.setFilterColor("", "black") -- 设置滤色值和背景色(black\white),滤色值默认是空的,详细使用见方法说明
local type = 3;
-- type=0 : 只检测
-- type=1 : 方向分类 + 识别
-- type=2 : 只识别
-- type=3 : 检测 + 识别
-- 只检测文字位置:type=0
-- 全屏识别: type=3或者不传type
-- 截取单行文字识别:type=1或者type=2
snapShot("/mnt/sdcard/test.png",x1, y1, x2, y2)
local result = tmo_ocr.ocrFile("/mnt/sdcard/test.png", type)
print(result);
if result ~="" then
-- 自行解析
-- local json_results = jsonLib.decode(result) --setReturnType为“json”时,返回的是json字符串,用jsonLib.decode解析
-- for i, json_result in ipairs(json_results) do
-- print(json_result.words)
-- print(json_result.location)
-- print(json_result.score)
end
-- 找字返回坐标,返回的是“百度”的中心点坐标,没有找到字返回“”空字符串
local point = tmo_ocr.findTapPoint(zi)
print(point)
if point ~="" then
local json_point = jsonLib.decode(point)
local center_x = json_point[1] + x1
local center_y = json_point[2] + y1
-- return {center_x, center_y} -- 需要点击,就放开这行,找字并返回中心点坐标
end
-- 找字返回坐标,返回所有的“百度”的中心点坐标,没有找到字返回“”空字符串
local points = tmo_ocr.findTapPoints(zi)
print(points)
if points ~="" then
local tmp = jsonLib.decode(points)
for i, data in ipairs(tmp) do
local words = data.words
local point = data.point
local center_x = point[1] + x1
local center_y = point[2] + y1
-- 写自己的判断逻辑
end
end
end
ocr_start(100, 100, 500, 500, "信息") -- 范围是:x1, y1, x2, y2; 找这个区域内是否有“百度”这个字
其中的方法说明如下
| 方法名 | 说明 |
| setLicense | 设置授权 |
| 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 | 默认值0,对图片进行二值化处理,非必须,正常情况下可以不用写 |
ocrFile/ocrBase64 | 两个参数,图片路径和类型,一般类型传3: type=-1 : 检测 + 方向分类 + 识别 type=0 : 只检测 type=1 : 方向分类 + 识别 type=2 : 只识别(单行识别) type=3 : 检测 + 识别 只检测文字位置:type=0 全屏识别: type=3或者不传type 截取单行文字识别:type=1或者type=2 如果识别为不到时,返回的数据为“”字符串 |
findTapPoint | 找字,返回传入字的中心点坐标,方便进行点击,找不到字时,返回“”空字符串 |
findTapPoints | 找字,找出所有相匹配的字,找不到字时,返回“”空字符串 |
完毕
相对来说,在一键玩进行插件开发还是比较困难的,官方提供的功能太少,原生插件集成无法采用直连的方式,但相比部署在服务器上,还是减少了很多资源占用情况,更加方便便捷。
更多推荐
所有评论(0)