[JavaScript] 纯文本查看 复制代码 import win.ui;
import win.util.tray;
import win.clip;
import console
import fsys.ini;
import fsys;
/*DSG{{*/
var winform = win.form(text="调用微信 OCR";left=-2;top=-2;right=198;bottom=209;topmost=1)
winform.add(
btnOcr={cls="button";text="提取图像文本";left=107;top=180;right=193;bottom=209;db=1;dl=1;dr=1;z=2};
combobox={cls="combobox";left=14;top=182;right=96;bottom=202;edge=1;items={"微信","百度"};mode="dropdown";z=3};
edit={cls="edit";left=10;top=6;right=194;bottom=177;db=1;dl=1;dr=1;dt=1;edge=1;hscroll=1;multiline=1;vscroll=1;z=1}
)
/*}}*/
import win.ui.atom;
var atom,hwnd/*冲突窗口的句柄,该函数会自动激活此窗口*/ = winform.atom("DB0BDB54-F944-4609-8A1A-25CBAE612166");
if(!atom){
/*为窗口设置原子值可以避免一个程序重复运行多个实例*/
win.quitMessage(); return;
}
import process.wxOcr;
var ocr = process.wxOcr();
if(!ocr) error("系统未安装微信");
//窗体接受拖放
::Shell32.DragAcceptFiles(winform.hwnd,true);
var ini=fsys.ini(fsys.getSpecial(0x1a /*_CSIDL_APPDATA*/)++"\OCR.ini");
var sec = ini.getSection("config");
if(!sec.apikey || !sec.secretkey){
sec.apikey = "";
sec.secretkey = "";
sec.save()
}
winform.apikey = ini.read("config","apikey");
winform.secretkey = ini.read("config","secretkey");
var orc = function(winform,image,data){
import baidu.client;
var http = baidu.client();
http.setAuth( data.apikey,data.secretkey )
//OCR识别接口
var ocr = http.api("https://aip.baidubce.com/rest/2.0/ocr/v1/");
var result = ocr.accurate_basic(image = image);
if(result.words_result){
for i,v in table.eachIndex(result.words_result){
if(winform.chkEnableLinefeed.checked){
winform.edit.appendText(v.words);
} else {
winform.edit.appendText(v.words++'\r\n');
}
}
} else {
winform.msgErr("密钥错误,认证失败!",1000)
}
winform.btnOcr.disabledText = null;
}
ocrResult = function(bmp){
import gdip.bitmap
var img = gdip.bitmap(bmp);
var buffer = img.saveToBuffer();
win.msgbox(buffer)
if(#winform.apikey && #winform.secretkey){
winform.btnOcr.disabledText = '\uF110';
thread.invoke( orc,winform,buffer,{apikey=winform.apikey;secretkey=winform.secretkey} );
} else {
winform.msgErr("密钥未配置,请配置后重启软件",1000)
}
}
//按钮事件
winform.btnOcr.oncommand = function(id,event){
winform.btnOcr.disabledText = "识别中";
winform.edit.value=""
//屏幕选区
import mouse.screenArea;
var screenArea = mouse.screenArea();
//保存屏幕选区
screenArea.onSelectionChanged = function(rc){
import gdip.snap;
var hbmp = gdip.snap(screenArea.hwnd,rc.xywh());
hbmp.save("/~~~~ocr.jpg",80);
owner.close();
}
screenArea.doModal();
var fullText = "";
if(winform.combobox.selIndex = 1){
//识别文本
ocr.sendRquest("/~~~~ocr.jpg",
function(mmojoOcrResponse){
//识别结果
var singleResult = mmojoOcrResponse.ocrResult.singleResult;
//逐行输出到文本框
for(k,ret in singleResult){
var text = ret.singleStrUtf8;
winform.edit.print(text)
fullText = fullText + text
}
win.clip.write(fullText)
}
)
}
elseif(winform.combobox.selIndex = 2){
ocrResult("/~~~~ocr.jpg");
}
winform.btnOcr.disabledText = null;
}
//拖放会触发onDropFiles事件,ocrResult需调整
winform.onDropFiles = function(files){
var suffix = fsys.getExtensionName(files[1])
select(suffix) {
case "bmp","jpg","jpeg","gif","png" {
ocrResult(files[1]);
}
else {
winform.msgErr("非常规图片文件,无法识别",300);
return;
}
}
}
// 注册系统全局热键 Ctrl+1
hkId = winform.reghotkey(
function(id,modifiers,vk){
// 直接模拟按下按钮,执行OCR功能
winform.btnOcr.oncommand();
},
0x2 /*_MOD_CONTROL*/, // 这是Ctrl键
'1'# // 这是数字1键
);
//显示窗口,托盘右键设置百度key
var tray = win.util.tray(winform) //创建托盘图标
//下面是添加托盘右键菜单
setkey= function(id,event){
var frmSet = win.loadForm("\dlg\set.aardio");
var username = frmSet.doModal();
}
import win.ui.menu;
winform.popmenu=win.ui.popmenu(winform);
winform.popmenu.add('设置密钥',function(id){ //添加了一个打开主界面的菜单
setkey();
})
winform.popmenu.add('退出',function(id){ //添加了一个退出程序的菜单
winform.close()
})
winform.show();
win.loopMessage(); |