hiroi-sora / Umi-OCR

OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。
MIT License
23.04k stars 2.35k forks source link

Win10 open(os.devnull) 报错:FileNotFoundError: [Errno 2] No such file or directory: 'nul' #473

Closed didme123 closed 1 month ago

didme123 commented 2 months ago

Issues

Umi-OCR version 程序版本

2.0

Windows version 系统版本

win10

OCR plugins Used 使用的OCR插件

No response

Reproduction steps 复现步骤

Image_1713167419067

Problem screenshots or related files (optional) 问题截图或相关文件(可选)

No response

didme123 commented 2 months ago

楼图是2.1的 2.0是这样 Image_1713172484828

didme123 commented 2 months ago

两个版本都试了,帮助文档的方法也都试了,求救!!!

hiroi-sora commented 2 months ago

你应该使用的是第三方的Win10“纯净版”或者“精简版”,或者好几年前一直没有更新过的官方win10,缺失了一些系统文件,导致程序无法获取空设备文件os.devnull,使得程序初始化失败。

解决方法1:

https://blog.csdn.net/zxl05403/article/details/80701496

解决方法2:

用记事本打开 UmiOCR-data\main.py ,找到以下几行:

    # 尝试获取控制台的输出对象
    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")

删掉这几行,改为:

    # 将输出流导向实际文件
    fp = open(“null.txt”, "w", encoding="utf-8")

(原样复制,不要少了空格缩进)

更多方法: 参考

didme123 commented 2 months ago

你应该使用的是第三方的Win10"纯净版"或者"精简版",或者好几年前一直没有更新过的官方win10,缺失了一些系统文件,导致程序无法获取空设备文件,使得程序初始化失败。os.devnull

解决方法1:

https://blog.csdn.net/zxl05403/article/details/80701496

解决方法2:

用记事本打开 ,找到以下几行:UmiOCR-data\main.py

    # 尝试获取控制台的输出对象
    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")

删掉这几行,改为:

    # 将输出流导向实际文件
    fp = open(“null.txt”, "w", encoding="utf-8")

(原样复制,不要少了空格缩进)

更多方法: 参考

两个方法都用了,现在打开.exe没任何反应

didme123 commented 2 months ago

@hiroi-sora 两个方法都用了,现在打开.exe没任何反应

hiroi-sora commented 2 months ago

看看你的系统详细版本号

参考: https://jingyan.baidu.com/article/fb48e8beef28412f632e1407.html ,用dos命令的方法,复制上来或者截个图

hiroi-sora commented 2 months ago

另外,如果你的系统是从第三方下载的,还记得在哪下的话,把下载地址也丢给我。帮你测试一下

didme123 commented 2 months ago

sss 系统装了好久了,但我检查了是最新版,昨天因为这事更新了系统,(没有重装系统) @hiroi-sora

didme123 commented 2 months ago

@hiroi-sora

hiroi-sora commented 2 months ago

这样的话,这问题确实不好解决。

我后续会帮你再调查一下。现在急用的话,你可以先用1.3.7版,应该不会有相同问题。

didme123 commented 2 months ago

@hiroi-sora 试过了哦,老版的软件可以打开,但用OCR识图的话CMD命令窗就显示引擎启动失败

hiroi-sora commented 2 months ago

另外,v2版本,试试点击UmiOCR-data目录中的 run_cli.bat 或者 run_gui.bat ,看看有没有反应。

didme123 commented 2 months ago

@hiroi-sora run_cli.bat可以进,但是类似1.3.7的端,只能打开一个壳,用OCR功能一样的引擎不能启动

hiroi-sora commented 2 months ago

了解。那大概是系统的管道通信机制坏掉了,前端无法与引擎通信。初始化时也因为无法与输出流交互而失败。

这个问题涉及系统底层,我估计很难修复的,只能重装了。

如果还想折腾一下的话, tesseractocr 插件不依赖管道通信,或许可以尝试一下。

didme123 commented 2 months ago

@hiroi-sora 好的,谢谢

didme123 commented 2 months ago

这是用的tesseractocr插件截图OCR的报错 异常状态码:202 异常信息:tesseractOcr recognize error:C:\Users\Administrator\Desktop\Umi-OCR_Paddle_v2.0.2\UmiOCR-data\plugins\win7_x64_TesseractOCR_best\engine/tesseract.exe is not installed or it's not in your PATH. See README file for more information. @hiroi-sora

hiroi-sora commented 2 months ago

这应该也是相同问题导致,可能它进程唤起的时候也需要管道,访问不到引擎。暂时没有办法了

qwedc001 commented 2 months ago

这是用的tesseractocr插件截图OCR的报错 异常状态码:202 异常信息:tesseractOcr recognize error:C:\Users\Administrator\Desktop\Umi-OCR_Paddle_v2.0.2\UmiOCR-data\plugins\win7_x64_TesseractOCR_best\engine/tesseract.exe is not installed or it's not in your PATH. See README file for more information. @hiroi-sora

你好,请确认一下您使用的TesseractOCR插件是下载的release还是直接clone的源代码并复制。由Umi plugin库直接进入的Tesseract插件并非为最新版(我也是才知道submodule会保存对应版本号),您可以在这里尝试下载最新的release并重新运行。如果仍然无效,那就没有别的办法了