大家好,欢迎来到IT知识分享网。
目的
aardio是一种用于Windows平台的脚本编程语言,以及一个功能丰富的集成开发环境(IDE)。它结合了强大的原生Windows API访问能力和简单易学的语法。它属于易用性极强的动态语言,但也是一种混合语言,可以罕见地、非常方便地操作静态类型,因此可以直接调用 C语言、C++ 等等静态语言的 API 接口函数。但针对于该平台的文字识别插件几乎没有,本篇文章主要讲解下TomatoOCR纯本地离线文字识别插件如何使用和集成。
准备工作
1、下载aardio开发工具:aardio 官方网站
2、下载TomatoOCR纯本地离线文字识别插件:
- 目前插件支持中英文、繁体字、日语、韩语识别;
- 支持小图、区域图和单行文字识别,准确率高达99%;
- 支持多种返回格式,json\文本\数字\自定义;
- 支持二值化;
- 支持找字返回坐标并点击;
- 超高的稳定性,速度快;
- 不联网、不联网、不联网;
插件集成
1、新建项目,并将TomatoOCR.dll文件放到资源目录下:
2、双击main.aardio,打开代码,将下面的代码拷贝进去
注意:import console 必须加
// // 欢迎使用TomatoOCR文字识别插件,加入群【】可获取最新版本!!! // import win.ui; /*DSG{
{*/ mainForm = win.form(text="tmo";right=757;bottom=467;) mainForm.add() /*}}*/ import console // 加载插件 var tmo = raw.loadDll($"\res\TomatoOCR.dll"); // 初始化 init = tmo.api("init", "int()", "cdecl"); init() //setRecType = tmo.api("setRecType", "void(s)", "cdecl"); //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 = tmo.api("setDetBoxType", "void(s)", "cdecl"); setDetBoxType("rect"); // 调整检测模型检测文本参数- 默认"rect": 由于手机上截图文本均为矩形文本,从该版本之后均改为rect,"quad":可准确检测倾斜文本 setDetUnclipRatio = tmo.api("setDetUnclipRatio", "void(float)", "cdecl"); setDetUnclipRatio(1.9); // 调整检测模型检测文本参数 - 默认1.9: 值范围1.6-2.5之间 setRecScoreThreshold = tmo.api("setRecScoreThreshold", "void(float)", "cdecl"); setRecScoreThreshold(0.1); // 识别得分过滤 - 默认0.1,值范围0.1-0.9之间 setReturnType = tmo.api("setReturnType", "void(s)", "cdecl"); setReturnType("json"); // 返回类型 - 默认"json": 包含得分、坐标和文字; // "text":纯文字; // "num":纯数字; // 自定义输入想要返回的文本:".¥",仅只返回这些内容 setBinaryThresh = tmo.api("setBinaryThresh", "void(int)", "cdecl"); setBinaryThresh(100); // 二值化设定,非必须 _type = 3 // type=-1 : 检测 + 方向分类 + 识别 // type=0 : 只检测 // type=1 : 方向分类 + 识别 // type=2 : 只识别 // type=3 : 检测 + 识别 // 只检测文字位置:type=0 // 全屏识别: type=3或者不传type // 截取单行文字识别:type=1或者type=2 ocrFile = tmo.api("ocrFile", "s(s,int)", "cdecl") console.log(ocrFile("C:\\Users\\tmo\\Downloads\\001.jpg", _type)); // 找字 findTapPoint = tmo.api("findTapPoint", "s(s)", "cdecl"); //console.log(findTapPoint("子")) mainForm.show(); return win.loopMessage();
其中方法说明:
方法名 | 说明 |
init | 初始化 |
setRecType |
设置识别语言,默认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":纯数字; 自定义输入想要返回的文本:".¥",仅只返回这些内容 |
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] |
3、运行结果
完毕
相对来说,在aardio进行插件适配还是比较方便的,而且整个识别下来,占用内存也非常的小,仅仅300多M:
有需要的可以在评论区留言。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/131114.html