0

Currently I am using Tesseract 3 in an android application (armv7 & arm64 architectures). But, I need to upgrade to Tesseract 4 for using some of its additional features. How do I upgrade to Tesseract 4?

These are the things I tried so far:

  1. compiling_on_terminal_or_androidStudio
  2. compiling_using_docker

Issues with those approaches:

  1. issue_with_terminal_approach
  2. issue_with_docker_approach

Error log :

D:\Kunal\tess_related\tess-backup\tess>gradlew assemble

> Task :eyes-two:generateJsonModelDebug FAILED
make: *** No rule to make target 'D:\Kunal\tess_related\tess-backup\tess\tess-two\build//intermediates/ndkBuild/debug/obj/local/armeabi-v7a/liblept.so', needed by 'D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libhydrogen.so'.  Stop.
make: *** No rule to make target 'D:\Kunal\tess_related\tess-backup\tess\tess-two\build//intermediates/ndkBuild/debug/obj/local/arm64-v8a/liblept.so', needed by 'D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libhydrogen.so'.  Stop.
make: *** No rule to make target 'D:\Kunal\tess_related\tess-backup\tess\tess-two\build//intermediates/ndkBuild/debug/obj/local/x86/liblept.so', needed by 'D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/x86/libhydrogen.so'.  Stop.
make: *** No rule to make target 'D:\Kunal\tess_related\tess-backup\tess\tess-two\build//intermediates/ndkBuild/debug/obj/local/x86_64/liblept.so', needed by 'D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/x86_64/libhydrogen.so'.  Stop.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':eyes-two:generateJsonModelDebug'.
> Build command failed.
Error while executing process C:\Users\Asus\AppData\Local\Android\Sdk\ndk-bundle\ndk-build.cmd with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=D:\Kunal\tess_related\tess-backup\tess\eyes-two\src\main\jni\Android.mk NDK_APPLICATION_MK=D:\Kunal\tess_related\tess-backup\tess\eyes-two\src\main\jni\Application.mk APP_ABI=armeabi-v7a NDK_ALL_ABIS=armeabi-v7a NDK_DEBUG=1 APP_PLATFORM=android-16 NDK_OUT=D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT=D:\Kunal\tess_related\tess-backup\tess\eyes-two\build\intermediates\ndkBuild\debug\lib TESSERACT_BUILD_PATH=D:\Kunal\tess_related\tess-backup\tess\tess-two\build APP_SHORT_COMMANDS=false LOCAL_SHORT_COMMANDS=false -B -n}
  md "D:\Kunal\tess_related\tess-backup\tess\eyes-two\build\intermediates\ndkBuild\debug\lib\armeabi-v7a" >NUL 2>NUL || rem
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../prebuilt/windows-x86_64/bin/echo.exe [armeabi-v7a] "Gdbserver      ": "[arm-linux-androideabi] D:\Kunal\tess_related\tess-backup\tess\eyes-two\build\intermediates\ndkBuild\debug\lib/armeabi-v7a/gdbserver"
  copy /b/y "C:\Users\Asus\AppData\Local\Android\Sdk\ndk-bundle\build\\..\prebuilt\android-arm\gdbserver\gdbserver" "D:\Kunal\tess_related\tess-backup\tess\eyes-two\build\intermediates\ndkBuild\debug\lib\armeabi-v7a\gdbserver" > NUL
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../prebuilt/windows-x86_64/bin/echo.exe [armeabi-v7a] "Gdbsetup       ": "D:\Kunal\tess_related\tess-backup\tess\eyes-two\build\intermediates\ndkBuild\debug\lib/armeabi-v7a/gdb.setup"
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../prebuilt/windows-x86_64/bin/echo.exe "set solib-search-path D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a" > D:\Kunal\tess_related\tess-backup\tess\eyes-two\build\intermediates\ndkBuild\debug\lib/armeabi-v7a/gdb.setup
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../prebuilt/windows-x86_64/bin/echo.exe "directory C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/sysroot D:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/common C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../sources/android/cpufeatures D:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/src D:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../tess-two/jni/com_googlecode_leptonica_android D:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../leptonica/src D:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/imageutils/../common D:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/opticalflow/../common" >> D:\Kunal\tess_related\tess-backup\tess\eyes-two\build\intermediates\ndkBuild\debug\lib/armeabi-v7a/gdb.setup
  md "D:\Kunal\tess_related\tess-backup\tess\eyes-two\build\intermediates\ndkBuild\debug\obj\local\armeabi-v7a\objs\hydrogen\src" >NUL 2>NUL || rem
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../prebuilt/windows-x86_64/bin/echo.exe [armeabi-v7a] "Compile++ thumb": "hydrogen <= clusterer.cpp"
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe -MMD -MP -MF D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs/hydrogen/src/clusterer.o.d -target armv7-none-linux-androideabi16 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes  --sysroot C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument  -D_FORTIFY_SOURCE=2 -fno-exceptions -fno-rtti -fpic -march=armv7-a -mthumb -Oz -DNDEBUG  -ID:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/src -ID:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../tess-two/jni/com_googlecode_leptonica_android -ID:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../leptonica/src -ID:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen    -DANDROID  -Wno-error=format-security   -c  D:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/src/clusterer.cpp -o D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs/hydrogen/src/clusterer.o
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../prebuilt/windows-x86_64/bin/echo.exe [armeabi-v7a] "Compile++ thumb": "hydrogen <= hydrogentextdetector.cpp"
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe -MMD -MP -MF D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs/hydrogen/src/hydrogentextdetector.o.d -target armv7-none-linux-androideabi16 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes  --sysroot C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument  -D_FORTIFY_SOURCE=2 -fno-exceptions -fno-rtti -fpic -march=armv7-a -mthumb -Oz -DNDEBUG  -ID:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/src -ID:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../tess-two/jni/com_googlecode_leptonica_android -ID:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../leptonica/src -ID:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen    -DANDROID  -Wno-error=format-security   -c  D:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/src/hydrogentextdetector.cpp -o D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs/hydrogen/src/hydrogentextdetector.o
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../prebuilt/windows-x86_64/bin/echo.exe [armeabi-v7a] "Compile++ thumb": "hydrogen <= thresholder.cpp"
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe -MMD -MP -MF D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs/hydrogen/src/thresholder.o.d -target armv7-none-linux-androideabi16 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes  --sysroot C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument  -D_FORTIFY_SOURCE=2 -fno-exceptions -fno-rtti -fpic -march=armv7-a -mthumb -Oz -DNDEBUG  -ID:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/src -ID:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../tess-two/jni/com_googlecode_leptonica_android -ID:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../leptonica/src -ID:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen    -DANDROID  -Wno-error=format-security   -c  D:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/src/thresholder.cpp -o D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs/hydrogen/src/thresholder.o
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../prebuilt/windows-x86_64/bin/echo.exe [armeabi-v7a] "Compile++ thumb": "hydrogen <= utilities.cpp"
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe -MMD -MP -MF D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs/hydrogen/src/utilities.o.d -target armv7-none-linux-androideabi16 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes  --sysroot C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument  -D_FORTIFY_SOURCE=2 -fno-exceptions -fno-rtti -fpic -march=armv7-a -mthumb -Oz -DNDEBUG  -ID:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/src -ID:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../tess-two/jni/com_googlecode_leptonica_android -ID:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../leptonica/src -ID:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen    -DANDROID  -Wno-error=format-security   -c  D:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/src/utilities.cpp -o D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs/hydrogen/src/utilities.o
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../prebuilt/windows-x86_64/bin/echo.exe [armeabi-v7a] "Compile++ thumb": "hydrogen <= validator.cpp"
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe -MMD -MP -MF D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs/hydrogen/src/validator.o.d -target armv7-none-linux-androideabi16 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes  --sysroot C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument  -D_FORTIFY_SOURCE=2 -fno-exceptions -fno-rtti -fpic -march=armv7-a -mthumb -Oz -DNDEBUG  -ID:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/src -ID:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../tess-two/jni/com_googlecode_leptonica_android -ID:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../leptonica/src -ID:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen    -DANDROID  -Wno-error=format-security   -c  D:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/src/validator.cpp -o D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs/hydrogen/src/validator.o
  md "D:\Kunal\tess_related\tess-backup\tess\eyes-two\build\intermediates\ndkBuild\debug\obj\local\armeabi-v7a\objs\hydrogen\jni" >NUL 2>NUL || rem
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../prebuilt/windows-x86_64/bin/echo.exe [armeabi-v7a] "Compile++ thumb": "hydrogen <= hydrogentextdetector.cpp"
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe -MMD -MP -MF D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs/hydrogen/jni/hydrogentextdetector.o.d -target armv7-none-linux-androideabi16 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes  --sysroot C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument  -D_FORTIFY_SOURCE=2 -fno-exceptions -fno-rtti -fpic -march=armv7-a -mthumb -Oz -DNDEBUG  -ID:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/src -ID:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../tess-two/jni/com_googlecode_leptonica_android -ID:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../leptonica/src -ID:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen    -DANDROID  -Wno-error=format-security   -c  D:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/jni/hydrogentextdetector.cpp -o D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs/hydrogen/jni/hydrogentextdetector.o
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../prebuilt/windows-x86_64/bin/echo.exe [armeabi-v7a] "Compile++ thumb": "hydrogen <= thresholder.cpp"
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe -MMD -MP -MF D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs/hydrogen/jni/thresholder.o.d -target armv7-none-linux-androideabi16 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes  --sysroot C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument  -D_FORTIFY_SOURCE=2 -fno-exceptions -fno-rtti -fpic -march=armv7-a -mthumb -Oz -DNDEBUG  -ID:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/src -ID:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../tess-two/jni/com_googlecode_leptonica_android -ID:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../leptonica/src -ID:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen    -DANDROID  -Wno-error=format-security   -c  D:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/jni/thresholder.cpp -o D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs/hydrogen/jni/thresholder.o
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../prebuilt/windows-x86_64/bin/echo.exe [armeabi-v7a] "Compile++ thumb": "hydrogen <= jni.cpp"
  C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe -MMD -MP -MF D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs/hydrogen/jni/jni.o.d -target armv7-none-linux-androideabi16 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes  --sysroot C:/Users/Asus/AppData/Local/Android/Sdk/ndk-bundle/build//../toolchains/llvm/prebuilt/windows-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument  -D_FORTIFY_SOURCE=2 -fno-exceptions -fno-rtti -fpic -march=armv7-a -mthumb -Oz -DNDEBUG  -ID:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/src -ID:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../tess-two/jni/com_googlecode_leptonica_android -ID:\Kunal\tess_related\tess-backup\tess\tess-two\build/../../leptonica/src -ID:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen    -DANDROID  -Wno-error=format-security   -c  D:/Kunal/tess_related/tess-backup/tess/eyes-two/src/main/jni/hydrogen/jni/jni.cpp -o D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs/hydrogen/jni/jni.o
  md "D:\Kunal\tess_related\tess-backup\tess\eyes-two\build\intermediates\ndkBuild\debug\obj\local\armeabi-v7a" >NUL 2>NUL || rem

  make: *** No rule to make target 'D:\Kunal\tess_related\tess-backup\tess\tess-two\build//intermediates/ndkBuild/debug/obj/local/armeabi-v7a/liblept.so', needed by 'D:/Kunal/tess_related/tess-backup/tess/eyes-two/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libhydrogen.so'.  Stop.


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.1.1/userguide/command_line_interface.html#sec:command_line_warnings

1 Answers1

1

Firstly, don't bother with official docs, they won't be of any help.

Main resource to follow : Tesseract_4_with_Android

Using Android Studio, follow the steps (as instructed here) :

  • Open this project in Android Studio
  • Open Gradle panel, expand Tesseract4Android / :tesseract4Android / Tasks / other and run assembleRelease

view_assembly_location_in_Android_Studio

(Note: some steps in android studio pause multiple times, so make sure to wait for several minutes before going to next step to make sure the step was completely executed)

Then, after completing the steps, to locate the output file, go through this thread : get_output. Or, simply go to tesseract4android\build\outputs\aar directory. Here, we get an .aar file.

Now, to get the libtesseract.so file, we first need to unzip the aar file (how_to_unzip_aar_file), and then open jni folder to get libtesseract.so and other .so files.

Note : For detailed info about this issue, refer to this thread.

Additional info

For compiling Tesseract 4 for iOS platform, refer here