wzs07 发表于 7 天前

的代码微信ocr正常,但是百度不能识别,初学者,请大家指教

import win.ui;
import win.util.tray;
import win.clip;
importconsole
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)       
        select(suffix) {
                case "bmp","jpg","jpeg","gif","png" {
                        ocrResult(files);       
                }
                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();
页: [1]
查看完整版本: 的代码微信ocr正常,但是百度不能识别,初学者,请大家指教