gpt4 book ai didi

java - Tesseract For Java 为可执行 jar 设置 Tessdata_Prefix

转载 作者:搜寻专家 更新时间:2023-11-01 03:19:13 25 4
gpt4 key购买 nike

该项目的最终目标是获取 jar 并将其放在使用 tesseract 的目录中,并输出结果目录和输出 txt 文件。不过,我在使用 tesseract 时遇到了一些问题。我正在使用 Maven 使用 Java 中的 tess4j,我想将我的代码制作成一个可执行的 jar。该项目作为桌面应用程序运行良好,但每当我尝试使用 java -jar fileName.jar(导出到 jar 后)运行时,它都会给我错误

Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory
Failed loading language 'eng'
...

我在网上查了一下,并没有真正找到如何为一个 jar 设置 tesseract 并获得正确的路径。现在我使用 maven 并在我的 pom 文件 (tess4j -v 3.0) 中具有 Tesseract 依赖项,并且在我的项目中具有 tessdata。

我对 maven 和 jar 文件相当陌生,以前从未使用过 tesseract,但据我从互联网上得知我已正确设置它。

有谁知道如何使 tess4j 指向我项目中的 tessdata 目录并具有动态路径,以便我可以在多台计算机和多个地方移动使用它?

这就是我对 Tesseract 的称呼

    Tesseract instance = new Tesseract();
instance.setDatapath("src/main/resources");
String result = instance.doOCR(imageFile);
String fileName = imageFile.getName().replace(".jpg", "");
System.out.println("Parsed Image " + fileName);
return result;

编辑

这就是我尝试在我的代码中设置环境变量 TESSDATA_PREFIX 的方式

String dir = System.getProperty("user.dir");
System.out.println("current dir = " + dir);
ProcessBuilder pb = new ProcessBuilder("CMD", "/C", "SET");
Map<String, String> env = pb.environment();
env.put("TESSDATA_PREFIX", dir + "\\tessdata");
Process p = pb.start();

但这没有明显的效果。我仍然遇到同样的错误

编辑 2

根据报错信息我需要设置到tessdata的父目录下,我也试过了没有用

编辑 3

经过大量搜索并尝试修复它,我不确定它是否可行。 tesseract 中的 doOcr 方法接受一个缓冲图像或文件,如果我的图像不是动态的,这会没问题,所以我不能真正将它们存储在 jar 中。更不用说 TESSDATA_PREFIX 仍然不会设置的事实。如果有人有任何想法,我会洗耳恭听,我会继续寻找解决方案,但我不确定它是否会奏效

最佳答案

您可以调用 instance.setDatapath 方法将 Tesseract 指向您的 tessdata 文件夹的位置。

http://tess4j.sourceforge.net/docs/docs-3.0/

关于java - Tesseract For Java 为可执行 jar 设置 Tessdata_Prefix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36166164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com