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

【Linux移植倡议】 #47

Open
hiroi-sora opened this issue May 25, 2023 · 5 comments
Open

【Linux移植倡议】 #47

hiroi-sora opened this issue May 25, 2023 · 5 comments

Comments

@hiroi-sora
Copy link
Owner

hiroi-sora commented May 25, 2023

各位开发者,大家好!我是PaddleOCR-json的作者。

PaddleOCR-json刚刚更新了v1.3测试版本,重构了部分代码,让任务流程更清晰,功能分类明确,更适合二次开发工作。对多平台兼容专门做了优化,绑定平台的代码都分离出来单独封装。理论上,移植其他平台,只需要重写少数几个跟进程交互及文件读取有关的函数即可。

另外,考虑到管道交互的潜在的限制性(缓冲区有限,及无纠错机制),v1.3新增了通过TCP交互的方式,在不同平台上也许能提供更稳定和可靠的服务。不过考虑到本项目的初衷是纯本地的应用,而且我的后端开发经验也不足,所以暂未考虑HTTP服务器等更高层的网络交互机制。

现在诚邀有Linux开发经验的人员参与本项目,负责移植Linux的工作。过程中,有任何跟项目流程及功能有关的疑问,都可以在这个issue下提出,我会尽力帮助你。

v1.3中,我重写了全部项目文档,希望这些文档会对你有帮助:

@Gavin1937
Copy link
Contributor

请问PaddleOCR-json 在linux上应该强制要求 AVX 吗?PaddleOCR 官方有推出无 AVX 的预测库(manylinux_cpu_noavx_openblas_gcc8.2)。我在无 AVX 的虚拟机里面测试的时候也可以成功编译 PaddleOCR-json。当然,跑不起来,报错 Illegal instruction

user@debian:~/PaddleOCR-json/cpp$ cmake -S . -B build/ -DPADDLE_LIB=$PADDLE_LIB -DWITH_MKL=OFF
cmake cxx flags  -std=c++11
default cmake for auto_log, no need to compile
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/PaddleOCR-json/cpp/build
user@debian:~/PaddleOCR-json/cpp$ cmake --build build/
[100%] Built target ppocr
user@debian:~/PaddleOCR-json/cpp$ cd .source/
user@debian:~/PaddleOCR-json/cpp/.source$ LD_LIBRARY_PATH=$LIBS ../build/ppocr -config_path=models/config_chinese.txt -image_path='data/img1.png' -enable_mkldnn=false
PaddleOCR-json v1.3.1 dev
Load config from [models/config_chinese.txt] : det_model_dir set to models/ch_PP-OCRv3_det_infercls_model_dir set to models/ch_ppocr_mobile_v2.0_cls_inferrec_model_dir set to models/ch_PP-OCRv3_rec_inferrec_char_dict_path set to models/dict_chinese.txt.
OCR single image mode. Path: data/img1.png
OCR init completed.
pathU8: data/img1.png
Illegal instruction
user@debian:~/PaddleOCR-json/cpp/.source$ lscpu | grep Flags | grep avx
user@debian:~/PaddleOCR-json/cpp/.source$

@hiroi-sora
Copy link
Owner Author

hiroi-sora commented Jun 2, 2024

请问PaddleOCR-json 在linux上应该强制要求 AVX 吗?PaddleOCR 官方有推出无 AVX 的预测库

我觉得 Paddle 官方C++推理库的优势是性能好速度快。如果要兼容性或者精简的话,我觉得隔壁 RapidOCR-json 更合适,它本身不依赖AVX,甚至(在win7上)连VC运行库都不需要,外部依赖性非常小。

@Gavin1937
Copy link
Contributor

请问PaddleOCR-json 在linux上应该强制要求 AVX 吗?PaddleOCR 官方有推出无 AVX 的预测库

我觉得 Paddle 官方C++推理库的优势是性能好速度快。如果要兼容性或者精简的话,我觉得隔壁 RapidOCR-json 更合适,它本身不依赖AVX,甚至(在win7上)连VC运行库都不需要,外部依赖性非常小。

也是,那就强制要求要支持 AVX 才能用 PaddleOCR-json 了。

@hiroi-sora
Copy link
Owner Author

hiroi-sora commented Jun 4, 2024

Umi-OCR 初步的 Linux 运行环境:

https://github.com/hiroi-sora/Umi-OCR_runtime_linux

如果 PaddleOCR-json 这边已经基本完成了 Linux 兼容工作,那么下一步可以尝试进行 Umi 的移植了。

继续欢迎你的PR~

@Gavin1937
Copy link
Contributor

辛苦了。其实PaddleOCR-json这边我还想加几个小功能:

  1. 更新CMakeLists,直接用 cmake --install 来安装PaddleOCR-json到系统(或者指定一个安装文件夹)。这样子既可以实现安装也方便之后打包
  2. 更新参数,可以直接输入models文件夹的路径来加载推理库,这样就不用让PaddleOCR-json强制与models文件夹在同一目录下了
  3. 加一个Dockerfile,方便docker部署
  4. 顺手再写一个rest服务器,方便其他软件集成。毕竟PaddleOCR-json在跨进程数据传输时用的都是json,只需要把现有的socket服务器换成http的就行了。直接用cpp-httplib,很省事的一个header only library。其他issue也提到过这个需求 提供restfull接口调用方式 #42
  5. 当然,PaddleOCR-json的api也要跟着更新

这些功能主要是方便PaddleOCR-json的安装和部署,之后可以很方便的把它放到一个服务器上当OCR后端。这算是我自己的需求,更符合我的环境。

我自己的环境是:用着一台Windows主力机 + 一台Ubuntu的服务器,两台机子内网连接,平常一些耗时的活我都丢给服务器来做。

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