不用安装微信也能用的调用微信OCR软件

红色森林 1月前 536

微信自带的OCR功能,快捷准确。很好用。有大佬搞了一个py库实现了对微信ocr的调用。aardio作者一鹤老师做了一个aar的相关库,使得调用微信ocr非常方便。

通过自己带的库和例子就能生成一个cor文字识别软件。

不过,我在使用过程中,遇到有时能用,有时又不能用的情况,因为我电脑上安装了多个版本的微信,有时装一个新的版本,ocr就不能用了。有时换一个版本,又能用了。看到群里有人说一次都没有成功。感觉这里面一个是路径问题,一个是32位和64位问题。因为以前微信是32位,好像3.9后有64位也有32位。

现在,通过相关资料找到调用的文件,把它们提取出来,放到软件目录下调用,这样就不再依赖不同版本的微信,就算电脑上没有安装微信,也能用了。实现了

其实,作者的库是写很好的,可以指定路径,不指定才去寻找微信安装路径。当时遇到问题我也曾试着指定路径,但没有成功。因为我电脑上微信安装有多个路径。

下面的代码:

import win.ui;
/*DSG{{*/
var winform = win.form(text="调用微信 OCR";left=-2;top=-2;right=323;bottom=382;topmost=1)
winform.add(
btnOcr={cls="button";text="提取图像文本";left=150;top=341;right=308;bottom=376;db=1;dl=1;dr=1;z=2};
edit={cls="edit";left=9;top=6;right=314;bottom=335;db=1;dl=1;dr=1;dt=1;edge=1;hscroll=1;multiline=1;vscroll=1;z=1}
)
/*}}*/

/*
仅供技术研究测试,勿作任何不当用途
*/
import process.wxOcr; 

var weChartPath="/wxocr/WeChat.exe";
var ocrPath="/wxocr/WeChatOCR.exe";

//创建 OCR 对象
var ocr = process.wxOcr(weChartPath,ocrPath); 

if(!ocr) error("系统未安装微信");

//按钮事件
winform.btnOcr.oncommand = function(id,event){
    
    //屏幕选区
    import mouse.screenArea;
    var screenArea = mouse.screenArea();
    
    //保存屏幕选区
    screenArea.onSelectionChanged = function(rc){
        
        import gdip.snap;
        var bmp = gdip.snap(screenArea.hwnd,rc.xywh());
        bmp.save("/~~~~ocr.jpg",80);
        owner.close();
    }
    screenArea.doModal();

    //识别文本
    ocr.sendRquest("/~~~~ocr.jpg",
        function(mmojoOcrResponse){ 
            
            //识别结果
            var singleResult = mmojoOcrResponse.ocrResult.singleResult;
            
            //逐行输出到文本框
            for(k,ret in singleResult){
                 winform.edit.print(ret.singleStrUtf8)
            }  
        }
    )    
}

//显示窗口
winform.show();
win.loopMessage();

代码没什么特别的,就是指定路径。开始路径没带exe,一直没成功。后面带上才成功了。

生成后,把提取的wxocr目录复制到exe同目录就可以运行了。

wxocr目录中,两个dll原本是在微信程序里面的,所以要找微信路径。但不调用微信。所以我这个目录中那个wechat

。exe,就是一个空文件,写个名字而已。

另外几个文件,就是ocr要调用的模型。估计是用mojo训练的,所以要两那个dll。

你也可以从你自己电脑上提取正常使用的那几个文件替换。


传了两次附件,都没看到。

添加一个下载地址

https://www.123pan.com/s/NtTCTd-lY79A?提取码:Euae


最新回复 (8)
  • 光庆 1月前
    0 2

  • 红色森林 1月前
    0 3
    //创建 OCR 调用对象 var ocr = process.wxOcr(); 之前这句没有删除,异致前面指定的路径是白白指定的,最后还是找本机。已经修改并重新编译打包了。更新了下载地址。
  • Xmzzz 1月前
    0 4

    这个不错,绿化版

  • 光庆 1月前
    0 5
    红色森林 //创建 OCR 调用对象 var ocr = process.wxOcr(); 之前这句没有删除,异致前面指定的路径是白白指定的,最后还是找本机。已经修改并重新编译打包了。更新了下载地址。
    这个新的不行,第一次运行识别不出来。第二次运行出不来界面。
  • tiansha 1月前
    0 6
    为什么的一直识别都是空的
  • hhs66317 1月前
    0 7
    如何才能让它在识别结果中包含对应的位置信息?比如识别结果中有个“定位”文字,我希望能获取到这个定位文字在图片中的位置 这样方便我在处理一些自绘窗口,无法获取标准控件时,通过Ocr识别定位后去点击对应区域
  • yesorno 1月前
    0 8
    有翻译功能吗
  • JRJJ 2小时前
    0 9

    实测,这些是必须的:WeChat.exe同样是空文件。原Model文件夹必须。

返回
发新帖