找回密码
 立即注册

微信登录

只需一步,快速开始

QQ登录

只需一步,快速开始

查看: 3|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    昨天 20:24
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    1

    主题

    1

    回帖

    23

    积分

    新手上路

    积分
    23
    来自: 中国安徽合肥
    发表于 昨天 20:36 | 显示全部楼层 |阅读模式 来自: 中国安徽合肥
    非业余 - aardio 编程语言 - 非官方问答社区
    风行者三期培训:Aardio+Python+Flutter,1000集课程让你成为全栈开发高手!https://mp.weixin.qq.com/s/_WOoHFtITUyLk2k7BXYGkg
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    aardio风行者第三期培训班https://mp.weixin.qq.com/s/cdZcvFiAWhlYTaSrQGCPvA
    [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();
    非业余 - aardio 编程语言 - 非官方问答社区
    风行者三期培训:Aardio+Python+Flutter,1000集课程让你成为全栈开发高手!https://mp.weixin.qq.com/s/_WOoHFtITUyLk2k7BXYGkg
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    aardio风行者第三期培训班https://mp.weixin.qq.com/s/cdZcvFiAWhlYTaSrQGCPvA
    回复

    使用道具 举报

    *滑块验证:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|非业余 - aardio 编程语言 - 非官方问答社区 知道创宇云防御

    GMT+8, 2025-11-18 02:19 , Processed in 0.135644 second(s), 30 queries .

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表