You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android平台(armv7/arm64)升级Tesseract 4编译失败求助

解决Tesseract 4升级编译时找不到liblept.so及Gradle兼容问题

我之前升级Tesseract到4的时候也踩过类似的坑,给你整理几个关键的解决步骤:

一、先解决liblept.so找不到的核心问题

这个错误本质是eyes-two模块编译时,找不到tess-two模块生成的Leptonica库文件,大概率是依赖配置或构建顺序的问题:

  • 检查模块依赖与NDK配置
    确认eyes-two的Android.mk里正确引用了tess-two的库路径和依赖。比如要包含类似这样的配置:

    # 指定tess-two的构建输出路径
    TESSERACT_BUILD_PATH := ../../tess-two/build
    # 添加Leptonica和Tesseract的库搜索路径
    LOCAL_LDFLAGS += -L$(TESSERACT_BUILD_PATH)/intermediates/ndkBuild/debug/obj/local/$(TARGET_ARCH_ABI)
    # 声明依赖的共享库
    LOCAL_SHARED_LIBRARIES += lept tesseract
    

    同时确保tess-two的Android.mk里正确编译了Leptonica(Tesseract 4依赖Leptonica 1.78+,要确认tess-two的子模块里Leptonica版本符合要求)。

  • 清理构建缓存
    旧的构建缓存经常会导致路径或文件残留问题,先执行清理命令:

    gradlew clean
    

    然后再重新执行编译:

    gradlew assembleDebug
    
  • 更换兼容的NDK版本
    旧版NDK(比如你用的ndk-bundle可能是较老的版本)对Tesseract 4的编译支持不好,建议切换到NDK r21e或更高版本(比如r23b)。在Android Studio中通过File > Project Structure > SDK Location指定新的NDK路径,或者在local.properties里配置:

    ndk.dir=/path/to/your/ndk/r21e
    

二、解决Gradle版本兼容问题

提示里说构建使用了已弃用的Gradle特性,和Gradle 6.0不兼容,需要调整Gradle插件与Gradle版本的匹配:

  • 升级Gradle插件和Gradle版本
    打开项目根目录的build.gradle,将Gradle插件版本调整为与Gradle 6.0+兼容的版本,比如:

    buildscript {
        dependencies {
            classpath 'com.android.tools.build:gradle:4.2.2' // 对应Gradle 6.7.1
        }
    }
    

    同时修改gradle/wrapper/gradle-wrapper.properties里的Gradle版本:

    distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
    
  • 优化NDK构建配置
    建议在模块的build.gradle里用externalNativeBuild的方式配置ndkBuild,替代直接调用ndk-build.cmd,这样Gradle能更好地管理构建顺序:

    android {
        externalNativeBuild {
            ndkBuild {
                path 'src/main/jni/Android.mk'
            }
        }
        defaultConfig {
            externalNativeBuild {
                ndkBuild {
                    abiFilters 'armeabi-v7a', 'arm64-v8a' // 只编译你需要的架构,减少冗余
                    arguments 'NDK_DEBUG=1', 'APP_PLATFORM=android-16'
                }
            }
        }
    }
    

三、Docker编译的补充建议

如果用Docker编译,要确保:

  • 镜像里安装了兼容的NDK版本(r21e+)
  • 挂载的项目目录权限正确,避免Docker容器无法读写文件
  • 编译时指定正确的工作目录,比如:
    docker run -v /your/local/project/path:/app -w /app android-ndk-r21e ./gradlew assembleDebug
    

按这些步骤排查后,应该能解决大部分编译问题。如果还是有问题,可以检查tess-two模块的构建输出目录,确认是否真的生成了liblept.so文件——如果tess-two本身编译失败,那eyes-two肯定找不到这个库,这时候要先解决tess-two的编译问题。

内容的提问来源于stack exchange,提问作者Kunal Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 17:02:30