個人使用tess4j的所有版本(從1.3.0-4.5.0),在配置了TESSDATA_PREFIX變數的前提下,同時確認TESSDATA目錄可以訪問沒有任何問題。源圖片可以訪問沒有任何問題(實際上用其他ocr已經決議過該圖片了),使用如下代碼一直報如下錯誤,
原始碼如下:
String imagePath = "C:/Users/it/Desktop/temp/abc-1.png";
String TESSDATA = "D:/abc/bcd/tessj4/tessdata";
File imageFile = new File(imagePath);
ITesseract instance = new Tesseract(); // JNA Interface Mapping
// ITesseract instance = new Tesseract1(); // JNA Direct Mapping
instance.setDatapath(TESSDATA); // path to tessdata directory
String result = instance.doOCR(imageFile);
System.out.println(result);
錯誤如下:
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
Error opening data file D:/abc/bcd/tessj4/tessdata/eng.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory.
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(Tesseract.java:491)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:354)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:228)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:195)
at com.jason.test.ocr.TestOcr.main(TestOcr.java:21)
大佬們幫忙看下了,謝謝。
說TESSDATA路徑有問題的就不用看了,可以保證無論是環境變數方式還是代碼區域設定方式,在路徑正確的情況下都是沒有效果的。
而且無論是采用PREFIXE方式還是絕對路徑方式也都嘗試過。一樣不行。感覺這個現象不太像設定問題,但是又不知道具體是什么原因造成的。
哪位大佬有過類似經驗的幫忙出出主意,謝謝。
uj5u.com熱心網友回復:
光學掃描、影像識別這么常用的功能沒有人來賜教下嘛?大神都是如何實作的呢?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/9680.html
標籤:Java EE
上一篇:exe4j打包的exe無法啟動
