红色森林 发表于 2024-9-4 11:36:06

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

本帖最后由 红色森林 于 2024-9-4 13:12 编辑

微信自带的OCR功能,快捷准确。很好用。有大佬搞了一个py库实现了对微信ocr的调用。aardio作者一鹤老师做了一个aar的相关库,使得调用微信ocr非常方便。通过自己带的库和例子就能生成一个cor文字识别软件。

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

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

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

下面的代码:
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

风行者 发表于 2024-9-24 16:43:57

感谢分享,这个很有用

redchina 发表于 2024-10-26 09:47:01

现在还能用吗,下载了不能识别

redchina 发表于 2024-10-26 09:53:22

图像截取成功,但后面没有进行识别可能是什么问题
页: [1]
查看完整版本: 不用安装微信也能用的调用微信OCR软件