现在我在MacOSx上使用Tessaract和Android NDK制作应用程序。 我使用Eclipse作为IDE来开发程序。
我有两个问题要问:
1)。我使用最着名的例子“tess-two”设置tessaract并修改了一些以适应我现有的代码。我将文件夹“com_googlecode_leptonica_android”和“com_googlecode_tessaract_android”复制到/ jni文件夹。然后编辑Android.mk以设置这些库文件夹的路径。一切正常!除了一件事..每次我建立项目,我需要一次又一次地建立“leptonica”和“tessaract”库..为了得到libtess和liblept ..它需要太长时间。我怎么能编辑android makefile(Android.mk)而不是构建那些库..只需编译我的代码......那就是全部..这是我的Android.mk
LOCAL_PATH := $(call my-dir)
MY_PATH := $(LOCAL_PATH)
TESSERACT_PATH := $(call my-dir)/com_googlecode_tesseract_android
LEPTONICA_PATH := $(call my-dir)/com_googlecode_leptonica_android
include $(call all-subdir-makefiles)
include $(CLEAR_VARS)
include /Applications/eclipse-android/OpenCV-2.4.3-android-sdk/sdk/native/jni/OpenCV.mk
LOCAL_PATH := $(MY_PATH)
LOCAL_MODULE := my_project
LOCAL_SRC_FILES := cppmain.cpp
LOCAL_LDLIBS += -llog -ldl
include $(BUILD_SHARED_LIBRARY)
)
2)。我发现了很多关于在Android上使用tessaract的例子。然而,他们中的大多数使用tessaract与Java(通过JNI调用)并从Java代码调用JNI(Java - > Tessaract C ++ JNI - > Tessaract C ++)。我找不到任何从c ++ NDK调用tessaract的例子(Java - > my JNI - > my C ++ - > Tessract C ++)。我想直接从c ++调用tessaract的原因是可移植性。
答案 0 :(得分:1)
使用 PREBUILT_STATIC_LIBRARY ,类似
LOCAL_PATH = $(MY_PATH)/com_googlecode_tesseract_android/lib
include $(CLEAR_VARS)
LOCAL_MODULE := tesseract
LOCAL_SRC_FILES := libtesseract.a
include $(PREBUILT_STATIC_LIBRARY)
LOCAL_PATH = $(MY_PATH)/com_googlecode_leptonica_android/lib
include $(CLEAR_VARS)
LOCAL_MODULE := leptonica
LOCAL_SRC_FILES := libleptonica.a
include $(PREBUILT_STATIC_LIBRARY)
LOCAL_PATH := $(MY_PATH)
LOCAL_MODULE := my_project
LOCAL_SRC_FILES := cppmain.cpp
LOCAL_LDLIBS += -llog -ldl
LOCAL_LDFLAGS += -ltesseract -lleptonica
include $(BUILD_SHARED_LIBRARY)
tesseract项目不包含预建库,但如果您按照官方说明操作,则会构建这些库。使用PREBUILT_STATIC_LIBRARY只能帮助您避免不必要地重建这些库。对于libjpeg和libpng,建议采用相同的方法,只要您不自行更改这些库。