hiroi-sora / Umi-OCR

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

命令行Umi-OCR.exe --path "screenshot.png" --> "kk.txt"无法保存。 #326

Closed immmor closed 5 months ago

immmor commented 8 months ago

如图。识别到的文字保存不进kk.txt

hiroi-sora commented 8 months ago

请试试txt传入绝对路径

immmor commented 8 months ago

请试试txt传入绝对路径

试了,还是不行

immmor commented 8 months ago

图片和txt都试了绝对路径也不行

hiroi-sora commented 8 months ago

那就奇怪了,我这边测试是绝对和相对路径都工作正常,能写入txt的。

你试试如果用截图功能能否正常写入?调用示例:

Umi-OCR.exe --screenshot --> kk.txt

正常情况下,控制台会先输出本次识别结果,然后打印: Success output to file: D:\......\Umi-OCR\kk.txt

如果没有输出识别结果,或者没有打印 Success output ,则有问题。

immmor commented 8 months ago

打印了 但是没有保存

hiroi-sora commented 8 months ago

那么,在软件面板上进行批量识别,可以正常保存结果txt吗

trial03 commented 7 months ago

我也一样不能保存

2.jpg image

D:\Umi-OCR_Rapid_v2.0.2>umi-ocr --path "c:\erp\2.jpg" --> 1.txt

D:\Umi-OCR_Rapid_v2.0.2>Createyourfirstproject Ready to start building?Create arepository for a newidea orbring over an existing repository tokeep contributing toit. —

image

软件会output result to the screen, 需要enter离开。

1.txt 是生成了, 可是没有內容。

hiroi-sora commented 7 months ago

@trial03 感谢你提供的信息!我们缩小了问题可能出现的范围。

如果愿意,请进行下列测试:

  1. 用记事本或编辑器打开 UmiOCR-data\py_src\server\cmd_client.py
  2. 第54~60行,原本是:
    try:
        with open(path, mode, encoding="utf-8") as f:
            f.write(text)
        print(f"Success output to file: {path}")
    except Exception as e:
        print(f"[Error] failed to write file {path} : \n{e}")
        return
  1. 将这部分代码改为:(请原样复制下列代码,保证空格缩进一致)
    try:
        with open(path, mode, encoding="utf-8") as f:
            f.write(text)
        print(f"Success output to file: {path}")

        with open(path+".test.txt", mode, encoding="utf-8") as f:
            f.write("测试信息测试信息")
        with open("D:/111.txt", "w", encoding="utf-8") as f:
            f.write(text)
        print("===============")

    except Exception as e:
        print(f"[Error] failed to write file {path} : \n{e}")
        return
  1. 正常通过命令行调用umi-ocr --path "c:\erp\2.jpg" --> 1.txt,检查:
trial03 commented 7 months ago

Already tested :

image

1.txt 生成 但没有內容 D:/111.txt 有没有生成

hiroi-sora commented 7 months ago

在你上图的命令行中,输出repository tokeep contributing toit.就没了吗?后面还有内容吗?比如Success output to file或者[Error] failed to write file

1.test.txt有没有生成?(跟 1.txt 在同一目录下)

xiahan4956 commented 7 months ago

我也是,这样输出了,并没有保存到txt中 并且使用了截图的命令Umi-OCR.exe --screenshot --> kk.txt 也没有保存 到txt image

jingkanghou commented 7 months ago

@hiroi-sora 我这里有相同的问题,我print出部分信息,希望对解决问题有用。

使用如下指令: Umi-OCR.exe --path "E:\batchocr\j-0.jpg" --> d:\test.txt 在initCmd中得到的argv内容为:argv: ['--path', 'E:\batchocr\j-0.jpg', '--'] 此时无法将结果输出到txt文件

使用如下指令: Umi-OCR.exe --path "E:\batchocr\j-0.jpg" “-->” “d:\test.txt” 在initCmd中得到的argv内容为: ['--path', 'E:\batchocr\jpin-0.jpg', '-->', 'd:\test.txt'] 此时结果正常输出到txt文件

hiroi-sora commented 7 months ago

@jingkanghou 非常感谢测试,看来可能是特殊符号编码问题,我会研究一下

immmor commented 6 months ago

请问新版本有修复吗

hiroi-sora commented 6 months ago

请问新版本有修复吗

抱歉,暂时还没。

如果有类似问题,可以用上面用户提出的解决方案:用双引号包裹住 --> ,即 "-->"

hiroi-sora commented 6 months ago

经过测试,> 符号的解析在部分平台上可能有歧义,且程序内难以修复。

使用双引号用法 "-->" 可以避免歧义,确保指令生效。目前已经将 "-->" 的操作说明写入了help和文档。

hiroi-sora commented 5 months ago

新版本发布,已支持更稳定的新指令 "--output" 和 "--output_append" 。