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

Android运行自定义keras-ocr TFLite模型遇版本兼容错误,求适配版本

问题:自定义Keras-OCR TFLite模型在Android运行报错,适配版本咨询

模型构建环境(Mac OSX M1)

构建模型时使用的TensorFlow相关库版本:

tensorflow-datasets       4.8.3
tensorflow-deps           2.10.0
tensorflow-estimator      2.9.0
tensorflow-macos          2.9.0
tensorflow-metadata       1.12.0
tensorflow-metal          0.5.0

模型输入输出形状

input - [  1  31 200   1]
<class 'numpy.float32'>
output - [ 1 48]
<class 'numpy.int64'>

Android端运行错误日志

执行interpreter.run(input, modelOutput);时触发崩溃:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: games.cloudfeather.mlkitcustom2, PID: 16074
    java.lang.IllegalArgumentException: Internal error: Failed to run on the given Interpreter: NodeDef mentions attr 'blank_index' not in Op<name=CTCGreedyDecoder; signature=inputs:T, sequence_length:int32 -> decoded_indices:int64, decoded_values:int64, decoded_shape:int64, log_probability:T; attr=merge_repeated:bool,default=false; attr=T:type,default=DT_FLOAT,allowed=[DT_FLOAT, DT_DOUBLE]>; NodeDef: {{node CTCGreedyDecoder}}. (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
         (while executi
        at org.tensorflow.lite.NativeInterpreterWrapper.run(Native Method)
        at org.tensorflow.lite.NativeInterpreterWrapper.run(NativeInterpreterWrapper.java:163)
        at org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:360)
        at org.tensorflow.lite.Interpreter.run(Interpreter.java:319)
        at games.cloudfeather.mlkitcustom2.MainActivity.predict(MainActivity.java:115)
        at games.cloudfeather.mlkitcustom2.MainActivity.access$000(MainActivity.java:39)
        at games.cloudfeather.mlkitcustom2.MainActivity$2$1.onComplete(MainActivity.java:63)
        at com.google.android.gms.tasks.zzi.run(com.google.android.gms:play-services-tasks@@18.0.2:1)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:226)
        at android.os.Looper.loop(Looper.java:313)
        at android.app.ActivityThread.main(ActivityThread.java:8751)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)

当前Android依赖配置

应用级build.gradle中TensorFlow Lite依赖版本为2.4.0,使用仓库预构建模型时运行正常,但自定义模型报错。请问应该使用哪个版本才能让自定义模型成功运行?


解决方案

错误根源是CTCGreedyDecoder算子的blank_index属性在TensorFlow Lite 2.4.0中未被支持,该属性是在TensorFlow 2.7及后续版本的TFLite中新增的。

你构建模型使用的是TensorFlow-macos 2.9.0,因此Android端的TensorFlow Lite依赖版本需要与模型构建时的TensorFlow大版本保持一致或更高,推荐直接使用2.9.0版本:

implementation 'org.tensorflow:tensorflow-lite:2.9.0'

若需兼容更多设备,也可尝试2.7.0及以上版本,但优先选择与构建环境一致的2.9.0,能最大程度避免算子兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:17:02