开源、免费、绿色的屏幕与图像文字识别扩展库
首先感谢 https://github.com/xuncv/chineseocrlite-aardio 提供的 chineseocrlite-aardio 扩展库,让我了解到了 https://github.com/DayBreak-u/chineseocr_lite 这个优秀的开源组件。但是我在使用 chineseocrlite-aardio 时遇到一些问题,没有找到 DLL 的源代码,翻了一下 chineseocr_lite 的源码也只有 EXE 的项目,所以花了一点时间改造了一个 DLL 版本并开源(已发到 github.com ),DLL 主要用于我重新实现的 aardio 扩展库:string.ocrLite,当然也可以用于任何支持 DLL 的语言。
此 DLL使用 Unicode 路径加载文件( 可解决中文路径下崩溃的问题 ),并使用内存数据输入输出图像 —— 这样在调用DLL时可以更灵活一些。DLL 工程已经全部配置好,只要使用 VC 2017 就可以直接编译出DLL文件。也可以在 aardio 中运行 import string.ocrLite
即可自动下载安装好我生成好的DLL文件以及 aardio 扩展库源码,DLL 接口用法请参考 aardio 扩展库源码。
string.ocrLite 支持生成绿色、独立的 EXE 文件,带模型生成的EXE打包后仅 十几 MB。下面主要介绍一下在 aaardio 中的用法,详细的用法请查看 string.ocrLite 函数库文档,以下是一个简单的例子:
//string.ocrLite
import win.ui;
/*DSG{{*/
var winform = win.form(text="string.ocrLite简单演示";right=796;bottom=504)
winform.add(
button={cls="button";text="识别剪贴板图像";left=528;top=423;right=712;bottom=477;db=1;dr=1;z=2};
edit={cls="edit";left=497;top=36;right=764;bottom=403;db=1;dr=1;dt=1;edge=1;hscroll=1;multiline=1;vscroll=1;z=3};
plus={cls="plus";left=25;top=36;right=474;bottom=403;db=1;dl=1;dr=1;dt=1;notify=1;repeat="scale";z=1}
)
/*}}*/
import string.ocrLite
import string.ocrLite.defaultModels;
import win.clip;
var ocr = string.ocrLite(,true);
winform.button.oncommand = function(id,event){
var hBmp = win.clip.readBitmap()
if(!hBmp){ return; }
var bmp = gdip.bitmap(hBmp);
var ocrRet = ocr.detectBitmap(bmp);
if(ocrRet){
winform.plus.background = ocrRet.resultBitmap;
winform.edit.text = ocrRet.text;
winform.edit.text = '';
import web.json;
for i,block in table.eachIndex(ocrRet.blocks){
winform.edit.print(block.text);
winform.edit.print(web.json.stringify(block.points,false));
}
}
}
winform.plus.skin(
background = {
hover = "/res/images/btn-hover.png";
focus = "/res/images/btn-focus.jpg";
active = "/res/images/btn-active.png";
disabled = "/res/images/btn-disabled.png";
}
)
winform.plus.oncommand = function(id,event){
}
winform.show();win.loopMessage();
如果是制作自动化机器人之类的软件,识别屏幕上文字的能力就好像机器人的眼睛一样重要,尤其是现在很多无窗口界面的实现,通过 OCR 组件就可以较好的定位到界面上指定的部位进行准确的操作,大家可以试试 OCR 结合 aardio 标准库里的 winex.mouse, mouse 等可以实现非常酷的效果,另外 aardio 工具里的「探测器->窗口探测器」也会有较大的帮助(可以生成示例代码)。
最后要提醒一下大家,这个组件使用 GPL 许可证开源,GPL具有传染性,也就是使用这个组件的应用也必须使用 GPL 开放源代码。