hiroi-sora / Umi-OCR

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

在使用批量OCR的时候,使用命令行来开始任务,提示“Calling "ocrStart" in main thread.”,识别在主线程中执行,那有没有办法监听程序什么时候执行完呢? #688

Open 521Peter opened 1 month ago

521Peter commented 1 month ago

Issues

Expected behavior 预期的功能

企业微信截图_17289574077892

Approximate reference (optional) 近似的参考(可选)

No response

hiroi-sora commented 1 month ago

如果想细粒度的操作OCR过程,建议使用HTTP接口。可以自己控制传输每一张图片,获取结果,写入文件。

521Peter commented 1 month ago

好的,感谢

521Peter commented 1 month ago

我是发现批量ocr,最终会输出包含识别结果的txt文件,然后我找到了源码,改成识别完成后,输出一个finish.txt文件,写个程序持续监听文件输出,有文件输出则表示识别完成了。然后我发现好像有个bug,

for (let it of paths) {
      const params = it.map((p) => `\\"${p.replace(/\\/g, "/")}\\"`).join(",");
      await exec(
        [
          `.\\${this.exeName}`,
          `--call_qml`,
          `BatchOCR`,
          `--func`,
          `addImages`,
          `"[${params}]"`,
        ].join(" "),
        this.exeDir
      );
    }

    await exec(
      [
        `.\\${this.exeName}`,
        `--call_qml`,
        `BatchOCR`,
        `--func`,
        `ocrStart`,
      ].join(" "),
      this.exeDir
    ); 

如果批量添加图片,之后执行ocr操作,有概率部分图片没能添加到列表中

hiroi-sora commented 1 month ago

如果批量添加图片,之后执行ocr操作,有概率部分图片没能添加到列表中

可能你程序的操作太快了。Umi添加图片的时候会进行一些检测,需要一点点时间。如果一次性添加大量图片然后立刻开始OCR,可能后面的图片来不及添加到任务列表里。

你的代码,两次 exec 之间 sleep 0.5秒 应该就可以避免了。