python调用微信OCR
本帖最后由 FeiyuYip 于 2024-9-4 22:46 编辑## 一、写在前面
> 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
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:
# 下载是正则匹配到
# 使用正则表达式匹配版本号文件夹
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 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\"
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)
## 五、代码链接
> 链接:https://pan.baidu.com/s/1VjRjk2uH7XClwBpfr7UtOQ?pwd=vwev
提取码:vwev
--来自百度网盘超级会员V10的分享
>源码链接:
https://github.com/swigger/wechat-ocr
https://github.com/kanadeblisst00/wechat_ocr
https://github.com/EEEEhex/qqimpl
https://bbs.kanxue.com/thread-278161.htm
能不能把微信相关文件打包出来,做个绿色版啊? 无敌小儿 发表于 2024-8-27 09:32
大佬分享下,造福坛友
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\"# 一定是要包含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 = 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() nulptr 发表于 2024-8-27 21:01
https://github.com/swigger/wechat-ocr
swigger大佬的Repo,代码完全/高度可用
{:1_907:}真相了,其实我发的就是这里的代码。哈哈 iokey 发表于 2024-8-27 01:13
能不能把微信相关文件打包出来,做个绿色版啊?
+1,之前我还悬赏让帮忙下载一个帖子https://blog.csdn.net/a394467238/article/details/137674575,可惜付费的看不到,不然想要看一下别人怎么弄的{:301_972:} 这很不错,微信ocr又快又好 iokey 发表于 2024-8-27 01:13
能不能把微信相关文件打包出来,做个绿色版啊?
基于微信绿色版的ocr工具,我也见过,某论坛大佬开发的。改天我看看能不能发出来 关于调用本地微信的OCR功能的小工具,本论坛已经有好几个。但我测试都不成功,都没有反应。微信是安装版的。 iokey 发表于 2024-8-27 01:04
关于调用本地微信的OCR功能的小工具,本论坛已经有好几个。但我测试都不成功,都没有反应。微信是安装版的 ...
有可能是微信升级版本号变了,导致两个路径不对了,试试我这 本帖最后由 iokey 于 2024-8-27 01:16 编辑
没装Python 有人打包了微信的OCR库文件,做成绿色版,说是不需要安装微信,他打包了微信所需要的文件,我测试了,还是失败。 本帖最后由 hebeijianke 于 2024-8-27 01:15 编辑
Python3.12也能使用。
写个截屏函数和UI,再加个快捷键,就完美了 感谢分享 感谢分享 hebeijianke 发表于 2024-8-27 01:14
Python3.12也能使用。
写个截屏函数和UI,再加个快捷键,就完美了
有可能是3.10及以上都可用版本吧,我只测试过3.10