hiroi-sora / PaddleOCR-json

OCR离线图片文字识别命令行windows程序,以JSON字符串形式输出结果,方便别的程序调用。提供各种语言API。由 PaddleOCR C++ 编译。
Apache License 2.0
973 stars 126 forks source link

一些关于剪切板的讨论 #116

Closed Gavin1937 closed 5 months ago

Gavin1937 commented 5 months ago

1.

PaddleOCR-json的剪切板读取文件的功能是建立在ocr引擎与前端软件在同一个文件系统的前提下的。

不过如果把PaddleOCR-json跑在另一个服务器上,这个剪贴板的功能就变得不太合理了。

我觉得应该新增一个新的配置参数来开启/关闭剪切板。

比如说 -enable_clipboard=true,默认是 true ,然后用户可以将其设置成 false

接着只需要在 imread_u8() 里面检查一下这个参数就行了:

// 剪贴板启用并且为剪贴板任务
if (FLAGS_enable_clipboard && pathU8 == "clipboard")
    return imread_clipboard(flag);

// 剪贴板禁用并且为剪贴板任务
else if (!FLAGS_enable_clipboard && pathU8 == "clipboard")
    // 报错

// pathU8 为正常路径

2.

我不太理解:

既然PaddleOCR-json是一个OCR引擎,那它真的需要去做读取剪贴板的工作吗?

如果把读取剪贴板的工作全部放在引擎的前端(比如Umi-OCR)会不会更合理一些呢?

当然,现在也不应该直接删除剪贴板相关的功能,其他软件可能也在用着这个功能。

我只想带起这个讨论。

hiroi-sora commented 5 months ago

其他软件可能也在用着这个功能

没错,这是一个历史遗留问题。 Umi-OCR v1 版本中,是靠引擎本身去获取剪贴板数据的。

不过在现在的 Umi-OCR v2.x ,管理剪贴板的工作已经交给了前端,不依赖引擎本身读剪贴板了。

服务端去读剪贴板确实是不必要,且不安全的行为。后续版本,我认为可以移除该功能了。

Gavin1937 commented 5 months ago

确实,移除这个功能会更好。

该功能相关的代码可以保留,但弄个flag

这个简单,我下个PR给加上。

Linux版本,则无需开发剪贴板功能。

Linux不像Windows或者Mac,它的“剪贴板”设计得很复杂。把全部的剪贴板读取功能交由其他的跨平台library会更方便。

像Umi-OCR可以直接用Qt的QClipboard去跨平台支持剪贴板。

hiroi-sora commented 5 months ago

嗯,Umi v2 已经考虑到了剪贴板等机制的跨平台。

我这两天会研究一下Umi的linux环境部署

Gavin1937 commented 5 months ago

剪贴板的移除已经做好了,不过更改的内容比较多,所以暂时先不发PR。我把所有的更改都放在下面这个branch里,方便cherry pick。麻烦作者检查一下看看有哪些是不需要或者要更改的吧。完了没问题我再整理发PR

https://github.com/Gavin1937/PaddleOCR-json/commits/clipboard/

具体的更改:

Gavin1937 commented 5 months ago

除了node.js我这边没法测试以外其他所有的更改(C++、python、powershell)都测试过能用了(Windows和Linux双平台)。

hiroi-sora commented 5 months ago

OK,我看过了,没有可见的问题。

v1.3 版暂时保留剪贴板相关代码。未来的 v1.4 或更高的版本,我会跟进 PaddleOCR 官方 v2.7 或最新的版本,那时候可能完全移除剪贴板相关的代码。

Gavin1937 commented 5 months ago

已经发PR了