吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6273|回复: 148
上一主题 下一主题
收起左侧

[Python 转载] python调用微信OCR

    [复制链接]
跳转到指定楼层
楼主
FeiyuYip 发表于 2024-8-26 23:59 回帖奖励
本帖最后由 FeiyuYip 于 2024-12-11 22:35 编辑

一、写在前面

1.关于调用本地微信的OCR功能的小工具,本论坛已经有好几个。但似乎还没有直接用python调用本地微信的OCR功能的,现在分享一下。用途应该还是很多的
2.代码源于网络,感谢原作者的付出

二、使用方法介绍

1.电脑安装了微信,使用本工具不需要登录微信

2.找到“wechatocr.exe”的路径及微信的安装路径——原代码是通过写绝对路径的方法,但微信经常升级,升级后路径变了就无用了,所以我自己写了自动获得以上两个路径的方法

3.电脑安装python3.10版本,因为用到的wcocr.pyd是通过python3.10版本编译的

4.通过简单的代码就可以调用微信的OCR功能了


三、效果图

四、关键代码

1.自动获取微信安装路径及“wechatocr.exe”的路径


find_wechat_path.py
[Python] 纯文本查看 复制代码
import os
import re

def find_wechat_path():
    # 假设微信安装在默认的路径下
    common_paths = r"C:\Program Files\Tencent\WeChat"

    # 定义匹配版本号文件夹的正则表达式
    version_pattern = re.compile(r'\[\d+\.\d+\.\d+\.\d+\]')

    path_temp = os.listdir(common_paths)
    for temp in path_temp:
        # 下载是正则匹配到[3.9.10.27]
        # 使用正则表达式匹配版本号文件夹
        if version_pattern.match(temp):
            wechat_path = os.path.join(common_paths, temp)
            if os.path.isdir(wechat_path):
                return wechat_path

def find_wechatocr_exe():
    # 获取APPDATA路径
    appdata_path = os.getenv("APPDATA")
    if not appdata_path:
        print("APPDATA environment variable not found.")
        return None

    # 定义WeChatOCR的基本路径
    base_path = os.path.join(appdata_path, r"Tencent\WeChat\XPlugin\Plugins\WeChatOCR")

    # 定义匹配版本号文件夹的正则表达式
    version_pattern = re.compile(r'\d+')

    try:
        # 获取路径下的所有文件夹
        path_temp = os.listdir(base_path)
    except FileNotFoundError:
        print(f"The path {base_path} does not exist.")
        return None

    for temp in path_temp:
        # 使用正则表达式匹配版本号文件夹
        if version_pattern.match(temp):
            wechatocr_path = os.path.join(base_path, temp, 'extracted', 'WeChatOCR.exe')
            if os.path.isfile(wechatocr_path):
                return wechatocr_path

    # 如果没有找到匹配的文件夹,返回 None
    return None

def main():
    wechat_path = find_wechat_path()
    print(wechat_path)

    wechatocr_path = find_wechatocr_exe()
    print(wechatocr_path)

if __name__ == '__main__':
    main()

2.执行OCR功能代码(通过python3.10来运行)


OCR.py
[Python] 纯文本查看 复制代码
'''
必须用python 3.10,因为wcocr.pyd是用这个版本编译的
'''
import wcocr
import os
import json
from find_wechat_path import find_wechat_path, find_wechatocr_exe

def wechat_ocr(image_path):
    # wechat_path = r"C:\Program Files\Tencent\WeChat\[3.9.10.27]"
    wechat_path = find_wechat_path()

    # wechatocr_path = os.getenv("APPDATA") + r"\Tencent\WeChat\XPlugin\Plugins\WeChatOCR\7079\extracted\WeChatOCR.exe"
    wechatocr_path = find_wechatocr_exe()

    wcocr.init(wechatocr_path, wechat_path)
    result = wcocr.ocr(image_path)

    for temp in result['ocr_response']:
        # print(temp)
        print(temp['text'])

if __name__ == '__main__':
    image_path = r"pic.jpg"
    wechat_ocr(image_path)

五、代码链接

通过网盘分享的文件:WechatOCR
链接: https://pan.baidu.com/s/1PvsJqECPvIsqYZnuxWpPCw?pwd=s2h1 提取码: s2h1
--来自百度网盘超级会员v9的分享
源码链接:
https://github.com/swigger/wechat-ocr
https://github.com/kanadeblisst00/wechat_ocr
https://github.com/EEEEhex/qqimpl
https://bbs.kanxue.com/thread-278161.htm


免费评分

参与人数 23吾爱币 +23 热心值 +22 收起 理由
flhy99 + 1 谢谢@Thanks!
jnlijie + 1 + 1 我很赞同!
wx9265661 + 1 + 1 我很赞同!
chujing168 + 1 + 1 我很赞同!
快乐的小驹 + 1 + 1 谢谢@Thanks!
吾发如雪 + 1 + 1 谢谢@Thanks!
听风_TingFeng + 1 + 1 我很赞同!
zhuzhuwa + 1 自己用的3.7版本,暂时还不想升级到3.10
arakh + 1 + 1 谢谢@Thanks!
nulptr + 1 + 1 谢谢@Thanks!
shuoguoleilei + 1 + 1 我很赞同!
onlyclxy + 3 + 1 我很赞同!
52bojie + 1 + 1 谢谢@Thanks!
冰凉丶 + 1 谢谢@Thanks!
a5436539 + 1 + 1 我很赞同!
yzmb8456 + 1 + 1 谢谢@Thanks!
xinxin99 + 1 + 1 谢谢@Thanks!
melooon + 1 + 1 我很赞同!
zzyzy + 1 + 1 谢谢@Thanks!
LuckyClover + 1 + 1 谢谢@Thanks!
T4DNA + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
laozhang4201 + 1 + 1 我很赞同!
为之奈何? + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
iokey 发表于 2024-8-27 01:13
能不能把微信相关文件打包出来,做个绿色版啊?
推荐
flamestsui 发表于 2024-8-27 10:35
无敌小儿 发表于 2024-8-27 09:32
大佬分享下,造福坛友

[Python] 纯文本查看 复制代码
import os
import json
import time
from wechat_ocr.ocr_manager import OcrManager, OCR_MAX_TASK_ID
 
wechat_ocr_dir = r"C:\Users\iYan\AppData\Roaming\Tencent\WXWork\WeChatOCR\1.0.1.28\WeChatOCR\WeChatOCR.exe"                             # OCR的地址,可以用everythin工具查找一下地址
wechat_dir = r"D:\Program Files (x86)\Tencent\WeChat\[3.9.11.25]"  # 一定是要包含mmmojo.dll的路径
 
def ocr_result_callback(img_path: str, results: dict):
    """
    OCR 结果回调函数
    """
    result_file = os.path.basename(img_path) + ".json"
    print(f"识别成功,img_path: {img_path}, result_file: {result_file}")
 
    with open(result_file, 'w', encoding='utf-8') as f:
        f.write(json.dumps(results, ensure_ascii=False, indent=2))
 
    # 打印 results 的内容以便调试
    print("OCR 结果:", json.dumps(results, ensure_ascii=False, indent=2))
 
    # 尝试提取识别的文字
    if 'ocrResult' in results:
        text_lines = [item['text'] for item in results['ocrResult']]
        print(f"识别的文字: {text_lines}")
    else:
        print("结果中没有 'ocrResult' 键,无法提取文字。")
 
 
def main():
    # 创建 OCR 管理器实例
    ocr_manager = OcrManager(wechat_dir)
    # 设置 WeChatOCR 目录
    ocr_manager.SetExePath(wechat_ocr_dir)
    # 设置微信所在路径
    ocr_manager.SetUsrLibDir(wechat_dir)
    # 设置 OCR 识别结果的回调函数
    ocr_manager.SetOcrResultCallback(ocr_result_callback)
    # 启动 OCR 服务
    ocr_manager.StartWeChatOCR()
    # 开始识别图片
    ocr_manager.DoOCRTask(r"D:\UserData\Pictures\2024-08-15-0003.jpg")
    # 等待 OCR 任务完成
    time.sleep(1)
    while ocr_manager.m_task_id.qsize() != OCR_MAX_TASK_ID:
        pass
    # 结束 OCR 服务
    ocr_manager.KillWeChatOCR()
 
 
if __name__ == "__main__":
    main()
推荐
 楼主| FeiyuYip 发表于 2024-8-27 21:07 |楼主
nulptr 发表于 2024-8-27 21:01
https://github.com/swigger/wechat-ocr
swigger大佬的Repo,代码完全/高度可用

真相了,其实我发的就是这里的代码。哈哈
推荐
Carinx 发表于 2024-8-27 09:08
iokey 发表于 2024-8-27 01:13
能不能把微信相关文件打包出来,做个绿色版啊?

+1,之前我还悬赏让帮忙下载一个帖子https://blog.csdn.net/a394467238/article/details/137674575,可惜付费的看不到,不然想要看一下别人怎么弄的
推荐
T4DNA 发表于 2024-8-27 07:04
这很不错,微信ocr又快又好
推荐
 楼主| FeiyuYip 发表于 2024-8-27 08:22 |楼主
iokey 发表于 2024-8-27 01:13
能不能把微信相关文件打包出来,做个绿色版啊?

基于微信绿色版的ocr工具,我也见过,某论坛大佬开发的。改天我看看能不能发出来

免费评分

参与人数 1吾爱币 +1 收起 理由
1NPC + 1 用心讨论,共获提升!

查看全部评分

4#
iokey 发表于 2024-8-27 01:04
关于调用本地微信的OCR功能的小工具,本论坛已经有好几个。但我测试都不成功,都没有反应。微信是安装版的。
5#
 楼主| FeiyuYip 发表于 2024-8-27 01:08 |楼主
iokey 发表于 2024-8-27 01:04
关于调用本地微信的OCR功能的小工具,本论坛已经有好几个。但我测试都不成功,都没有反应。微信是安装版的 ...

有可能是微信升级版本号变了,导致两个路径不对了,试试我这
6#
iokey 发表于 2024-8-27 01:12
本帖最后由 iokey 于 2024-8-27 01:16 编辑

没装Python 有人打包了微信的OCR库文件,做成绿色版,说是不需要安装微信,他打包了微信所需要的文件,我测试了,还是失败。
7#
hebeijianke 发表于 2024-8-27 01:14
本帖最后由 hebeijianke 于 2024-8-27 01:15 编辑

Python3.12也能使用。
写个截屏函数和UI,再加个快捷键,就完美了
8#
zhangting2022 发表于 2024-8-27 05:59
感谢分享
9#
零下72℃的坚强 发表于 2024-8-27 07:35
感谢分享
10#
 楼主| FeiyuYip 发表于 2024-8-27 08:13 |楼主
hebeijianke 发表于 2024-8-27 01:14
Python3.12也能使用。
写个截屏函数和UI,再加个快捷键,就完美了

有可能是3.10及以上都可用版本吧,我只测试过3.10
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-14 16:15

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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