Tesseract For Java为可执行jar设置Tessdata_Prefix
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Tesseract For Java为可执行jar设置Tessdata_Prefix,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1884字,纯文字阅读大概需要3分钟。
内容图文
![Tesseract For Java为可执行jar设置Tessdata_Prefix](/upload/InfoBanner/zyjiaocheng/780/b12226c5d171491aaccfda192a2c4663.jpg)
该项目的最终目标是获取jar并将其放在使用tesseract的目录中,并输出结果目录和输出txt文件.不过,我在使用tesseract时遇到了一些问题.
我正在使用Java中的tess4j与Maven合作,我想将我的代码变成可执行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/
内容总结
以上是互联网集市为您收集整理的Tesseract For Java为可执行jar设置Tessdata_Prefix全部内容,希望文章能够帮你解决Tesseract For Java为可执行jar设置Tessdata_Prefix所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。