From cf954c0247c8721c1bcc2bc066598a7169e3fe3a Mon Sep 17 00:00:00 2001 From: SuperMonster003 Date: Tue, 10 Jun 2025 19:40:18 +0800 Subject: [PATCH] =?UTF-8?q?6.7.0=20-=20Alpha=20-=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=89=93=E5=8C=85=E5=BA=94=E7=94=A8=E6=97=A0=E6=B3=95=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8=E4=BD=BF=E7=94=A8=20Paddle=20OCR=20=E4=B8=8E=20Rapid?= =?UTF-8?q?=20OCR=20=E5=8A=9F=E8=83=BD=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changelog/lang_zh-Hans.json | 1 + .../java/org/autojs/autojs/apkbuilder/ApkBuilder.kt | 5 ++--- .../autojs/runtime/api/augment/ocr/OcrPaddle.kt | 12 +++++------- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/.changelog/lang_zh-Hans.json b/.changelog/lang_zh-Hans.json index e0217e58..4afdb4aa 100644 --- a/.changelog/lang_zh-Hans.json +++ b/.changelog/lang_zh-Hans.json @@ -9,6 +9,7 @@ "使用 XML 语法将 JavaScript 表达式作为属性值时, this 对象可能出现指向错误的问题", "调用 images.requestScreenCapture 时用户取消授权可能导致应用崩溃的问题", "images 部分相关方法出现异常时 oneShot 标记功能失效的问题 _[`issue #372`](http://issues.autojs6.com/372)_", + "打包应用无法正常使用 Paddle OCR 与 Rapid OCR 功能的问题", "版本历史页面部分系统因字体差别导致统计数据显示不完整的问题" ], "improvement": [], diff --git a/app/src/main/java/org/autojs/autojs/apkbuilder/ApkBuilder.kt b/app/src/main/java/org/autojs/autojs/apkbuilder/ApkBuilder.kt index 97aeeb59..b3ef484a 100644 --- a/app/src/main/java/org/autojs/autojs/apkbuilder/ApkBuilder.kt +++ b/app/src/main/java/org/autojs/autojs/apkbuilder/ApkBuilder.kt @@ -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)) } diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/ocr/OcrPaddle.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/ocr/OcrPaddle.kt index 11425b3f..b7730dab 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/ocr/OcrPaddle.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/ocr/OcrPaddle.kt @@ -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 { 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 { 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) }