-
Notifications
You must be signed in to change notification settings - Fork 2.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在 Windows 11 運行問題 #274
Comments
1. 请尝试一下:在命令行里运行
|
在 命令行 運行 都正常, 但奇怪的是
在 Explorer.exe 中 雙擊 運行正常,會顯示一個系統彈窗. 我猜會不會是 main.py 有某處程序碼不兼容 Windows 11. 另外: Rapid 有以下問題: 第 2 次 截圖 並 OCR 會 死循環 一直無法識別,只能點擊 停止任務 |
感谢测试,信息很有帮助。我推测有可能是您的 繁中Windows系统 对管道编码存在一定影响。 请将 main.py 的内容替换为下列代码。执行 Umi-OCR.exe 时,如果出现错误,应该会出现一个 点击展开import os
import sys
import site
def MessageBox(msg, type="error"):
import ctypes
info = "Umi-OCR Message"
if type == "error":
info = " Umi-OCR Error"
elif type == "warning":
info = " Umi-OCR Warning"
ctypes.windll.user32.MessageBoxW(None, str(msg), str(info), 0)
return 0
def initRuntimeEnvironment(startup_script):
"""初始化运行环境"""
# 尝试获取控制台的输出对象
try:
fd = os.open("CONOUT$", os.O_RDWR | os.O_BINARY)
fp = os.fdopen(fd, "w")
except Exception as e:
fp = open(os.devnull, "w")
# 输出流不存在时,重定向到控制台
if not sys.stdout:
sys.stdout = fp
if not sys.stderr:
sys.stderr = fp
# def except_hook(cls, exception, traceback):
# sys.__excepthook__(cls, exception, traceback)
# sys.excepthook = except_hook
os.MessageBox = MessageBox
# 初始化工作目录和Python搜索路径
script = os.path.abspath(startup_script) # 启动脚本.py的路径
working = os.path.dirname(script) # 工作目录
os.environ["APP_WORKING"] = working
os.chdir(working) # 重新设定工作目录(不在最顶层,而在UmiOCR-data文件夹下)
for n in [".", "site-packages"]: # 将模块目录添加到 Python 搜索路径中
path = os.path.abspath(os.path.join(working, n))
if os.path.exists(path):
site.addsitedir(path)
def runScript():
# 默认启动脚本
from py_src.run import main
main()
if __name__ == "__main__":
log = os.path.abspath("log.txt")
try:
initRuntimeEnvironment(__file__) # 初始化运行环境
except Exception as e:
MessageBox("Error initRuntimeEnvironment !\n\n" + log)
with open(log, "a") as f:
err = "\nError initRuntimeEnvironment !\n" + str(e)
f.write(err)
try:
runScript() # 启动脚本
except Exception as e:
MessageBox("Error runScript !\n\n" + log)
with open(log, "a") as f:
err = "\nError runScript !\n" + str(e)
f.write(err) |
啊,非常抱歉有行语句忘了删。请将上述代码中的 raise Exception("12543124524") 这一行删掉,再测试。 |
OK,这样就确认了,确实是繁中系统的编码问题。 我后续会搭一个繁中系统环境来测试修改。请你先用着命令行启动方式或者1.3.7的旧版。 |
代码中有一些 print 语句用于打印信息。在命令行中运行时,输出到 我大概已经查明,问题出在这行代码:
简体的 当然,”这行代码报错“只是表面现象,光是删掉它并不能解决问题。治本的方法是搞定文本编码兼容性。还在研究。
在命令行中传入参数时,程序会在后台拉起一个新的进程,等价于在 Explorer 中双击启动软件。所以无法运行。 |
感謝說明. 你慢慢研究, 另外, 建議 加個 D:\FileList.txt 內容 這樣能 1 次轉 N 個 |
我找到了解决方法,在虚拟机繁体系统上验证通过。请你测试一下。 在 main.py 的中间有一段这样的代码: # 尝试获取控制台的输出对象
try:
fd = os.open("CONOUT$", os.O_RDWR | os.O_BINARY)
fp = os.fdopen(fd, "w")
except Exception as e:
fp = open(os.devnull, "w") 在两个 "w" 的后面加上【 # 尝试获取控制台的输出对象
try:
fd = os.open("CONOUT$", os.O_RDWR | os.O_BINARY)
fp = os.fdopen(fd, "w", encoding="utf-8")
except Exception as e:
fp = open(os.devnull, "w", encoding="utf-8") 完成这个改动后,可在 Explorer 中正常双击运行。 |
試了 encoding="utf-8"
PS: PS: PS: D:\FileList.txt 內容 這樣能 1 次轉 N 個 最後自動建立 |
答:新版本
答:可在截图OCR标签页设置中 关闭“弹出主窗口”。
答: |
OS: Windows 11 23H2 22631.2715 繁體中文
Umi-OCR_Rapid_v2.0.1
Umi-OCR.exe 無任何反應
RUN_CLI.bat 一切正常
RUN_GUI.bat 無任何反應
Umi-OCR_Paddle_v2.0.1
Umi-OCR.exe 無任何反應
RUN_CLI.bat 一切正常
RUN_GUI.bat 無任何反應
RUN_CLI.bat
當 第 1 次 截圖 並 OCR 後 正常識別,
第 2 次 重新截圖 都是 第 1 次 的狀態,無法開始 新的 截圖識別.
The text was updated successfully, but these errors were encountered: