Fork of tess-two rewritten from scratch to support latest version of Tesseract OCR.
Fork of tess-two rewritten from scratch to support latest version of Tesseract OCR.
Fork of tess-two rewritten from scratch to build with CMake and support latest Android Studio and Tesseract OCR.
The Java/JNI wrapper files and tests for Leptonica / Tesseract are based on the tess-two project, which is based on Tesseract Tools for Android.
This project uses additional libraries (with their own specific licenses):
tessdata and the path must be readable
by the app. When targeting API >=29, only suitable places for this are app's private directories
(like context.getFilesDir() or context.getExternalFilesDir()).This library is available in two variants.
You can get compiled version of Tesseract4Android from JitPack.io.
settings.gradle file at the end of repositories:dependencyResolutionManagement {
repositories {
maven {
...
url = uri("https://jitpack.io")
}
}
}build.gradle file:dependencies {
// To use Standard variant:
implementation 'cz.adaptech.tesseract4android:tesseract4android:4.9.0'
// To use OpenMP variant:
implementation 'cz.adaptech.tesseract4android:tesseract4android-openmp:4.9.0'
}TessBaseAPI class in your code:This is the simplest example you can have. In this case TessBaseAPI is always created, used to recognize the image and then destroyed. Better would be to create and initialize the instance only once and use it to recognize multiple images instead. Look at the sample project for such usage, additionally with progress notifications and a way to stop the ongoing processing.
…There is example application in the sample directory. It shows basic usage of the TessBaseAPI inside ViewModel, showing progress indication, allowing stopping the processing, filtering results based on confidence, and more.
It uses sample image and english traineddata, which are extracted from the assets in the APK to app's private directory on device. This is simple, but you are keeping 2 instances of the data file (first is kept in the APK file itself, second is kept on the storage) - wasting some space. If you plan to use multiple traineddata files, it would be better to download them directly from the internet rather than distributing them within the APK.
You can use Android Studio to open the project and build the AAR. Or you can use gradlew from command line.
To build the release version of the library, use task tesseract4android:assembleRelease.
After successful build, you will have resulting AAR files in the /tesseract4Android/build/outputs/aar/ directory.
Or you can publish the AAR directly to your local maven repository, by using task tesseract4android:publishToMavenLocal.
After successful build, you can consume your library as any other maven dependency. Just make sure
to add mavenLocal() repository in repositories {} block in your project's build.gradle file.
Tesseract4Android / :tesseract4Android / Tasks / other and run assembleRelease (to get AAR).Tesseract4Android / :tesseract4Android / Tasks / publishing and run publishToMavenLocal (to publish AAR).local.properties file containing:sdk.dir=c\:\\your\\path\\to\\android\\sdk
ndk.dir=c\:\\your\\path\\to\\android\\ndk Note for paths on Windows you must use \ to escape some special characters, as in example above.
gradlew tesseract4android:assembleRelease from command line (to get AAR).gradlew tesseract4android:publishToMavenLocal from command line (to publish AAR).Copyright 2019 Adaptech s.r.o., Robert Pösel
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.No open issues yet, or sync has not completed.