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

关于在java环境调用本地linux下的ocr服务问题 #130

Open
SMSshuai opened this issue Jun 18, 2024 · 3 comments
Open

关于在java环境调用本地linux下的ocr服务问题 #130

SMSshuai opened this issue Jun 18, 2024 · 3 comments

Comments

@SMSshuai
Copy link

你好请问,应该如何调用linux环境的cor,java代码调用win10环境下的本地ocr是正常的,linux部署后,直接测试是正常的,但是使用提供的java测试代码启动会失败,提示内容为空日志pd---这里输出的是空
4a666444ca14728856077f5662724e14

@Gavin1937
Copy link
Contributor

Gavin1937 commented Jun 18, 2024

你好,这种情况有可能是java主程序在启动PaddleOCR-json时没有找到它的依赖库,或者是PaddleOCR-json找不到模型库而导致的。

你可以尝试:

  1. 传入PaddleOCR-json包内的 run.sh 脚本的路径到 exePath 参数里。这个脚本会自动寻找所需的依赖来启动PaddleOCR-json。
  2. 传入一个参数 models_path 到 Ocr 对象里。你可以用这个参数来指定模型库的位置。模型库是PaddleOCR-json包内的 models 文件夹。

比如这样:

        // 可选的配置项
        Map<String, Object> arguments = new HashMap<>();
        arguments.put("models_path", "/path/to/PaddleOCR-json_v.1.4.0_debian_gcc_x86-64/models");

        // 初始化 OCR:使用本地进程或者套接字服务器
        // 本地进程: new Ocr(new File(exePath), arguments)
        // paddleocr_json 的可执行文件所在路径
        String exePath = "/path/to/PaddleOCR-json_v.1.4.0_debian_gcc_x86-64/run.sh";
        try (Ocr ocr = new Ocr(new File(exePath), arguments)) {
...

@SMSshuai
Copy link
Author

你好,这种情况有可能是java主程序在启动PaddleOCR-json时没有找到它的依赖库,或者是PaddleOCR-json找不到模型库而导致的。

你可以尝试:

  1. 传入PaddleOCR-json包内的 run.sh 脚本的路径到 exePath 参数里。这个脚本会自动寻找所需的依赖来启动PaddleOCR-json。
  2. 传入一个参数 models_path 到 Ocr 对象里。你可以用这个参数来指定模型库的位置。模型库是PaddleOCR-json包内的 models 文件夹。

比如这样:

        // 可选的配置项
        Map<String, Object> arguments = new HashMap<>();
        arguments.put("models_path", "/path/to/PaddleOCR-json_v.1.4.0_debian_gcc_x86-64/models");

        // 初始化 OCR:使用本地进程或者套接字服务器
        // 本地进程: new Ocr(new File(exePath), arguments)
        // paddleocr_json 的可执行文件所在路径
        String exePath = "/path/to/PaddleOCR-json_v.1.4.0_debian_gcc_x86-64/run.sh";
        try (Ocr ocr = new Ocr(new File(exePath), arguments)) {
...

没有调试成功~不过这个程序在win环境确实好用,速度很快质量也很好。

@Gavin1937
Copy link
Contributor

Gavin1937 commented Jun 19, 2024

这有点奇怪,如果你已经可以在linux环境下使用PaddleOCR-json,那java api也应该可以调用成功。

你可以尝试一下:

  1. 下载最新的 alpha.2 版本。昨天刚刚更新的,修了一些bug并且让 run.sh 去自动寻找使用软件包内的默认模型库(你同样可以用 models_path 参数来覆盖它)。
  2. 在你的java程序的路径下,直接用 run.sh 来跑一次OCR,看看有没有问题。

比如这样,最好全程用绝对路径

~/my-java-app$ /path/to/PaddleOCR-json_v1.4.0-alpha.2_debian_gcc_x86-64/run.sh -image_path="/path/to/image.png"

java api是将PaddleOCR-json以子进程的形式启动,然后直接通过管道进行通讯的。只要java api启动引擎的参数和你在bash里的一致,那就不应该出问题。

所以,你可以:

  1. 确认引擎可以正常使用
  2. 检查java api启动引擎的参数

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