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

红色森林 9月前 3735

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

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

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

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

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

下面的代码:

Code JavaScriptLine:57复制
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
    • 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.123865.com/s/TSc7jv-rtpg3提取码:9DU6


    最新回复 (16)
    • 光庆 9月前
      0 2

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

      这个不错,绿化版

    • 光庆 9月前
      0 5
      红色森林 //创建 OCR 调用对象 var ocr = process.wxOcr(); 之前这句没有删除,异致前面指定的路径是白白指定的,最后还是找本机。已经修改并重新编译打包了。更新了下载地址。
      这个新的不行,第一次运行识别不出来。第二次运行出不来界面。
    • tiansha 9月前
      0 6
      为什么的一直识别都是空的
    • hhs66317 9月前
      0 7
      如何才能让它在识别结果中包含对应的位置信息?比如识别结果中有个“定位”文字,我希望能获取到这个定位文字在图片中的位置 这样方便我在处理一些自绘窗口,无法获取标准控件时,通过Ocr识别定位后去点击对应区域
    • yesorno 9月前
      0 8
      有翻译功能吗
    • zhhyit 4月前
      0 9
      这个不联网,确实牛逼
    • zxl1969 4月前
      0 10
      好东西,怎不增加一个清除按钮
    • zxl1969 4月前
      0 11
      应该还要增加一复制按钮 可能我有强迫症
    • 近我者赤 4月前
      0 12
      Code AardioLine:69复制
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    • 11.
    • 12.
    • 13.
    • 14.
    • 15.
    • 16.
    • 17.
    • 18.
    • 19.
    • 20.
    • 21.
    • 22.
    • 23.
    • 24.
    • 25.
    • 26.
    • 27.
    • 28.
    • 29.
    • 30.
    • 31.
    • 32.
    • 33.
    • 34.
    • 35.
    • 36.
    • 37.
    • 38.
    • 39.
    • 40.
    • 41.
    • 42.
    • 43.
    • 44.
    • 45.
    • 46.
    • 47.
    • 48.
    • 49.
    • 50.
    • 51.
    • 52.
    • 53.
    • 54.
    • 55.
    • 56.
    • 57.
    • 58.
    • 59.
    • 60.
    • 61.
    • 62.
    • 63.
    • 64.
    • 65.
    • 66.
    • 67.
    • 68.
    • 69.
      • import fonts.fontAwesome;
      • 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='\uF030 截屏并提取文本';left=116;top=341;right=248;bottom=376;db=1;dl=0.36;dr=0.24;font=LOGFONT(name='FontAwesome');z=2};
      • button={cls="button";text='\uF0EA 复制文本';left=9;top=341;right=105;bottom=376;db=1;dl=1;dr=0.68;font=LOGFONT(name='FontAwesome');z=3};
      • checkbox={cls="checkbox";text="累加";left=259;top=349;right=315;bottom=372;db=1;dr=1;z=4};
      • edit={cls="edit";left=9;top=6;right=315;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;
      • //逐行输出到文本框
      • if(!winform.checkbox.checked){
      • winform.edit.text="";
      • }
      • for(k,ret in singleResult){
      • winform.edit.print(ret.singleStrUtf8)
      • }
      • }
      • )
      • }
      • //显示窗口
      • winform.button.oncommand = function(id,event){
      • import win.clip;
      • win.clip.write(winform.edit.text)
      • }
      • winform.show();
      • win.loopMessage();


    • zxl1969 4月前
      0 13
      这个确实更好
    • redchina 4月前
      0 14
      很奇怪怎么在我的电脑上,这个程序总是无法识别截取的图片
    • Xmzzz 1月前
      0 15
      不错,绿色好用!
    返回
    发新帖