nguyenq / tess4j

Java JNA wrapper for Tesseract OCR API
Apache License 2.0
1.58k stars 372 forks source link

Tess4j on Mac M1 #219

Closed felixadl closed 1 year ago

felixadl commented 2 years ago

Hi,

i have problems getting tess4j running on my m1 mac. I'm getting the following exception:

exception in thread "pool-1-thread-1" java.lang.UnsatisfiedLinkError: dlopen(/Users/felix/Library/Caches/JNA/temp/jna3686725805253188253.tmp, 9): no suitable image found. Did find: /Users/felix/Library/Caches/JNA/temp/jna3686725805253188253.tmp: mach-o, but wrong architecture /Users/felix/Library/Caches/JNA/temp/jna3686725805253188253.tmp: mach-o, but wrong architecture

Is this a m1 problem? Does anyone can help?

Thanks in advance

nguyenq commented 2 years ago

It looks like there was a JNA problem with M1.

https://github.com/java-native-access/jna/issues/1313 https://github.com/java-native-access/jna/issues/1323 https://github.com/java-native-access/jna/pull/1297 https://github.com/java-native-access/jna/pull/1238

But it seems M1 support is incorporated with latest JNA versions. But if you still have issue with the latest JNA, please put in a new issue on JNA project page.

sendreams commented 1 year ago

errorinformation

/Library/Java/JavaVirtualMachines/jdk-11.0.16.jdk/Contents/Home/bin/java -Djna.library.path=/opt/homebrew/Cellar/tesseract/5.3.0_1/lib:/opt/homebrew/Cellar/leptonica/1.82.0_1/lib -Didea.test.cyclic.buffer.size=1048576 -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=52584:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar:/Applications/IntelliJ IDEA.app/Contents/plugins/junit/lib/junit5-rt.jar:/Applications/IntelliJ IDEA.app/Contents/plugins/junit/lib/junit-rt.jar:/Users/chenhong/git/ware4u-test/ocr-tesseract/target/test-classes:/Users/chenhong/.m2/repository/net/sourceforge/tess4j/tess4j/5.6.0/tess4j-5.6.0.jar:/Users/chenhong/.m2/repository/net/java/dev/jna/jna/5.13.0/jna-5.13.0.jar:/Users/chenhong/.m2/repository/com/github/jai-imageio/jai-imageio-core/1.4.0/jai-imageio-core-1.4.0.jar:/Users/chenhong/.m2/repository/org/apache/pdfbox/pdfbox/2.0.27/pdfbox-2.0.27.jar:/Users/chenhong/.m2/repository/org/apache/pdfbox/fontbox/2.0.27/fontbox-2.0.27.jar:/Users/chenhong/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/chenhong/.m2/repository/org/apache/pdfbox/pdfbox-tools/2.0.27/pdfbox-tools-2.0.27.jar:/Users/chenhong/.m2/repository/org/apache/pdfbox/pdfbox-debugger/2.0.27/pdfbox-debugger-2.0.27.jar:/Users/chenhong/.m2/repository/org/apache/pdfbox/jbig2-imageio/3.0.4/jbig2-imageio-3.0.4.jar:/Users/chenhong/.m2/repository/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar:/Users/chenhong/.m2/repository/net/sourceforge/lept4j/lept4j/1.18.0/lept4j-1.18.0.jar:/Users/chenhong/.m2/repository/org/jboss/jboss-vfs/3.2.17.Final/jboss-vfs-3.2.17.Final.jar:/Users/chenhong/.m2/repository/org/jboss/logging/jboss-logging/3.1.4.GA/jboss-logging-3.1.4.GA.jar:/Users/chenhong/.m2/repository/org/slf4j/slf4j-api/2.0.6/slf4j-api-2.0.6.jar:/Users/chenhong/.m2/repository/org/bytedeco/tesseract/5.2.0-1.5.8/tesseract-5.2.0-1.5.8.jar:/Users/chenhong/.m2/repository/org/bytedeco/leptonica/1.82.0-1.5.8/leptonica-1.82.0-1.5.8.jar:/Users/chenhong/.m2/repository/org/bytedeco/javacpp/1.5.8/javacpp-1.5.8.jar:/Users/chenhong/.m2/repository/org/bytedeco/tesseract/5.2.0-1.5.8/tesseract-5.2.0-1.5.8-macosx-arm64.jar:/Users/chenhong/.m2/repository/org/bytedeco/leptonica/1.82.0-1.5.8/leptonica-1.82.0-1.5.8-macosx-arm64.jar:/Users/chenhong/.m2/repository/junit/junit/4.12/junit-4.12.jar:/Users/chenhong/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 com.ware4u.test.ocr.tesseract.TestPDF,test SLF4J: No SLF4J providers were found. SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details. java.lang.UnsatisfiedLinkError: Error looking up function 'pixAddMultipleBlackWhiteBorders': dlsym(0x8296bc60, pixAddMultipleBlackWhiteBorders): symbol not found at com.sun.jna.Function.(Function.java:252) at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:620) at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:596) at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:582) at com.sun.jna.Native.register(Native.java:1904) at com.sun.jna.Native.register(Native.java:1775) at com.sun.jna.Native.register(Native.java:1493) at net.sourceforge.lept4j.Leptonica1.(Leptonica1.java:41) at net.sourceforge.tess4j.Tesseract1.getSegmentedRegions(Tesseract1.java:720) at com.ware4u.test.ocr.tesseract.TestPDF.test(TestPDF.java:23) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)

test code

@Test public void test() throws IOException, TesseractException { File img = new File(file); BufferedImage image = ImageIO.read(img); Tesseract1 ocr = new Tesseract1(); ocr.setLanguage("chi_sim"); List segmentedRegions = ocr.getSegmentedRegions(image, 0); // error here for (Rectangle rect : segmentedRegions){ System.out.println(rect); } // String s = ocr.doOCR(image); // System.out.println(s); List words = ocr.getWords(image, 1); System.out.println(words); }

ocr.getSegmentedRegions(image, 0); will raising error. but is ok in windows.

sendreams commented 1 year ago

install by homebrew

(base) chenhong@ChenhonacStudio ocr % tesseract --version tesseract 5.3.0 leptonica-1.82.0 libgif 5.2.1 : libjpeg 8d (libjpeg-turbo 2.1.3) : libpng 1.6.39 : libtiff 4.4.0 : zlib 1.2.11 : libwebp 1.3.0 : libopenjp2 2.5.0 Found NEON Found libcurl/7.86.0 SecureTransport (LibreSSL/3.3.6) zlib/1.2.11 nghttp2/1.47.0

nguyenq commented 1 year ago

@sendreams Your issue is different from this one. Please create a new separate ticket.