这个项目的最终目标是把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 仍然不会设置的事实。如果有人有任何想法,我仍然会全力以赴,我会继续寻找解决方案,但我不确定它是否会起作用