From a46d78b7049a216bcd58b83c702882c404693270 Mon Sep 17 00:00:00 2001 From: SuperMonster003 Date: Sun, 18 Jan 2026 23:33:18 +0800 Subject: [PATCH] =?UTF-8?q?6.7.0=20-=20Alpha16=20-=20=E6=89=93=E5=8C=85?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E6=94=AF=E6=8C=81=E8=87=AA=E5=B8=A6=E7=A6=BB?= =?UTF-8?q?=E7=BA=BF=20Paddle=20OCR=20=E5=BC=95=E6=93=8E,=20=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E4=BE=9D=E8=B5=96=E6=8F=92=E4=BB=B6=E5=AE=89=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 7 +- ...R (内置API).js => PaddleOCR (内置 API).js} | 0 ...类).js => PaddleOCR (原始类) [v6.7.0+].js} | 16 + .../OCR/PaddleOCR (截图识别) [v6.7.0+].js | 232 +++++++ .../sample/OCR/PaddleOCR (截图识别).js | 198 ------ .../autojs/autojs/apkbuilder/ApkBuilder.kt | 430 ++++++++++++- .../center/InstalledPluginRepository.kt | 2 +- .../core/plugin/ocr/PaddleOcrPluginHost.kt | 8 +- .../runtime/api/augment/ocr/OcrMLKit.kt | 4 +- .../runtime/api/augment/ocr/OcrPaddle.kt | 39 +- .../runtime/api/augment/ocr/OcrRapid.kt | 4 +- .../augment/ocr/PaddleOcrEmbeddedEngine.kt | 82 +++ .../autojs/ui/project/BuildActivity.java | 2 +- app/src/main/res/values-ar/strings.xml | 10 + app/src/main/res/values-en/strings.xml | 10 + app/src/main/res/values-es/strings.xml | 10 + app/src/main/res/values-fr/strings.xml | 10 + app/src/main/res/values-ja/strings.xml | 10 + app/src/main/res/values-ko/strings.xml | 10 + app/src/main/res/values-ru/strings.xml | 10 + app/src/main/res/values-zh-rHK/strings.xml | 12 +- app/src/main/res/values-zh-rTW/strings.xml | 12 +- app/src/main/res/values-zh/strings.xml | 12 +- app/src/main/res/values/strings.xml | 10 + .../build.gradle.kts | 2 +- .../consumer-rules.pro | 0 .../plugin/paddle/ocr/api}/IOcrPlugin.aidl | 8 +- .../plugin/paddle/ocr/api}/OcrOptions.aidl | 2 +- .../plugin/paddle/ocr/api}/OcrResult.aidl | 2 +- .../plugin/paddle/ocr/api}/PluginInfo.aidl | 2 +- plugin-api/paddle-ocr-engine/build.gradle.kts | 40 ++ .../paddle-ocr-engine/consumer-rules.pro | 0 .../paddle/lite/ocr/OCRPredictorNative.java | 123 ++++ .../com/baidu/paddle/lite/ocr/OcrResult.java | 134 ++++ .../baidu/paddle/lite/ocr/OcrResultModel.java | 97 +++ .../baidu/paddle/lite/ocr/OpenCLGuard.java | 155 +++++ .../baidu/paddle/lite/ocr/OpenCLProbe.java | 8 + .../baidu/paddle/lite/ocr/PaddleOcrEngine.kt | 286 +++++++++ .../com/baidu/paddle/lite/ocr/Predictor.java | 582 ++++++++++++++++++ .../paddle/lite/ocr/PredictorNativeBridge.kt | 138 +++++ .../java/com/baidu/paddle/lite/ocr/Utils.java | 199 ++++++ .../src/main/res/drawable/paddle_ocr_test.png | Bin 0 -> 2786 bytes .../src/main/res/values-ar/strings.xml | 7 + .../src/main/res/values-en/strings.xml | 7 + .../src/main/res/values-es/strings.xml | 7 + .../src/main/res/values-fr/strings.xml | 7 + .../src/main/res/values-ja/strings.xml | 7 + .../src/main/res/values-ko/strings.xml | 7 + .../src/main/res/values-ru/strings.xml | 7 + .../src/main/res/values-zh-rHK/strings.xml | 7 + .../src/main/res/values-zh-rTW/strings.xml | 7 + .../src/main/res/values-zh/strings.xml | 7 + .../src/main/res/values/strings.xml | 7 + settings.gradle.kts | 3 +- 54 files changed, 2745 insertions(+), 253 deletions(-) rename app/src/main/assets-app/sample/OCR/{PaddleOCR (内置API).js => PaddleOCR (内置 API).js} (100%) rename app/src/main/assets-app/sample/OCR/{PaddleOCR (原始类).js => PaddleOCR (原始类) [v6.7.0+].js} (81%) create mode 100644 app/src/main/assets-app/sample/OCR/PaddleOCR (截图识别) [v6.7.0+].js delete mode 100644 app/src/main/assets-app/sample/OCR/PaddleOCR (截图识别).js create mode 100644 app/src/main/java/org/autojs/autojs/runtime/api/augment/ocr/PaddleOcrEmbeddedEngine.kt rename plugin-api/{paddle-ocr => paddle-ocr-api}/build.gradle.kts (91%) rename plugin-api/{paddle-ocr => paddle-ocr-api}/consumer-rules.pro (100%) rename plugin-api/{paddle-ocr/src/main/aidl/org/autojs/plugin/paddle/ocr => paddle-ocr-api/src/main/aidl/org/autojs/plugin/paddle/ocr/api}/IOcrPlugin.aidl (57%) rename plugin-api/{paddle-ocr/src/main/aidl/org/autojs/plugin/paddle/ocr => paddle-ocr-api/src/main/aidl/org/autojs/plugin/paddle/ocr/api}/OcrOptions.aidl (80%) rename plugin-api/{paddle-ocr/src/main/aidl/org/autojs/plugin/paddle/ocr => paddle-ocr-api/src/main/aidl/org/autojs/plugin/paddle/ocr/api}/OcrResult.aidl (75%) rename plugin-api/{paddle-ocr/src/main/aidl/org/autojs/plugin/paddle/ocr => paddle-ocr-api/src/main/aidl/org/autojs/plugin/paddle/ocr/api}/PluginInfo.aidl (91%) create mode 100644 plugin-api/paddle-ocr-engine/build.gradle.kts create mode 100644 plugin-api/paddle-ocr-engine/consumer-rules.pro create mode 100644 plugin-api/paddle-ocr-engine/src/main/java/com/baidu/paddle/lite/ocr/OCRPredictorNative.java create mode 100644 plugin-api/paddle-ocr-engine/src/main/java/com/baidu/paddle/lite/ocr/OcrResult.java create mode 100644 plugin-api/paddle-ocr-engine/src/main/java/com/baidu/paddle/lite/ocr/OcrResultModel.java create mode 100644 plugin-api/paddle-ocr-engine/src/main/java/com/baidu/paddle/lite/ocr/OpenCLGuard.java create mode 100644 plugin-api/paddle-ocr-engine/src/main/java/com/baidu/paddle/lite/ocr/OpenCLProbe.java create mode 100644 plugin-api/paddle-ocr-engine/src/main/java/com/baidu/paddle/lite/ocr/PaddleOcrEngine.kt create mode 100644 plugin-api/paddle-ocr-engine/src/main/java/com/baidu/paddle/lite/ocr/Predictor.java create mode 100644 plugin-api/paddle-ocr-engine/src/main/java/com/baidu/paddle/lite/ocr/PredictorNativeBridge.kt create mode 100644 plugin-api/paddle-ocr-engine/src/main/java/com/baidu/paddle/lite/ocr/Utils.java create mode 100644 plugin-api/paddle-ocr-engine/src/main/res/drawable/paddle_ocr_test.png create mode 100644 plugin-api/paddle-ocr-engine/src/main/res/values-ar/strings.xml create mode 100644 plugin-api/paddle-ocr-engine/src/main/res/values-en/strings.xml create mode 100644 plugin-api/paddle-ocr-engine/src/main/res/values-es/strings.xml create mode 100644 plugin-api/paddle-ocr-engine/src/main/res/values-fr/strings.xml create mode 100644 plugin-api/paddle-ocr-engine/src/main/res/values-ja/strings.xml create mode 100644 plugin-api/paddle-ocr-engine/src/main/res/values-ko/strings.xml create mode 100644 plugin-api/paddle-ocr-engine/src/main/res/values-ru/strings.xml create mode 100644 plugin-api/paddle-ocr-engine/src/main/res/values-zh-rHK/strings.xml create mode 100644 plugin-api/paddle-ocr-engine/src/main/res/values-zh-rTW/strings.xml create mode 100644 plugin-api/paddle-ocr-engine/src/main/res/values-zh/strings.xml create mode 100644 plugin-api/paddle-ocr-engine/src/main/res/values/strings.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index dd5b9e3c..fe952eac 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -253,8 +253,11 @@ dependencies /* Unclassified */ { // R8 implementation(libs.r8) - // Plugin API: Paddle OCR - implementation(project(":plugin-api:paddle-ocr")) + // Plugin API: Paddle OCR API + implementation(project(":plugin-api:paddle-ocr-api")) + + // Plugin API: Paddle OCR Engine + implementation(project(":plugin-api:paddle-ocr-engine")) } dependencies /* MIME */ { diff --git a/app/src/main/assets-app/sample/OCR/PaddleOCR (内置API).js b/app/src/main/assets-app/sample/OCR/PaddleOCR (内置 API).js similarity index 100% rename from app/src/main/assets-app/sample/OCR/PaddleOCR (内置API).js rename to app/src/main/assets-app/sample/OCR/PaddleOCR (内置 API).js diff --git a/app/src/main/assets-app/sample/OCR/PaddleOCR (原始类).js b/app/src/main/assets-app/sample/OCR/PaddleOCR (原始类) [v6.7.0+].js similarity index 81% rename from app/src/main/assets-app/sample/OCR/PaddleOCR (原始类).js rename to app/src/main/assets-app/sample/OCR/PaddleOCR (原始类) [v6.7.0+].js index 068a27cd..bfc9e6c6 100644 --- a/app/src/main/assets-app/sample/OCR/PaddleOCR (原始类).js +++ b/app/src/main/assets-app/sample/OCR/PaddleOCR (原始类) [v6.7.0+].js @@ -2,6 +2,22 @@ * @author TonyJiangWJ */ !function originalClassesForPaddleOcr() { + + let hintForAutoJs670AndAbove = '自 AutoJs6 6.7.0 起, Paddle OCR 已进行功能插件化, 因此无法再使用内置原始类.\n\n' + + '如需了解插件 API 使用示例, 可参考 "PaddleOCR (内置 API).js" 示例代码.'; + + dialogs.build({ + title: R.string.text_prompt, + content: hintForAutoJs670AndAbove, + positiveText: R.string.text_exit, + stubborn: true, + }).on('positive', (d) => { + d.dismiss(); + exit(); + }).show(); + + exit(); + const Predictor = com.baidu.paddle.lite.ocr.Predictor; console.show(); diff --git a/app/src/main/assets-app/sample/OCR/PaddleOCR (截图识别) [v6.7.0+].js b/app/src/main/assets-app/sample/OCR/PaddleOCR (截图识别) [v6.7.0+].js new file mode 100644 index 00000000..dcb06c5a --- /dev/null +++ b/app/src/main/assets-app/sample/OCR/PaddleOCR (截图识别) [v6.7.0+].js @@ -0,0 +1,232 @@ +/** + * Create by TonyJiangWJ on Nov 15, 2023. + * Modified by SuperMonster003 as of Jan 18, 2026. + */ +!function sampleForPaddleOcr() { + + let currentEngine = engines.myEngine(); + let runningEngines = engines.all(); + let currentSource = `${currentEngine.getSource()}`; + if (runningEngines.length > 1) { + runningEngines.forEach(compareEngine => { + let compareSource = `${compareEngine.getSource()}`; + if (currentEngine.getId() !== compareEngine.getId() && compareSource === currentSource) { + // Force stop scripts with the same name. + // zh-CN: 强制关闭同名的脚本. + compareEngine.forceStop(); + } + }); + } + + if (!requestScreenCapture()) { + // Failed to request screenshot permission. + toastError('请求截图权限失败'); + exit(); + } + + sleep(500); + + // Use slim model for faster inference. + // zh-CN: 使用 slim 模型以获得更快速度. + let useSlim = true; + + // CPU thread count. + // zh-CN: CPU 线程数量. + let cpuThreadNum = 4; + + // Whether to request OpenCL. + // zh-CN: 是否请求 OpenCL. + let useOpenCL = false; + + // Recognition results and screenshot information. + // zh-CN: 识别结果和截图信息. + let result = []; + let img = null; + let running = true; + let capturing = false; + + // Get status bar height offset. + // zh-CN: 获取状态栏高度偏移. + let offset = /* -getStatusBarHeightCompat(); */ 0; + + // Draw OCR results. + // zh-CN: 绘制 OCR 结果. + let window = floaty.rawWindow( + , + ); + + // Set float window position. + // zh-CN: 设置悬浮窗位置. + ui.post(() => { + window.setPosition(0, offset); + window.setSize(WIDTH, HEIGHT); + window.setTouchable(false); + window.exitOnClose(); + }); + + // Operation buttons. + // zh-CN: 操作按钮. + let clickButtonWindow = floaty.rawWindow( + + {/* Screenshot OCR */} +