On linux server tesseract 3.0.2
libraries were correctly installed:
[root@XXX as]# rpm -qa | grep ".*tess.*"
tesseract-3.02-alt1.r723
When trying to run tess4j
wrapper, got this exception:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'TessBaseAPICreate': /usr/lib64/libtesseract.so.3.0.2: undefined symbol: TessBaseAPICreate
at com.sun.jna.Function.<init>(Function.java:208)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:536)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:513)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:499)
at com.sun.jna.Library$Handler.invoke(Library.java:199)
at com.sun.proxy.$Proxy0.TessBaseAPICreate(Unknown Source)
at net.sourceforge.tess4j.Tesseract.init(Tesseract.java:284)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:219)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:200)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:184)
(... private code ...)
Mentioned in exception file exists:
[root@XXX as]# test -e /usr/lib64/libtesseract.so.3.0.2 && echo "Found" || echo "Not found"
Found
The place in tess4j
code, which throws the exception looks like:
/**
* Initializes Tesseract engine.
*/
private void init() {
pageNum = 0;
api = TessAPI.INSTANCE;
handle = api.TessBaseAPICreate(); // ERROR HERE, line #184
api.TessBaseAPIInit2(handle, datapath, language, ocrEngineMode);
api.TessBaseAPISetPageSegMode(handle, psm);
}
I have no idea, how to solve it, because all libraries versions are same, it works perfectly under windows.
Well, this was particular problem with that package in used OS ("ALT Linux Centaurus 6.0"). After rebuilding tesseract
package from sources under that OS everything became OK.