问题描述
我目前正在开发一个程序,该程序应该使用OpenCV和Tessj4检测图像中的字母和数字。为此,我从https://github.com/UB-Mannheim/tesseract/wiki下载并安装了Tesseract(5.0.0版),从http://tess4j.sourceforge.net下载了Tess4j API(3.4.8版)并添加了.jar文件(tess4j-3.4.8)。 jar + lib文件夹中的所有.jar文件)到我的项目。
此外,我在系统路径中包含了tesseract目录(C:/ Program Files / Tesseract-OCR),并将TESSDATA_PREFIX及其值(C:/ Program Files / Tesseract-OCR / tessdata)添加到了我的环境变量中。 >
但是,当我尝试运行这4条简单的代码行时,出现以下错误:
Tesseract tesseract = new Tesseract();
tesseract.setDatapath("C:/Program Files/Tesseract-OCR/tessdata");
tesseract.setLanguage("eng");
System.out.println(tesseract.doOCR(new File("screen.png")));
Failed loading language 'eng'
Tesseract couldn't load any languages!
Exception in thread "main" java.lang.Error: Invalid memory access
at com.sun.jna.Native.invokePointer(Native Method)
at com.sun.jna.Function.invokePointer(Function.java:470)
at com.sun.jna.Function.invoke(Function.java:404)
at com.sun.jna.Function.invoke(Function.java:315)
at com.sun.jna.Library$Handler.invoke(Library.java:212)
at com.sun.proxy.$Proxy0.TessBaseAPIGetUTF8Text(Unknown Source)
at net.sourceforge.tess4j.Tesseract.getOCRText(Unknown Source)
at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source)
at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source)
at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source)
at app.Main.main(Main.java:41)
但是,当我使用控制台运行tesseract程序,然后读取所创建文件的内容时,一切都正常工作。
Process p = Runtime.getRuntime().exec("cmd /c tesseract screen.png text -l eng");
while(p.isAlive())
Thread.sleep(5);
BufferedReader reader = new BufferedReader(new FileReader(new File("text.txt")));
StringBuilder stringBuilder = new StringBuilder();
String line;
while((line = reader.readLine()) != null)
stringBuilder.append(line).append("\n");
reader.close();
System.out.println(stringBuilder.toString().trim());
有人知道如何解决此问题吗?
谢谢,伊普塞隆。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)