吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3566|回复: 110
收起左侧

[Python 转载] python调用微信OCR

  [复制链接]
FeiyuYip 发表于 2024-8-26 23:59
本帖最后由 FeiyuYip 于 2024-9-4 22:46 编辑

一、写在前面

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

二、使用方法介绍

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

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

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

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

1.jpg
2.jpg

三、效果图

3.jpg

4.jpg

四、关键代码

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)


免费评分

参与人数 18吾爱币 +19 热心值 +17 收起 理由
吾发如雪 + 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 用心讨论,共获提升!

查看全部评分

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

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

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

Python3.12也能使用。
写个截屏函数和UI,再加个快捷键,就完美了
zhangting2022 发表于 2024-8-27 05:59
感谢分享
零下72℃的坚强 发表于 2024-8-27 07:35
感谢分享
ygao2004 发表于 2024-8-27 07:42
可以绿化,好用。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-9-17 03:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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