6.7.0 - Alpha - 修复打包应用无法正常使用 Paddle OCR 与 Rapid OCR 功能的问题

This commit is contained in:
SuperMonster003
2025-06-10 19:40:18 +08:00
parent 3677c6755f
commit cf954c0247
3 changed files with 8 additions and 10 deletions

View File

@@ -9,6 +9,7 @@
"使用 XML 语法将 JavaScript 表达式作为属性值时, this 对象可能出现指向错误的问题",
"调用 images.requestScreenCapture 时用户取消授权可能导致应用崩溃的问题",
"images 部分相关方法出现异常时 oneShot 标记功能失效的问题 _[`issue #372`](http://issues.autojs6.com/372)_",
"打包应用无法正常使用 Paddle OCR 与 Rapid OCR 功能的问题",
"版本历史页面部分系统因字体差别导致统计数据显示不完整的问题"
],
"improvement": [],

View File

@@ -501,9 +501,6 @@ open class ApkBuilder(apkInputStream: InputStream?, private val outApkFile: File
"libc++_shared.so",
"libpaddle_light_api_shared.so",
"libNative.so",
"libhiai.so",
"libhiai_ir.so",
"libhiai_ir_build.so",
),
assetDirsToExclude = listOf(
"models",
@@ -515,6 +512,7 @@ open class ApkBuilder(apkInputStream: InputStream?, private val outApkFile: File
aliases = listOf("rapid", "rapidocr", "rapid-ocr", "rapid_ocr"),
libsToInclude = listOf(
"libRapidOcr.so",
"libonnxruntime.so",
),
assetDirsToExclude = listOf(
"labels",
@@ -578,6 +576,7 @@ open class ApkBuilder(apkInputStream: InputStream?, private val outApkFile: File
if (!isInrt) return
val nativeLibraryDir = File(globalContext.applicationInfo.nativeLibraryDir)
val primaryNativeLibraries = nativeLibraryDir.list()?.toList() ?: emptyList()
Log.d(TAG, "Native libraries: [ ${primaryNativeLibraries.joinToString(", ")} ]")
if (!primaryNativeLibraries.containsAll(libsToInclude)) {
throw Exception(globalContext.getString(R.string.error_module_does_not_work_due_to_the_lack_of_necessary_library_files, moduleName))
}

View File

@@ -11,7 +11,6 @@ import org.autojs.autojs.runtime.api.augment.Invokable
import org.autojs.autojs.runtime.api.augment.ocr.Ocr.Companion.OcrMode
import org.autojs.autojs.util.RhinoUtils.coerceBoolean
import org.autojs.autojs.util.RhinoUtils.coerceIntNumber
import org.autojs.autojs.util.RhinoUtils.newNativeObject
import org.mozilla.javascript.NativeArray
import org.mozilla.javascript.NativeObject
@@ -45,22 +44,21 @@ class OcrPaddle(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRu
fun recognizeTextInternal(scriptRuntime: ScriptRuntime, image: ImageWrapper, options: NativeObject): List<String> {
ApkBuilder.Libs.PADDLE_OCR.ensureLibFiles(OcrMode.PADDLE.value)
val (cpuThreadNum, useSlim) = getOptions(options)
val (cpuThreadNum, useSlim) = getOcrOptions(options)
return scriptRuntime.ocrPaddle.recognizeText(image, cpuThreadNum, useSlim)
}
fun detectInternal(scriptRuntime: ScriptRuntime, image: ImageWrapper, options: NativeObject): List<OcrResult> {
ApkBuilder.Libs.PADDLE_OCR.ensureLibFiles(OcrMode.PADDLE.value)
val (cpuThreadNum, useSlim) = getOptions(options)
val (cpuThreadNum, useSlim) = getOcrOptions(options)
return scriptRuntime.ocrPaddle.detect(image, cpuThreadNum, useSlim).map { result ->
OcrResult(result.label, result.confidence, result.bounds)
}
}
private fun getOptions(options: NativeObject): OcrOptions {
val opt = options as? NativeObject ?: newNativeObject()
val cpuThreadNum = opt.inquire("cpuThreadNum", ::coerceIntNumber, DEFAULT_CPU_THREAD_NUM)
val useSlim = opt.inquire("useSlim", ::coerceBoolean, DEFAULT_USE_SLIM)
private fun getOcrOptions(options: NativeObject): OcrOptions {
val cpuThreadNum = options.inquire("cpuThreadNum", ::coerceIntNumber, DEFAULT_CPU_THREAD_NUM)
val useSlim = options.inquire("useSlim", ::coerceBoolean, DEFAULT_USE_SLIM)
return OcrOptions(cpuThreadNum, useSlim)
}