本帖最后由 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)
|