Skip to content
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

启动报python3.dll错误 #21

Closed
StrollStars opened this issue Oct 9, 2023 · 19 comments
Closed

启动报python3.dll错误 #21

StrollStars opened this issue Oct 9, 2023 · 19 comments

Comments

@StrollStars
Copy link

StrollStars commented Oct 9, 2023

64位Win7,启动程序报如下错误:

> ---------------------------
ERROR
---------------------------
Cannot find Py_Main() in:

\Umi-OCR_Rapid_win7_dev_20230925\UmiOCR-data\.runtime\python3.dll
---------------------------
确定   
---------------------------
@hiroi-sora
Copy link
Owner

hiroi-sora commented Oct 9, 2023

解决方法见楼下

@hiroi-sora
Copy link
Owner

hiroi-sora commented Oct 10, 2023

我在一个早期 win7 x64 的虚拟机上重现了该错误。经过排查,发现是缺VC运行库的问题。

解决方法:

  1. 下载安装VC运行库
    https://aka.ms/vs/17/release/vc_redist.x64.exe

  2. 尝试启动软件。如果显卡驱动正常,此时能正确打开软件并使用Rapid引擎进行离线OCR了。

  3. 如果出现 Umi-OCR.exe 已停止工作 的弹窗,说明显卡驱动不全。(如果该系统之前没有VC运行库,大概率显卡驱动也是不全的。)那么请按照 issue #22 的方法,下载 opengl32sw.zip,然后修改设置项为 AA_UseSoftwareOpenGL 。

经过上述操作,大概率可以让Umi跑起来了。

@StrollStars
Copy link
Author

StrollStars commented Oct 10, 2023

@hiroi-sora 安装了运行库(32位和64位都装了),还是报一样的错误。

@hiroi-sora
Copy link
Owner

hiroi-sora commented Oct 10, 2023

去到 UmiOCR-data\.runtime ,直接点击启动 python.exe ,看看有无异常?报什么错?

@StrollStars
Copy link
Author

StrollStars commented Oct 10, 2023

@hiroi-sora 完全正常,会不会是和原有的Python冲突了,也就是说程序可能调用了原有的(加入了环境变量)而不是Umi-OCR自带的?
但是我原有的直接点击启动python.exe也是完全正常,两者版本号都相同(3.8.10),唯一的区别是原有的是64位,Umi-OCR自带的是32位。

@hiroi-sora
Copy link
Owner

hiroi-sora commented Oct 10, 2023

不可能和原有py冲突的,启动器根本不认识环境变量中的py,它只会试图调用Umi目录中自带的py。

如果你说直接点击运行 UmiOCR-data\.runtime\python.exe 完全正常,那这是个好消息。请尝试以下方法,跳过启动器,直接唤起py:

在目录 UmiOCR-data 中新建一个 启动.bat ,输入:

start "" .runtime/python.exe main.py

双击 启动.bat ,看看能否启动Umi-OCR。

@StrollStars
Copy link
Author

@hiroi-sora CLI第一行显示翻译未加载,不过GUI启动了。
启动的GUI可以使用截图OCR,但是如果把该标签页关闭了,就无法再次打开,也就无法截图了,CLI中显示WinError 31和一串问号的错误。
重新运行启动.bat后可以再次使用,情况如上。

@hiroi-sora
Copy link
Owner

翻译未加载 是正常的,截图标签页无法再次开启就不正常。

可以的话,麻烦将遇到过的所有错误复制下来或者截图下来,发到这里,我会进一步调查。

系统详细信息也发一下,按win+r,输入msinfo32 ,将窗口放到最大,截个图。

感谢协助!

另外,昨天发布的 v1.3.7版 也支持win7了,你可以试试老版本在你的电脑上能否正常使用。

@StrollStars
Copy link
Author

StrollStars commented Oct 11, 2023

@hiroi-sora

v1.3.7版

运行毫无问题。

预览版 dev 20231010

系统信息

系统信息

命令行1

CLI1

说明
  1. 启动.bat方式启动,因为直接运行Umi-OCR.exe报错。
  2. 两个ScreenshotOCR_1之间是第一次打开截图OCR,没做任何操作后关闭标签页。
  3. ScreenshotOCR_2%paste%之间是第二次打开截图OCR,进行截图操作后关闭标签页。
  4. %paste%之下是再次点击截图OCR,无法打开标签页了,但如果不做截图操作就没问题。
补充
  1. opengl32sw.dll是OpenGL相关,缺失没关系吧?
  2. 是不是因为测试版所以会有CLI界面?
  3. 为什么我CLI中每个汉字都会重复?

命令行2

CLI2

说明
  1. 不关闭截图OCR标签页进行截图操作。
  2. 控制器剩余`之间是第一次截图操作,一切正常。
  3. file开始是第二次截图操作,无法进行。
补充
  1. 2代比1代强,体积缩减1/2,还不用手动选择语言。
  2. 测试日语识别效果,目前2代还不如1代。

@hiroi-sora
Copy link
Owner

hiroi-sora commented Oct 12, 2023

感谢你的测试。

  • 关于系统信息:你的系统版本7601跟我的测试环境一样(即最后一个win7版本),所以应该不是主版本太旧导致的异常。我推测是有部分系统运行库错误导致。
    如果你也是开发者,那么有一定可能,某些开发环境改写了系统运行库的优先级,让程序优先使用开发环境自带的库。而这些库恰好与 Umi v2 不兼容。

然后v2在你的电脑上主要存在2个问题:

  1. 无法通过启动器Umi-OCR.exe启动,只能通过bat启动。(正常通过exe启动是不会有CLI的,用bat才会有CLI。)
  2. 第二次截图操作会出现WinError 31的报错。

关于问题1,我暂时没有头绪,需要掌握更多信息才能判断。如果有别的用户有相同问题,请务必反馈,找找你们的共性。

关于问题2,确实有可能由opengl32sw.dll缺失引起。

  • v2基于qt-qml,这是一种OpenGL渲染的UI框架,能制作复杂而高性能的UI。大部分系统都会自带opengl32sw.dll,我就没有将它放到发行包里。你可以下载opengl32sw.zip,将dll放到该目录UmiOCR-data/site-packages/PySide2/
  • 在截图界面,我使用了一些含特殊渲染效果的遮罩层。可能此时无法输出渲染特效而导致WinError 31

关于补充:

  • CLI汉字重复是win7 gbk编码导致的小问题,不会影响程序运行。
  • v1只支持Paddle引擎,而v2你下载的是Rapid引擎版。如果v2也下载Paddle引擎版,或者Paddle插件,那么识别效果是一毛一样的。
  • 识别语言还是需要手动设置的。界面UI语言则会根据系统设置自动设定。

@StrollStars
Copy link
Author

@hiroi-sora 关于WinError 31错误,我把opengl32sw.zip中的两个文件都放入了UmiOCR-data/site-packages/PySide2/,但是问题依旧存在。
之前试的是Rapid版,这回还是在这个版本上面测试,选择语言后发现识别很准确,估计引擎只影响系统占用和速度,和效果无关吧?
PS:我先前没注意到要选择语言,但要是碰到混合语言是不是就只能分开来识别了?

@hiroi-sora
Copy link
Owner

Paddle和Rapid引擎在图像前处理阶段有一些差别,可能导致对同一张图片产生不同的识别效果。但总体而言差别不会很大。

是的,目前没有OCR库可以很好的实现混合多语言识别。最多做到英文+另1种语言。可见这里的讨论:

hiroi-sora/PaddleOCR-json#75

@StrollStars
Copy link
Author

@hiroi-sora 感谢帮我耐心测试,我先用其他版本好了。
如果是英文+另1种语言,那选择识别语言的时候是选择英文还是另1种语言?

@hiroi-sora
Copy link
Owner

不是,意思是大多数语言库(如简中,繁中,日文……)它们都自带英文识别。

不过,它们对长篇英文段落的识别效果,可能没有纯英文库好。

@StrollStars
Copy link
Author

StrollStars commented Oct 14, 2023

@hiroi-sora 那这么说来识别语言的时候是应该选择另一种语言了。
我发现对日文的识别以及综合识别,V2效果比V1要好,现在主要的两个问题:启动和连续识别,希望能够优先解决后面那个。
对于后者,V1使用过程中HIPS会提示访问剪贴板,但是V2没有,我在HIPS中对V2的访问剪贴板进行放行,好像不影响结果。
PS1:第一次是正常的,第二次就不行,是不是第一次哪里占位了导致第二次无法进行?
PS2:一次截图后,再次截图和OCR的标签页无法打开,但是全局设置的标签页是能打开的。

@hiroi-sora
Copy link
Owner

hiroi-sora commented Oct 23, 2023

问题1有了初步的解决方案:强制启动,并隐藏控制台。
hiroi-sora/Umi-OCR#208 (comment)

问题2仍无解……

@StrollStars
Copy link
Author

StrollStars commented Oct 24, 2023

@hiroi-sora 感谢开发者持续关注,我删除了系统中的Python环境变量,并重新部署了Python。

  1. 下载预览版 dev 20231010测试,发现问题依旧。
  2. 将上述删除,下载预览版 dev 20231018,运行Umi-OCR.exe问题依旧,但运行test_run.bat可以启动。
  3. 下载umiocr.zip并放入Umi-OCR.exe同目录下,运行正常,第一次截图正常,后续截图以及截图标签页关闭后再打开也正常,也就是说两个问题都解决了……

@hiroi-sora
Copy link
Owner

之后的版本中 ,如果 Umi-OCR.exe 失效,可以用备用启动器:

UmiOCR-data/RUN_GUI.bat

它以最大兼容性启动软件,且不显示控制台窗口。

@StrollStars
Copy link
Author

@hiroi-sora 预览版 dev 20231025运行Umi-OCR.exe并连续截图没有问题,感谢开发者。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants