From 4e1d3c9739a00222e666c06b15156e70524bfb94 Mon Sep 17 00:00:00 2001 From: litongjava Date: Sat, 9 Dec 2023 19:52:56 -1000 Subject: [PATCH 1/9] add build cmd for macos --- readme.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/readme.md b/readme.md index 2c15e9d..da2512d 100644 --- a/readme.md +++ b/readme.md @@ -37,11 +37,21 @@ ## 本地构建 你下载代码在本地进行构建,构建命令如下 +windows ``` mkdir target\jfx\app cp -r models target\jfx\app mvn jfx:native -DskipTests -f pom.xml ``` + +macos +```shell script +rm -rf target/jfx/app +mkdir -p target/jfx/app +cp -r models target/jfx/app +mvn jfx:native -DskipTests -f pom.xml +``` + ## 注意事项 ### MAC权限设置 由于监控了截图快捷键,因此MAC需要开启相应的权限,请见下图: From 2f0d1b67e5896cd55ddb5f65c0c9f5169fbb40ed Mon Sep 17 00:00:00 2001 From: litongmacos Date: Sat, 9 Dec 2023 20:09:01 -1000 Subject: [PATCH 2/9] add folder desc in readme.md --- readme.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/readme.md b/readme.md index da2512d..892eed2 100644 --- a/readme.md +++ b/readme.md @@ -61,6 +61,9 @@ mvn jfx:native -DskipTests -f pom.xml ![1](readme_files/1.jpg) ![2](readme_files/2.jpg) +## 常用目录 +- 日志目录/Applications/treehole.app/Contents/Java/logs +- 临时图片保存目录 /Applications/treehole.app/Contents/Java ## TODO - [x] PDF识别 - [x] 图片文字识别 From 1bd680931c6ecb8419d3c61bf8b188426b9bef44 Mon Sep 17 00:00:00 2001 From: litongjava Date: Tue, 19 Dec 2023 17:24:45 -1000 Subject: [PATCH 3/9] add download models --- readme.md | 16 ++++++++++++++++ .../litongjava/project/config/ProjectConfig.java | 5 ++++- .../com/luooqi/ocr/local/PaddlePaddleOCRV4.java | 1 - 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index da2512d..11c281d 100644 --- a/readme.md +++ b/readme.md @@ -36,6 +36,20 @@ ![](readme_files/4.jpg) ## 本地构建 +### 下载模型并解压 +``` +wget https://github.com/litongjava/tools-ocr/releases/download/model-ppocr-v4/ch_PP-OCRv4_rec_infer-onnx.zip +wget https://github.com/litongjava/tools-ocr/releases/download/model-ppocr-v4/ch_PP-OCRv4_det_infer-onnx.zip +``` +解压模型 +``` +mkdir models/ch_PP-OCRv4_rec_infer-onnx +mkdir models/ch_PP-OCRv4_det_infer-onnx +unzip /Users/mac/Downloads/ch_PP-OCRv4_rec_infer-onnx.zip -d models/ch_PP-OCRv4_rec_infer-onnx +unzip /Users/mac/Downloads/ch_PP-OCRv4_det_infer-onnx.zip -d models/ch_PP-OCRv4_det_infer-onnx +``` + +### 构建程序 你下载代码在本地进行构建,构建命令如下 windows ``` @@ -52,6 +66,8 @@ cp -r models target/jfx/app mvn jfx:native -DskipTests -f pom.xml ``` +## 查看系统运行日志 +cd treehole.app/Contents/java/logs ## 注意事项 ### MAC权限设置 由于监控了截图快捷键,因此MAC需要开启相应的权限,请见下图: diff --git a/src/main/java/com/litongjava/project/config/ProjectConfig.java b/src/main/java/com/litongjava/project/config/ProjectConfig.java index ca58b63..900559b 100644 --- a/src/main/java/com/litongjava/project/config/ProjectConfig.java +++ b/src/main/java/com/litongjava/project/config/ProjectConfig.java @@ -1,6 +1,9 @@ package com.litongjava.project.config; -import java.io.*; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Properties; diff --git a/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java b/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java index e0a860f..852bd25 100644 --- a/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java +++ b/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java @@ -9,7 +9,6 @@ import ai.djl.repository.zoo.ModelNotFoundException; import ai.djl.repository.zoo.ModelZoo; import ai.djl.repository.zoo.ZooModel; -import ai.djl.translate.TranslateException; import com.litongjava.djl.paddle.ocr.v4.common.RotatedBox; import com.litongjava.djl.paddle.ocr.v4.common.RotatedBoxCompX; import com.litongjava.djl.paddle.ocr.v4.detection.OcrV4Detection; From 42ac838bb11f67415cf565e71cc2b3033f1e72ec Mon Sep 17 00:00:00 2001 From: litongjava Date: Tue, 19 Dec 2023 18:51:21 -1000 Subject: [PATCH 4/9] show error info when load model error --- readme.md | 11 +++--- src/main/java/com/luooqi/ocr/OcrApp.java | 2 +- .../com/luooqi/ocr/config/InitConfig.java | 3 +- .../luooqi/ocr/local/PaddlePaddleOCRV4.java | 34 ++++++++----------- .../java/com/luooqi/ocr/windows/MainForm.java | 14 ++++++++ 5 files changed, 37 insertions(+), 27 deletions(-) diff --git a/readme.md b/readme.md index f73f0e0..74fc50c 100644 --- a/readme.md +++ b/readme.md @@ -11,6 +11,9 @@ ## 开源地址 [gitee](https://gitee.com/ppnt/tools-ocr) | [github](https://github.com/litongjava/tools-ocr) + +## required +- Mac OS X 12.6 因为依赖djl 0.25.0 ## 安装 > - **安装路径请勿包含中文字符**; > - 本程序使用 JavaFX 开发,提供的安装包中已经包含了Java @@ -43,10 +46,10 @@ wget https://github.com/litongjava/tools-ocr/releases/download/model-ppocr-v4/ch ``` 解压模型 ``` -mkdir models/ch_PP-OCRv4_rec_infer-onnx -mkdir models/ch_PP-OCRv4_det_infer-onnx -unzip /Users/mac/Downloads/ch_PP-OCRv4_rec_infer-onnx.zip -d models/ch_PP-OCRv4_rec_infer-onnx -unzip /Users/mac/Downloads/ch_PP-OCRv4_det_infer-onnx.zip -d models/ch_PP-OCRv4_det_infer-onnx +mkdir models/ch_PP-OCRv4_rec_infer +mkdir models/ch_PP-OCRv4_det_infer +unzip /Users/mac/Downloads/ch_PP-OCRv4_rec_infer-onnx.zip -d models/ch_PP-OCRv4_rec_infer +unzip /Users/mac/Downloads/ch_PP-OCRv4_det_infer-onnx.zip -d models/ch_PP-OCRv4_det_infer ``` ### 构建程序 diff --git a/src/main/java/com/luooqi/ocr/OcrApp.java b/src/main/java/com/luooqi/ocr/OcrApp.java index 7a82e10..e1b830a 100644 --- a/src/main/java/com/luooqi/ocr/OcrApp.java +++ b/src/main/java/com/luooqi/ocr/OcrApp.java @@ -19,7 +19,7 @@ public static void main(String[] args) { @Override public void init() throws Exception { super.init(); - InitConfig.init(); + //InitConfig.init(); } diff --git a/src/main/java/com/luooqi/ocr/config/InitConfig.java b/src/main/java/com/luooqi/ocr/config/InitConfig.java index 577dcfb..481200e 100644 --- a/src/main/java/com/luooqi/ocr/config/InitConfig.java +++ b/src/main/java/com/luooqi/ocr/config/InitConfig.java @@ -1,6 +1,5 @@ package com.luooqi.ocr.config; -import com.luooqi.ocr.local.PaddlePaddleOCRV4; import com.luooqi.ocr.utils.GlobalKeyListener; import com.luooqi.ocr.utils.VoidDispatchService; import org.jnativehook.GlobalScreen; @@ -23,7 +22,7 @@ public static void init() { // map.put(ConfigKeys.recName, "ch_PP-OCRv3_rec_infer"); // map.put(ConfigKeys.keysName, "ppocr_keys_v1.txt"); // projectConfig.batchPut(map); - PaddlePaddleOCRV4.INSTANCE.init(); + } diff --git a/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java b/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java index 852bd25..8f443fc 100644 --- a/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java +++ b/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java @@ -26,36 +26,30 @@ */ public enum PaddlePaddleOCRV4 { INSTANCE; - private OcrV4Detection detection; - private OcrV4Recognition recognition; - private Predictor detector; - private Predictor recognizer; - private NDManager manager; + private static OcrV4Detection detection; + private static OcrV4Recognition recognition; + private static Predictor detector; + private static Predictor recognizer; + private static NDManager manager; PaddlePaddleOCRV4() { + } + + + //noting not to do.but init + public static void init() throws ModelNotFoundException, MalformedModelException, IOException { detection = new OcrV4Detection(); recognition = new OcrV4Recognition(); ZooModel detectionModel = null; ZooModel recognitionModel = null; - try { - detectionModel = ModelZoo.loadModel(detection.chDetCriteria()); - recognitionModel = ModelZoo.loadModel(recognition.chRecCriteria()); - } catch (IOException e) { - e.printStackTrace(); - } catch (ModelNotFoundException e) { - e.printStackTrace(); - } catch (MalformedModelException e) { - e.printStackTrace(); - } + + detectionModel = ModelZoo.loadModel(detection.chDetCriteria()); + recognitionModel = ModelZoo.loadModel(recognition.chRecCriteria()); + detector = detectionModel.newPredictor(); recognizer = recognitionModel.newPredictor(); manager = NDManager.newBaseManager(); - } - - - //noting not to do.but init - public void init() { } diff --git a/src/main/java/com/luooqi/ocr/windows/MainForm.java b/src/main/java/com/luooqi/ocr/windows/MainForm.java index 23f9519..7f883eb 100644 --- a/src/main/java/com/luooqi/ocr/windows/MainForm.java +++ b/src/main/java/com/luooqi/ocr/windows/MainForm.java @@ -1,11 +1,14 @@ package com.luooqi.ocr.windows; +import ai.djl.MalformedModelException; +import ai.djl.repository.zoo.ModelNotFoundException; import cn.hutool.core.io.FileTypeUtil; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.log.StaticLog; import com.luooqi.ocr.config.InitConfig; import com.luooqi.ocr.controller.ProcessController; +import com.luooqi.ocr.local.PaddlePaddleOCRV4; import com.luooqi.ocr.model.CaptureInfo; import com.luooqi.ocr.model.StageInfo; import com.luooqi.ocr.snap.ScreenCapture; @@ -30,6 +33,7 @@ import java.awt.image.BufferedImage; import java.io.File; +import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -86,6 +90,16 @@ public void init(Stage primaryStage) { CommUtils.initStage(primaryStage); mainScene = new Scene(root, 670, 470); stage.setScene(mainScene); + //启动引擎,加载模型,如果模型加载错误下屏幕显示错误 + try { + PaddlePaddleOCRV4.init(); + } catch (ModelNotFoundException e) { + textArea.setText("加载模型出现错误" + e.getMessage()); + } catch (MalformedModelException e) { + textArea.setText("加载模型出现错误" + e.getMessage()); + } catch (IOException e) { + textArea.setText("加载模型出现错误" + e.getMessage()); + } } private TextArea getCenter() { From b5b21bcfb61a088793eb3497092797c549121b17 Mon Sep 17 00:00:00 2001 From: litongjava Date: Sun, 28 Apr 2024 01:57:34 -1000 Subject: [PATCH 5/9] update readme.md --- docs/.vuepress/config.js | 41 ---- docs/.vuepress/nav-en.json | 31 --- docs/.vuepress/sidebar-cn.json | 185 ----------------- docs/.vuepress/sidebar-en.json | 186 ------------------ docs/README.md | 16 -- docs/about/README.md | 2 - ...53\351\200\237\344\270\212\346\211\213.md" | 113 ----------- package.json | 16 -- readme.md | 14 +- 9 files changed, 12 insertions(+), 592 deletions(-) delete mode 100644 docs/.vuepress/config.js delete mode 100644 docs/.vuepress/nav-en.json delete mode 100644 docs/.vuepress/sidebar-cn.json delete mode 100644 docs/.vuepress/sidebar-en.json delete mode 100644 docs/README.md delete mode 100644 docs/about/README.md delete mode 100644 "docs/cn/1 \345\277\253\351\200\237\344\270\212\346\211\213/1.0 \345\277\253\351\200\237\344\270\212\346\211\213.md" delete mode 100644 package.json diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js deleted file mode 100644 index 86aaa48..0000000 --- a/docs/.vuepress/config.js +++ /dev/null @@ -1,41 +0,0 @@ -// 引入JSON文件 -const sidebarCn = require('./sidebar-cn.json'); -const sidebarEn = require('./sidebar-en.json'); -const navEn = require('./nav-en.json'); -module.exports = { - base: '/tools-ocr/', - title: 'Tools OCR', - description: 'Tools OCR', - head: [ - ["link", { - rel: "icon", - href: '/favicon.ico' - }], - ["meta", { - name: "author", - content: "litongjava@qq.com,jfinal@qq.com" - }], - ["meta", { - name: "keywords", - content: "tools-ocr,ocr tools" - }], - ["script", { - "crossorigin": "anonymous", - async: true, - src: "" - }], - ], - - markdown: { - lineNumbers: true - }, - themeConfig: { - logo: '/jfinallogo.png', - lastUpdated: 'Last Updated', // string | boolean,K - nav: navEn, - sidebar: { - '/cn/': sidebarCn, - '/en/': sidebarEn - } - }, -} \ No newline at end of file diff --git a/docs/.vuepress/nav-en.json b/docs/.vuepress/nav-en.json deleted file mode 100644 index b9dee82..0000000 --- a/docs/.vuepress/nav-en.json +++ /dev/null @@ -1,31 +0,0 @@ -[{ - "text": "Sources", - "ariaLabel": "Sources Menu", - "items": [{ - "text": "Gitee", - "link": "https://gitee.com/jfinal/jfinal" - }, - { - "text": "Github", - "link": "https://github.com/jfinal/jfinal" - } - ] - }, - { - "text": "Languages", - "ariaLabel": "Language Menu", - "items": [{ - "text": "Chinese", - "link": "/zh/1 快速上手/1.0 快速上手.md" - }, - { - "text": "English", - "link": "/en/1 Quick Start/1.0 Quick Start.md" - } - ] - }, - { - "text": "About", - "link": "/about/" - } -] \ No newline at end of file diff --git a/docs/.vuepress/sidebar-cn.json b/docs/.vuepress/sidebar-cn.json deleted file mode 100644 index c7085d9..0000000 --- a/docs/.vuepress/sidebar-cn.json +++ /dev/null @@ -1,185 +0,0 @@ -[{ - "title": "1 快速上手", - "collapsable": false, - "children": [ - "1 快速上手/1.0 快速上手.md", - "1 快速上手/1.1 Maven 基础.md", - "1 快速上手/1.2 jfinal-undertow 下开发.md", - "1 快速上手/1.3 jfinal-undertow 下部署.md", - "1 快速上手/1.4 jfinal-undertow 高级用法.md", - "1 快速上手/1.5 jfinal-undertow 常见问题.md", - "1 快速上手/1.6 jetty-server 下开发.md", - "1 快速上手/1.7 tomcat 下部署.md", - "1 快速上手/1.8 非 maven 方式开发.md", - "1 快速上手/1.9 IDEA下开发.md", - "1 快速上手/1.10 JBolt 插件下开发.md", - "1 快速上手/1.11 特别声明.md" - ] - }, - { - "title": "2 JFinalConfig", - "collapsable": false, - "children": [ - "2 JFinalConfig/2.1 概述.md", - "2 JFinalConfig/2.2 configConstant.md", - "2 JFinalConfig/2.3 configRoute.md", - "2 JFinalConfig/2.4 configEngine.md", - "2 JFinalConfig/2.5 configPlugin.md", - "2 JFinalConfig/2.6 configInterceptor.md", - "2 JFinalConfig/2.7 configHandler.md", - "2 JFinalConfig/2.8 onStart and onStop 回调配置.md", - "2 JFinalConfig/2.9 PropKit 读取配置.md" - ] - }, - { - "title": "3 Controller", - "collapsable": false, - "children": [ - "3 Controller/3.1 概述.md", - "3 Controller/3.2 Action.md", - "3 Controller/3.3 Action 参数注入.md", - "3 Controller/3.4 get & getPara 系列方法.md", - "3 Controller/3.5 getBean & getModel 系列.md", - "3 Controller/3.6 set & setAttr 方法.md", - "3 Controller/3.7 render 方法.md", - "3 Controller/3.8 renderFile 文件下载.md", - "3 Controller/3.9 renderQrCode 二维码生成.md", - "3 Controller/3.10 session 操作.md", - "3 Controller/3.11 getFile 文件上传.md", - "3 Controller/3.12 keep 系方法.md" - ] - }, - { - "title": "4 AOP", - "collapsable": false, - "children": [ - "4 AOP/4.1 概述.md", - "4 AOP/4.2 Interceptor.md", - "4 AOP/4.3 Before.md", - "4 AOP/4.4 Clear.md", - "4 AOP/4.5 Inject 依赖注入.md", - "4 AOP/4.6 Aop 工具.md", - "4 AOP/4.7 Routes 级别拦截器.md", - "4 AOP/4.8 Proxy 动态代理.md" - ] - }, - { - "title": "5 ActiveRecord", - "collapsable": false, - "children": [ - "5 ActiveRecord/5.1 概述.md", - "5 ActiveRecord/5.2 ActiveRecordPlugin.md", - "5 ActiveRecord/5.3 Model.md", - "5 ActiveRecord/5.4 生成器与 JavaBean.md", - "5 ActiveRecord/5.5 独创Db Record模式.md", - "5 ActiveRecord/5.6 paginate 分页.md", - "5 ActiveRecord/5.7 数据库事务处理.md", - "5 ActiveRecord/5.8 Cache 缓存.md", - "5 ActiveRecord/5.9 Dialect多数据库支持.md", - "5 ActiveRecord/5.10 表关联操作.md", - "5 ActiveRecord/5.11 复合主键.md", - "5 ActiveRecord/5.12 Oracle支持.md", - "5 ActiveRecord/5.13 Enjoy SQL 模板.md", - "5 ActiveRecord/5.14 多数据源支持.md", - "5 ActiveRecord/5.15 独立使用 ActiveRecord.md", - "5 ActiveRecord/5.16 调用存储过程.md" - ] - }, - { - "title": "6 Enjoy 模板引擎", - "collapsable": false, - "children": [ - "6 Enjoy 模板引擎/6.1 概述.md", - "6 Enjoy 模板引擎/6.2 引擎配置.md", - "6 Enjoy 模板引擎/6.3 表达式.md", - "6 Enjoy 模板引擎/6.4 指令.md", - "6 Enjoy 模板引擎/6.5 注释.md", - "6 Enjoy 模板引擎/6.6 原样输出.md", - "6 Enjoy 模板引擎/6.7 Shared Method 扩展.md", - "6 Enjoy 模板引擎/6.8 Shared Object扩展.md", - "6 Enjoy 模板引擎/6.9 Extension Method扩展.md", - "6 Enjoy 模板引擎/6.10 Spring boot 整合.md", - "6 Enjoy 模板引擎/6.11 独立使用 Enjoy.md" - ] - }, - { - "title": "7 EhCachePlugin", - "collapsable": false, - "children": [ - "7 EhCachePlugin/7.1 概述.md", - "7 EhCachePlugin/7.2 EhCachePlugin.md", - "7 EhCachePlugin/7.3 CacheInterceptor.md", - "7 EhCachePlugin/7.4 EvictInterceptor.md", - "7 EhCachePlugin/7.5 CacheKit.md", - "7 EhCachePlugin/7.6 ehcache.xml简介.md" - ] - }, - { - "title": "8 RedisPlugin", - "collapsable": false, - "children": [ - "8 RedisPlugin/8.1 概述.md", - "8 RedisPlugin/8.2 RedisPlugin.md", - "8 RedisPlugin/8.3 Redis与Cache.md", - "8 RedisPlugin/8.4 非web环境使用RedisPlugin.md" - ] - }, - { - "title": "9 Cron4jPlugin", - "collapsable": false, - "children": [ - "9 Cron4jPlugin/9.1 概述.md", - "9 Cron4jPlugin/9.2 Cron4jPlugin.md", - "9 Cron4jPlugin/9.3 使用外部配置文件.md", - "9 Cron4jPlugin/9.4 高级用法.md" - ] - }, - { - "title": "10 Validator", - "collapsable": false, - "children": [ - "10 Validator/10.1 概述.md", - "10 Validator/10.2 Validator.md", - "10 Validator/10.3 Validator配置.md" - ] - }, - { - "title": "11 国际化", - "collapsable": false, - "children": [ - "11 国际化/11.1 概述.md", - "11 国际化/11.2 I18n与Res.md", - "11 国际化/11.3 I18nInterceptor.md" - ] - }, - { - "title": "12 Json 转换", - "collapsable": false, - "children": [ - "12 Json 转换/12.1 概述.md", - "12 Json 转换/12.2 Json 配置.md", - "12 Json 转换/12.3 Json 的四个实现.md", - "12 Json 转换/12.4 Json 转换用法.md" - ] - }, - { - "title": "13 JFinal架构及扩展", - "collapsable": false, - "children": [ - "13 JFinal架构及扩展/13.1 概述.md", - "13 JFinal架构及扩展/13.2 架构.md" - ] - }, - { - "title": "14 升级JFinal", - "collapsable": false, - "children": [ - "14 升级JFinal/14.1 极速升级.md", - "14 升级JFinal/14.2 Ret.md", - "14 升级JFinal/14.3 configEngine.md", - "14 升级JFinal/14.4 baseViewPath.md", - "14 升级JFinal/14.5 RenderFactory.md", - "14 升级JFinal/14.6 其它.md" - ] - } -] \ No newline at end of file diff --git a/docs/.vuepress/sidebar-en.json b/docs/.vuepress/sidebar-en.json deleted file mode 100644 index 6624bdb..0000000 --- a/docs/.vuepress/sidebar-en.json +++ /dev/null @@ -1,186 +0,0 @@ -[ - { - "title": "1 Quick Start", - "collapsable": false, - "children": [ - "1 Quick Start/1.0 Quick Start.md", - "1 Quick Start/1.1 Basics of Maven.md", - "1 Quick Start/1.2 Development under jfinal-undertow.md", - "1 Quick Start/1.3 Deployment under jfinal-undertow.md", - "1 Quick Start/1.4 Advanced usage of jfinal-undertow.md", - "1 Quick Start/1.5 Common issues with jfinal-undertow.md", - "1 Quick Start/1.6 Development under jetty-server.md", - "1 Quick Start/1.7 Deployment under tomcat.md", - "1 Quick Start/1.8 Development without Maven.md", - "1 Quick Start/1.9 Development under IDEA.md", - "1 Quick Start/1.10 Development under JBolt plugin.md", - "1 Quick Start/1.11 Special Statement.md" - ] - }, - { - "title": "2 JFinalConfig", - "collapsable": false, - "children": [ - "2 JFinalConfig/2.1 Overview.md", - "2 JFinalConfig/2.2 configConstant.md", - "2 JFinalConfig/2.3 configRoute.md", - "2 JFinalConfig/2.4 configEngine.md", - "2 JFinalConfig/2.5 configPlugin.md", - "2 JFinalConfig/2.6 configInterceptor.md", - "2 JFinalConfig/2.7 configHandler.md", - "2 JFinalConfig/2.8 onStart and onStop callback configuration.md", - "2 JFinalConfig/2.9 PropKit configuration reading.md" - ] - }, - { - "title": "3 Controller", - "collapsable": false, - "children": [ - "3 Controller/3.1 Overview.md", - "3 Controller/3.2 Action.md", - "3 Controller/3.3 Action parameter injection.md", - "3 Controller/3.4 get & getPara series methods.md", - "3 Controller/3.5 getBean & getModel series.md", - "3 Controller/3.6 set & setAttr methods.md", - "3 Controller/3.7 render method.md", - "3 Controller/3.8 renderFile file download.md", - "3 Controller/3.9 renderQrCode QR code generation.md", - "3 Controller/3.10 session operations.md", - "3 Controller/3.11 getFile file upload.md", - "3 Controller/3.12 keep series methods.md" - ] - }, - { - "title": "4 AOP", - "collapsable": false, - "children": [ - "4 AOP/4.1 Overview.md", - "4 AOP/4.2 Interceptor.md", - "4 AOP/4.3 Before.md", - "4 AOP/4.4 Clear.md", - "4 AOP/4.5 Inject dependency injection.md", - "4 AOP/4.6 Aop tool.md", - "4 AOP/4.7 Routes level interceptor.md", - "4 AOP/4.8 Proxy dynamic proxy.md" - ] - }, - { - "title": "5 ActiveRecord", - "collapsable": false, - "children": [ - "5 ActiveRecord/5.1 Overview.md", - "5 ActiveRecord/5.2 ActiveRecordPlugin.md", - "5 ActiveRecord/5.3 Model.md", - "5 ActiveRecord/5.4 Generator & JavaBean.md", - "5 ActiveRecord/5.5 Original Db Record mode.md", - "5 ActiveRecord/5.6 paginate pagination.md", - "5 ActiveRecord/5.7 Database transaction handling.md", - "5 ActiveRecord/5.8 Cache caching.md", - "5 ActiveRecord/5.9 Dialect multiple database support.md", - "5 ActiveRecord/5.10 Table association operations.md", - "5 ActiveRecord/5.11 Composite primary key.md", - "5 ActiveRecord/5.12 Oracle support.md", - "5 ActiveRecord/5.13 Enjoy SQL template.md", - "5 ActiveRecord/5.14 Multi-data source support.md", - "5 ActiveRecord/5.15 Use ActiveRecord independently.md", - "5 ActiveRecord/5.16 Call stored procedure.md" - ] - }, - { - "title": "6 Enjoy template engine", - "collapsable": false, - "children": [ - "6 Enjoy template engine/6.1 Overview.md", - "6 Enjoy template engine/6.2 Engine configuration.md", - "6 Enjoy template engine/6.3 Expression.md", - "6 Enjoy template engine/6.4 Directive.md", - "6 Enjoy template engine/6.5 Comment.md", - "6 Enjoy template engine/6.6 Raw output.md", - "6 Enjoy template engine/6.7 Shared Method extension.md", - "6 Enjoy template engine/6.8 Shared Object extension.md", - "6 Enjoy template engine/6.9 Extension Method extension.md", - "6 Enjoy template engine/6.10 Spring boot integration.md", - "6 Enjoy template engine/6.11 Use Enjoy independently.md" - ] - }, - { - "title": "7 EhCachePlugin", - "collapsable": false, - "children": [ - "7 EhCachePlugin/7.1 Overview.md", - "7 EhCachePlugin/7.2 EhCachePlugin.md", - "7 EhCachePlugin/7.3 CacheInterceptor.md", - "7 EhCachePlugin/7.4 EvictInterceptor.md", - "7 EhCachePlugin/7.5 CacheKit.md", - "7 EhCachePlugin/7.6 Introduction to ehcache.xml.md" - ] - }, - { - "title": "8 RedisPlugin", - "collapsable": false, - "children": [ - "8 RedisPlugin/8.1 Overview.md", - "8 RedisPlugin/8.2 RedisPlugin.md", - "8 RedisPlugin/8.3 Redis and Cache.md", - "8 RedisPlugin/8.4 Use RedisPlugin in non-web environments.md" - ] - }, - { - "title": "9 Cron4jPlugin", - "collapsable": false, - "children": [ - "9 Cron4jPlugin/9.1 Overview.md", - "9 Cron4jPlugin/9.2 Cron4jPlugin.md", - "9 Cron4jPlugin/9.3 Use external configuration file.md", - "9 Cron4jPlugin/9.4 Advanced usage.md" - ] - }, - { - "title": "10 Validator", - "collapsable": false, - "children": [ - "10 Validator/10.1 Overview.md", - "10 Validator/10.2 Validator.md", - "10 Validator/10.3 Validator configuration.md" - ] - }, - { - "title": "11 Internationalization", - "collapsable": false, - "children": [ - "11 Internationalization/11.1 Overview.md", - "11 Internationalization/11.2 I18n & Res.md", - "11 Internationalization/11.3 I18nInterceptor.md" - ] - }, - { - "title": "12 Json conversion", - "collapsable": false, - "children": [ - "12 Json conversion/12.1 Overview.md", - "12 Json conversion/12.2 Json configuration.md", - "12 Json conversion/12.3 Four implementations of Json.md", - "12 Json conversion/12.4 Json conversion usage.md" - ] - }, - { - "title": "13 JFinal architecture and extensions", - "collapsable": false, - "children": [ - "13 JFinal architecture and extensions/13.1 Overview.md", - "13 JFinal architecture and extensions/13.2 Architecture.md" - ] - }, - { - "title": "14 Upgrade JFinal", - "collapsable": false, - "children": [ - "14 Upgrade JFinal/14.1 Rapid upgrade.md", - "14 Upgrade JFinal/14.2 Ret.md", - "14 Upgrade JFinal/14.3 configEngine.md", - "14 Upgrade JFinal/14.4 baseViewPath.md", - "14 Upgrade JFinal/14.5 RenderFactory.md", - "14 Upgrade JFinal/14.6 Others.md" - ] - } -] \ No newline at end of file diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 3c01da3..0000000 --- a/docs/README.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -home: true -heroImage: /hero.png -heroText: Hero 标题 -tagline: Hero 副标题 -actionText: 快速上手 → -actionLink: /cn/guide/ -features: -- title: 简洁至上 - details: 以 Markdown 为中心的项目结构,以最少的配置帮助你专注于写作。 -- title: Vue驱动 - details: 享受 Vue + webpack 的开发体验,在 Markdown 中使用 Vue 组件,同时可以使用 Vue 来开发自定义主题。 -- title: 高性能 - details: VuePress 为每个页面预渲染生成静态的 HTML,同时在页面被加载的时候,将作为 SPA 运行。 -footer: MIT Licensed | Copyright © 2018-present Evan You ---- \ No newline at end of file diff --git a/docs/about/README.md b/docs/about/README.md deleted file mode 100644 index d50aab8..0000000 --- a/docs/about/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# about -litongjava(litongjava@qq.com) \ No newline at end of file diff --git "a/docs/cn/1 \345\277\253\351\200\237\344\270\212\346\211\213/1.0 \345\277\253\351\200\237\344\270\212\346\211\213.md" "b/docs/cn/1 \345\277\253\351\200\237\344\270\212\346\211\213/1.0 \345\277\253\351\200\237\344\270\212\346\211\213.md" deleted file mode 100644 index 8d9a077..0000000 --- "a/docs/cn/1 \345\277\253\351\200\237\344\270\212\346\211\213/1.0 \345\277\253\351\200\237\344\270\212\346\211\213.md" +++ /dev/null @@ -1,113 +0,0 @@ -# 快速上手 -## 代码结构 -这是一个典型的 Maven 项目结构,其中: - -- `pom.xml`: 这是 Maven 的项目对象模型文件,它包含了项目的依赖、插件和其他配置信息。 -- `src`: 这是源代码目录,通常包含主代码 (`src/main`) 和测试代码 (`src/test`)。 - - - -从 `pom.xml` 文件的部分内容中, - -1. 项目的 `groupId` 是 `com.luooqi`,而 `artifactId` 是 `tool-ocr`。这意味着该项目是由 `luooqi` 开发的一个名为 `tool-ocr` 的项目。 -2. 项目的版本信息由一个属性 `soft.version` 定义,其值为 `1.2.6`。 -3. 项目有几个依赖项,包括但不限于: - - `jnativehook`:可能与键盘和鼠标挂钩有关,允许应用程序全局监听键盘和鼠标事件。 - - `hutool-all`:Hutool 是一个 Java 工具包,包含了一些常用的 Java 功能模块。 - - `imgscalr-lib`:这是一个简单的 Java 图片缩放库。 - -项目的 `src` 目录结构如下: - -1. **资源文件**: - - `main/deploy/package/macosx/` 和 `main/deploy/package/windows/`:这些似乎是针对不同操作系统的应用程序图标。 - - `main/resources/`:包含了各种资源文件,如CSS、字体、图片等。 - -2. **Java 文件**: - - `com.benjaminwan.ocrlibrary`:这个包似乎包含与OCR处理相关的类。 - - `com.luooqi.ocr`:这是应用程序的主要包,其中 `MainFm.java` 可能是主类。 - - `com.luooqi.ocr.controller`:包含应用程序的控制器类。 - - `com.luooqi.ocr.local`:可能包含本地OCR功能的类。 - - `com.luooqi.ocr.model`:包含应用程序的数据模型。 - - `com.luooqi.ocr.snap`:似乎与屏幕截图功能有关。 - - `com.luooqi.ocr.utils`:包含各种实用程序类。 - -3. **测试文件**: - - `test/java/com/luooqi/ocr/utils/OcrUtilsTest.java`:一个针对 `OcrUtils` 类的测试。 - -## 使用javafx-maven-plugin 打包应用程序 -### javafx-maven-plugin简介 -javafx-maven-plugin 插件。这个插件为 JavaFX 项目提供了便捷的构建和打包工具。 -### 使用javafx-maven-plugin生成native -``` -set JAVA_HOME=D:\dev_program\java\jdk1.8.0_121 -mvn jfx:native -``` - -## 使用JavaFX 的 jpackage 工具 打包应用程序 -关于如何将其打包为 `.exe`,步骤大致如下: - -1. 使用Maven构建项目并生成JAR文件(java 8)。 -2. 使用JavaFX的jpackage工具打包JAR文件为EXE文件 (java 14)。 - -`jpackage` 是 Java 14 及更高版本中提供的一个实验工具,用于为 Java 应用程序创建本地包。以下是如何使用 `jpackage` 为 JavaFX 应用程序创建一个 Windows `.exe` 文件的基本步骤: - -### 1. 准备工作 -- 安装Java 8 和 Java 14 -- 确保您的 JDK 版本是 14 或更高版本,并且已经包含 `jpackage`。 -- 安装.NET SDK 6,下载地址https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-6.0.317-windows-x64-installer -- 从 https://github.com/wixtoolset/wix3/releases 下载 WiX 3.0 或更高版本,然后将其添加到 PATH。 -### 安装wix3 -WiX Toolset 进行了一些变化,并且它们开始提供一个 .NET Core 工具,这可能是您使用的安装方法。但对于 `jpackage`,您需要的是传统的 WiX Toolset,它包含 `light.exe` 和 `candle.exe`。 - -请按照以下步骤操作: - -1. **访问 WiX Toolset 的 Releases 页面**: - - [WiX Toolset Releases](https://github.com/wixtoolset/wix3/releases) - -2. **下载并安装 WiX Toolset**: - - 在 Releases 页面,找到最新的稳定版本。 - - 下载 `.exe` 安装程序或 `.zip` 归档文件。 - - 如果下载了 `.exe` 安装程序,直接运行它以安装。如果下载了 `.zip` 归档文件,解压它到一个适当的目录。 - -3. **将 WiX Toolset 添加到 PATH**: - - 找到 WiX Toolset 的安装目录或您解压 `.zip` 文件的目录。确保这个目录下有 `bin` 子目录,并且其中包含 `light.exe` 和 `candle.exe`。 - - 将这个 `bin` 子目录添加到您的系统 `PATH`。 - -4. **重新运行 jpackage 命令**。 - -完成这些步骤后,您应该能够使用 `jpackage` 正确地打包您的应用程序为 `.exe` 文件。 -### 3. 创建 JavaFX JAR - -首先,您需要使用 Maven 构建项目并生成一个可执行的 JAR 文件。在项目根目录中执行以下命令: - -```bash -set JAVA_HOME=D:\dev_program\java\jdk1.8.0_121 -mvn clean package -DskipTests -``` - -确保 JAR 文件包含所有必要的依赖项并且可以独立运行。 - -### 4. 使用 jpackage 创建 `.exe` 文件 - -以下是一个基本的 `jpackage` 命令示例,用于将 JavaFX JAR 打包为 `.exe` 文件: - -```bash -jpackage --type exe --input target/ --main-jar tool-ocr-1.2.6.jar --name tree-hole-ocr --main-class com.luooqi.ocr.OcrApp -``` - -其中: - -- `--type exe`:指定输出类型为 `.exe`。 -- `--input target/`:指定包含 JAR 文件的目录。 -- `--main-jar`:指定要打包的主 JAR 文件。 -- `--name`:输出的应用程序名称。 -- `--main-class`:指定应用程序的主类。 -- `--win-shortcut`:为应用程序创建一个 Windows 快捷方式。 - -这只是一个基础示例。`jpackage` 提供了许多其他选项,例如设置应用程序图标、JVM 参数等。您可以查看 `jpackage` 的官方文档或使用 `jpackage --help` 命令查看所有可用选项。 - -完成上述步骤后,您应该会在当前目录中得到一个 `.exe` 文件和一个相应的安装程序。 - -注意:这个过程可能需要 JavaFX jmods 文件,您可能需要从 JavaFX 官方网站下载它们,并使用 `--module-path` 和 `--add-modules` 选项指定它们。 - -最后,如果你想要我为你生成这个 `.exe` 文件,请告诉我,我会为你完成这个步骤。 \ No newline at end of file diff --git a/package.json b/package.json deleted file mode 100644 index 1f96560..0000000 --- a/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "tools-ocr", - "version": "1.0.0", - "description": "docs", - "main": "index.js", - "repository": "git@github.com:litongjava/tools-ocr.git", - "author": "litongjava ", - "license": "MIT", - "scripts": { - "dev": "vuepress dev docs", - "build": "vuepress build docs" - }, - "devDependencies": { - "vuepress": "^1.8.2" - } -} diff --git a/readme.md b/readme.md index 74fc50c..e41726f 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,13 @@ # 树洞 OCR 文字识别 -一款跨平台的 OCR 小工具,调用本地OCR进行识别,无需联网即可使用 -用到的技术和框架 + +## 介绍 + - 本地OCR识别 + : 树洞OCR文字识别工具无需联网,通过调用本地OCR技术,基于Paddle OCR模型和深度学习框架如PyTorch、DJL,提供快速准确的文字识别。 + - 跨平台兼容 + : 基于java 1.8和JavaFX开发,支持在不同操作系统上运行,包括Mac OS X 12.6及以上版本。 + - 强大的功能支持 + : 除了基础的文字识别,还包括PDF识别、图片文字识别、快捷键截图识别等功能. +## 主要依赖库 - jdk 1.8 - javafx - djl @@ -12,8 +19,11 @@ ## 开源地址 [gitee](https://gitee.com/ppnt/tools-ocr) | [github](https://github.com/litongjava/tools-ocr) +## document +https://tree-hole-ocr-docs.vercel.app/ ## required - Mac OS X 12.6 因为依赖djl 0.25.0 + ## 安装 > - **安装路径请勿包含中文字符**; > - 本程序使用 JavaFX 开发,提供的安装包中已经包含了Java From a58100e6b16ebe0955845ffa69c884e4012f9e79 Mon Sep 17 00:00:00 2001 From: litongjava Date: Sun, 28 Apr 2024 03:23:46 -1000 Subject: [PATCH 6/9] add English readme.md --- readme-cn.md | 135 +++++++++++++++++++++++++++++++++++++ readme.md | 165 ++++++++++++++++++++++++++------------------- readme_files/5.jpg | Bin 0 -> 252259 bytes 3 files changed, 232 insertions(+), 68 deletions(-) create mode 100644 readme-cn.md create mode 100644 readme_files/5.jpg diff --git a/readme-cn.md b/readme-cn.md new file mode 100644 index 0000000..4911643 --- /dev/null +++ b/readme-cn.md @@ -0,0 +1,135 @@ +# 树洞 OCR + +[English](./readme.md) | [中文](./readme-cn.md) + +## 介绍 + +- 本地 OCR 识别 + : 树洞 OCR 文字识别工具无需联网,通过调用本地 OCR 技术,基于 Paddle OCR 模型和深度学习框架如 PyTorch、DJL,提供快速准确的文字识别。 +- 跨平台兼容 + : 基于 java 1.8 和 JavaFX 开发,支持在不同操作系统上运行,包括 Mac OS X 12.6 及以上版本。 +- 强大的功能支持 + : 除了基础的文字识别,还包括 PDF 识别、图片文字识别、快捷键截图识别等功能. + +## 主要依赖库 + +- jdk 1.8 +- javafx +- djl +- pytorch +- onnx +- paddle ocr +- opencv + +## 开源地址 + +[gitee](https://gitee.com/ppnt/tools-ocr) | [github](https://github.com/litongjava/tools-ocr) + +## document + +https://tree-hole-ocr-docs.vercel.app/ + +## required + +- Mac OS X 12.6 因为依赖 djl 0.25.0 + +## 安装 + +> - **安装路径请勿包含中文字符**; +> - 本程序使用 JavaFX 开发,提供的安装包中已经包含了 Java +> - 从[release](https://github.com/litongjava/tools-ocr/releases/)下载最新版本解压安装即可 + +## 程序使用 + +### 截图 + +- 方法一:在程序主界面点击截图按钮; +- 方法二:点击截图快捷键 F4。 + +### 圈选区域 + +进入截图界面后,按下鼠标左键,然后拖动即可圈选所要截取的区域; +圈选结束后,可以对圈选的区域进行微调: + +- 使用 **方向键**,可以对所选区域的右边界和上边界进行微调; +- 使用 **Shift+方向键**,可以对所选区域的左边界和下边界进行微调; +- 使用 **Ctrl+A**,可以全选整个屏幕。 + +### 确定圈选 + +圈选完成后,点击 `Enter` 或者 `Space` 键,或者鼠标左键双击即可确认圈选;确认圈选后,会自动对所选区域进行 OCR 文字识别。 + +![](readme_files/3.jpg) +![](readme_files/4.jpg) + +## 本地构建 + +### 下载模型并解压 + +``` +wget https://github.com/litongjava/tools-ocr/releases/download/model-ppocr-v4/ch_PP-OCRv4_rec_infer-onnx.zip +wget https://github.com/litongjava/tools-ocr/releases/download/model-ppocr-v4/ch_PP-OCRv4_det_infer-onnx.zip +``` + +解压模型 + +``` +mkdir models/ch_PP-OCRv4_rec_infer +mkdir models/ch_PP-OCRv4_det_infer +unzip /Users/mac/Downloads/ch_PP-OCRv4_rec_infer-onnx.zip -d models/ch_PP-OCRv4_rec_infer +unzip /Users/mac/Downloads/ch_PP-OCRv4_det_infer-onnx.zip -d models/ch_PP-OCRv4_det_infer +``` + +### 构建程序 + +你下载代码在本地进行构建,构建命令如下 +windows + +``` +mkdir target\jfx\app +cp -r models target\jfx\app +mvn jfx:native -DskipTests -f pom.xml +``` + +macos + +```shell script +rm -rf target/jfx/app +mkdir -p target/jfx/app +cp -r models target/jfx/app +mvn jfx:native -DskipTests -f pom.xml +``` + +## 查看系统运行日志 + +cd treehole.app/Contents/java/logs + +## 注意事项 + +### MAC 权限设置 + +由于监控了截图快捷键,因此 MAC 需要开启相应的权限,请见下图: +笔者设置如下 + +- Settings-->Security and Privacy-->Accessbility + ![MAC权限设置](readme_files/5.jpg) +- Settings-->Security and Privacy-->Screen Recording + ![2](readme_files/2.jpg) + +## 常用目录 + +- 日志目录/Applications/treehole.app/Contents/Java/logs +- 临时图片保存目录 /Applications/treehole.app/Contents/Java + +## TODO + +- [x] PDF 识别 +- [x] 图片文字识别 + - [x] 识别结果文本对齐(暂未实现多分栏) + - [x] 全屏模式下截图 + - [x] 添加正在识别动画 + - [x] 多屏支持 +- [ ] 文本翻译 +- [ ] 公式识别 +- [ ] 表格识别 +- [ ] 软件设置 diff --git a/readme.md b/readme.md index e41726f..2c6bdf3 100644 --- a/readme.md +++ b/readme.md @@ -1,60 +1,80 @@ -# 树洞 OCR 文字识别 - -## 介绍 - - 本地OCR识别 - : 树洞OCR文字识别工具无需联网,通过调用本地OCR技术,基于Paddle OCR模型和深度学习框架如PyTorch、DJL,提供快速准确的文字识别。 - - 跨平台兼容 - : 基于java 1.8和JavaFX开发,支持在不同操作系统上运行,包括Mac OS X 12.6及以上版本。 - - 强大的功能支持 - : 除了基础的文字识别,还包括PDF识别、图片文字识别、快捷键截图识别等功能. -## 主要依赖库 -- jdk 1.8 -- javafx -- djl -- pytorch -- onnx -- paddle ocr -- opencv - -## 开源地址 +# Tree Hole OCR + +[English](./readme.md) | [中文](./readme-cn.md) + +## Introduction + +- Local OCR Recognition: Tree Hole OCR text recognition tool does not require internet connection. It leverages local OCR technology, based on Paddle OCR model and deep learning frameworks such as PyTorch, DJL, to provide fast and accurate text recognition. +- Cross-platform compatibility: Developed with Java 1.8 and JavaFX, it supports operation on different operating systems, including Mac OS X 12.6 and above. +- Powerful functionality: In addition to basic text recognition, it also includes PDF recognition, image text recognition, shortcut key screenshot recognition, and more. + +## Dependencies Library + +- JDK 1.8 +- JavaFX +- DJL +- PyTorch +- ONNX +- Paddle OCR +- OpenCV + +## Open Source Address + [gitee](https://gitee.com/ppnt/tools-ocr) | [github](https://github.com/litongjava/tools-ocr) -## document +## Documentation + https://tree-hole-ocr-docs.vercel.app/ -## required -- Mac OS X 12.6 因为依赖djl 0.25.0 -## 安装 -> - **安装路径请勿包含中文字符**; -> - 本程序使用 JavaFX 开发,提供的安装包中已经包含了Java -> - 从[release](https://github.com/litongjava/tools-ocr/releases/)下载最新版本解压安装即可 +## Requirements + +- Mac OS X 12.6 due to dependency on DJL 0.25.0 + +## Installation + +> - **Please do not include Chinese characters in the installation path**; +> - This program is developed with JavaFX, and the installation package provided already includes Java. +> - Download the latest version from [release](https://github.com/litongjava/tools-ocr/releases/) and unzip it for installation. + +## Using the Program + +### Screenshot + +- Method one: Click the screenshot button on the main interface of the program; +- Method two: Press the screenshot shortcut key F4. + +### Selecting Area + +After entering the screenshot interface, press and hold the left mouse button, then drag to select the area you want to capture; +After completing the selection, you can fine-tune the selected area: + +- Use **arrow keys** to adjust the right and top borders of the selected area; +- Use **Shift + arrow keys** to adjust the left and bottom borders of the selected area; +- Use **Ctrl + A** to select the entire screen. +### Confirm Selection -## 程序使用 -### 启动截图 -- 方法一:在程序主界面点击截图按钮; -- 方法二:点击截图快捷键 F4。 +After completing the selection, press `Enter` or `Space` key, or double-click the left mouse button to confirm the selection; Once confirmed, the program will automatically perform OCR text recognition on the selected area. -### 圈选区域 -进入截图界面后,按下鼠标左键,然后拖动即可圈选所要截取的区域; -圈选结束后,可以对圈选的区域进行微调: -- 使用 **方向键**,可以对所选区域的右边界和上边界进行微调; -- 使用 **Shift+方向键**,可以对所选区域的左边界和下边界进行微调; -- 使用 **Ctrl+A**,可以全选整个屏幕。 +- image -### 确定圈选 -圈选完成后,点击 `Enter` 或者 `Space` 键,或者鼠标左键双击即可确认圈选;确认圈选后,会自动对所选区域进行 OCR 文字识别。 + ![](readme_files/3.jpg) -![](readme_files/3.jpg) -![](readme_files/4.jpg) +- result: + + ![](readme_files/4.jpg) + +## Local Build + +### Download and Unzip the Models -## 本地构建 -### 下载模型并解压 ``` wget https://github.com/litongjava/tools-ocr/releases/download/model-ppocr-v4/ch_PP-OCRv4_rec_infer-onnx.zip wget https://github.com/litongjava/tools-ocr/releases/download/model-ppocr-v4/ch_PP-OCRv4_det_infer-onnx.zip ``` -解压模型 + +Unzip the models + ``` mkdir models/ch_PP-OCRv4_rec_infer mkdir models/ch_PP-OCRv4_det_infer @@ -62,9 +82,11 @@ unzip /Users/mac/Downloads/ch_PP-OCRv4_rec_infer-onnx.zip -d models/ch_PP-OCRv4_ unzip /Users/mac/Downloads/ch_PP-OCRv4_det_infer-onnx.zip -d models/ch_PP-OCRv4_det_infer ``` -### 构建程序 -你下载代码在本地进行构建,构建命令如下 +### Build the Program + +You can download the code and build it locally. The build commands are as follows: windows + ``` mkdir target\jfx\app cp -r models target\jfx\app @@ -72,6 +94,7 @@ mvn jfx:native -DskipTests -f pom.xml ``` macos + ```shell script rm -rf target/jfx/app mkdir -p target/jfx/app @@ -79,29 +102,35 @@ cp -r models target/jfx/app mvn jfx:native -DskipTests -f pom.xml ``` -## 查看系统运行日志 +## View System Operating Log + cd treehole.app/Contents/java/logs -## 注意事项 -### MAC权限设置 -由于监控了截图快捷键,因此MAC需要开启相应的权限,请见下图: - -![MAC权限设置](http://img.ifish.fun/Fo31NZQIhPNF6m7gOorRGDuKvaZ_) -笔者设置如下 -![1](readme_files/1.jpg) -![2](readme_files/2.jpg) - -## 常用目录 -- 日志目录/Applications/treehole.app/Contents/Java/logs -- 临时图片保存目录 /Applications/treehole.app/Contents/Java + +## Notices + +### MAC Permission Settings + +Since screenshot shortcuts are monitored, MAC needs appropriate permissions settings, as shown below: + +- Settings --> Security and Privacy --> Accessibility + ![MAC Permission Settings](readme_files/5.jpg) +- Settings --> Security and Privacy --> Screen Recording + ![2](readme_files/2.jpg) + +## Common Directories + +- Log directory /Applications/treehole.app/Contents/Java/logs +- Temporary image saving directory /Applications/treehole.app/Contents/Java + ## TODO -- [x] PDF识别 -- [x] 图片文字识别 - - [x] 识别结果文本对齐(暂未实现多分栏) - - [x] 全屏模式下截图 - - [x] 添加正在识别动画 - - [x] 多屏支持 -- [ ] 文本翻译 -- [ ] 公式识别 -- [ ] 表格识别 -- [ ] 软件设置 +- [x] PDF Recognition +- [x] Image Text Recognition + - [x] Recognition result text alignment (multi-column yet to be implemented) + - [x] Full screen mode screenshot + - [x] Adding recognition animation + - [x] Multi-screen support +- [ ] Text Translation +- [ ] Formula Recognition +- [ ] Table Recognition +- [ ] Software Settings diff --git a/readme_files/5.jpg b/readme_files/5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..05dab184dc12b9b23d748a7d28b6fd027db6552a GIT binary patch literal 252259 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 P_)}5PkS~8`{O Date: Sun, 28 Apr 2024 04:59:27 -1000 Subject: [PATCH 7/9] change to use rapid-ocr-java --- app.properties | 2 +- pom.xml | 40 +- .../com/benjaminwan/ocrlibrary/OcrEngine.java | 120 ---- .../com/benjaminwan/ocrlibrary/OcrFailed.java | 9 - .../com/benjaminwan/ocrlibrary/OcrOutput.java | 5 - .../com/benjaminwan/ocrlibrary/OcrResult.java | 54 -- .../com/benjaminwan/ocrlibrary/OcrStop.java | 9 - .../com/benjaminwan/ocrlibrary/Point.java | 51 -- .../com/benjaminwan/ocrlibrary/TextBlock.java | 79 --- .../djl/paddle/ocr/v4/OcrV4DetExample.java | 51 -- .../djl/paddle/ocr/v4/OcrV4RecExample.java | 131 ----- .../djl/paddle/ocr/v4/common/ImageUtils.java | 241 -------- .../djl/paddle/ocr/v4/common/RotatedBox.java | 47 -- .../paddle/ocr/v4/common/RotatedBoxCompX.java | 46 -- .../v4/detection/OCRDetectionTranslator.java | 525 ------------------ .../ocr/v4/detection/OcrV4Detection.java | 36 -- .../paddle/ocr/v4/opencv/NDArrayUtils.java | 236 -------- .../djl/paddle/ocr/v4/opencv/OpenCVUtils.java | 60 -- .../ocr/v4/recognition/OcrV4Recognition.java | 154 ----- .../v4/recognition/PpWordRecTranslator.java | 121 ---- .../ocr/controller/ProcessController.java | 1 + .../luooqi/ocr/local/PaddlePaddleOCRV4.java | 106 +--- .../com/luooqi/ocr/snap/ScreenCapture.java | 47 +- .../java/com/luooqi/ocr/utils/OcrUtils.java | 78 +-- .../java/com/luooqi/ocr/windows/MainForm.java | 83 ++- src/main/resources/images/01.png | Bin 0 -> 294035 bytes .../benjaminwan/ocrlibrary/OcrEngineTest.java | 47 -- .../java/com/litongjava/RapidOcrTest.java | 14 + .../com/luooqi/ocr/utils/OcrUtilsTest.java | 23 +- 29 files changed, 152 insertions(+), 2264 deletions(-) delete mode 100644 src/main/java/com/benjaminwan/ocrlibrary/OcrEngine.java delete mode 100644 src/main/java/com/benjaminwan/ocrlibrary/OcrFailed.java delete mode 100644 src/main/java/com/benjaminwan/ocrlibrary/OcrOutput.java delete mode 100644 src/main/java/com/benjaminwan/ocrlibrary/OcrResult.java delete mode 100644 src/main/java/com/benjaminwan/ocrlibrary/OcrStop.java delete mode 100644 src/main/java/com/benjaminwan/ocrlibrary/Point.java delete mode 100644 src/main/java/com/benjaminwan/ocrlibrary/TextBlock.java delete mode 100644 src/main/java/com/litongjava/djl/paddle/ocr/v4/OcrV4DetExample.java delete mode 100644 src/main/java/com/litongjava/djl/paddle/ocr/v4/OcrV4RecExample.java delete mode 100644 src/main/java/com/litongjava/djl/paddle/ocr/v4/common/ImageUtils.java delete mode 100644 src/main/java/com/litongjava/djl/paddle/ocr/v4/common/RotatedBox.java delete mode 100644 src/main/java/com/litongjava/djl/paddle/ocr/v4/common/RotatedBoxCompX.java delete mode 100644 src/main/java/com/litongjava/djl/paddle/ocr/v4/detection/OCRDetectionTranslator.java delete mode 100644 src/main/java/com/litongjava/djl/paddle/ocr/v4/detection/OcrV4Detection.java delete mode 100644 src/main/java/com/litongjava/djl/paddle/ocr/v4/opencv/NDArrayUtils.java delete mode 100644 src/main/java/com/litongjava/djl/paddle/ocr/v4/opencv/OpenCVUtils.java delete mode 100644 src/main/java/com/litongjava/djl/paddle/ocr/v4/recognition/OcrV4Recognition.java delete mode 100644 src/main/java/com/litongjava/djl/paddle/ocr/v4/recognition/PpWordRecTranslator.java create mode 100644 src/main/resources/images/01.png delete mode 100644 src/test/java/com/benjaminwan/ocrlibrary/OcrEngineTest.java create mode 100644 src/test/java/com/litongjava/RapidOcrTest.java diff --git a/app.properties b/app.properties index d1f4231..15503f4 100644 --- a/app.properties +++ b/app.properties @@ -1,4 +1,4 @@ -#Thu Nov 23 02:43:23 HST 2023 +#Sun Apr 28 04:53:24 HST 2024 recName=ch_PP-OCRv3_rec_infer model=model keysName=ppocr_keys_v1.txt diff --git a/pom.xml b/pom.xml index ce322a4..f9f8010 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.luooqi tools-ocr - 2.2.9 + 2.3.0 UTF-8 @@ -57,41 +57,17 @@ ${logback.version} - + - ai.djl - api - ${djl.version} - - - ai.djl - basicdataset - ${djl.version} - - - ai.djl - model-zoo - ${djl.version} - - - - - ai.djl.pytorch - pytorch-engine - ${djl.version} - runtime - - - - ai.djl.onnxruntime - onnxruntime-engine - ${djl.version} + io.github.mymonstercat + rapidocr + 0.0.7 - ai.djl.opencv - opencv - ${djl.version} + io.github.mymonstercat + rapidocr-onnx-platform + 0.0.7 diff --git a/src/main/java/com/benjaminwan/ocrlibrary/OcrEngine.java b/src/main/java/com/benjaminwan/ocrlibrary/OcrEngine.java deleted file mode 100644 index 7f9d5e5..0000000 --- a/src/main/java/com/benjaminwan/ocrlibrary/OcrEngine.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.benjaminwan.ocrlibrary; - -import cn.hutool.core.io.FileUtil; -import cn.hutool.log.StaticLog; - -import java.io.File; -import java.nio.charset.Charset; - -public final class OcrEngine { - /** - * 图像外接白框,用于提升识别率,文字框没有正确框住所有文字时,增加此值。 - */ - private int padding; - /** - * 文字框置信度门限,文字框没有正确框住所有文字时,减小此值 - */ - private float boxScoreThresh; - - private float boxThresh; - /** - * 单个文字框大小倍率,越大时单个文字框越大 - */ - private float unClipRatio; - /** - * 启用(1)/禁用(0) 文字方向检测,只有图片倒置的情况下(旋转90~270度的图片),才需要启用文字方向检测 - */ - private boolean doAngle; - /** - * 启用(1)/禁用(0) 角度投票(整张图片以最大可能文字方向来识别),当禁用文字方向检测时,此项也不起作用 - */ - private boolean mostAngle; - - public native boolean setNumThread(int numThread); - - public native void initLogger(boolean isConsole, boolean isPartImg, boolean isResultImg); - - public native void enableResultText(String imagePath); - - public native boolean initModels(String modelsDir, String detName, String clsName, String recName, String keysName); - - /** - * GPU0一般为默认GPU,参数选项:使用CPU(-1)/使用GPU0(0)/使用GPU1(1)/... - */ - public native void setGpuIndex(int gpuIndex); - - public native String getVersion(); - - public native OcrResult detect(String input, int padding, int maxSideLen, float boxScoreThresh, float boxThresh, float unClipRatio, boolean doAngle, boolean mostAngle); - - public OcrEngine() { - try { - StaticLog.info("java.library.path=" + System.getProperty("java.library.path")); - System.loadLibrary("RapidOcrNcnn"); - } catch (Exception e) { - e.printStackTrace(); - } - this.padding = 15; - this.boxScoreThresh = 0.25f; - this.boxThresh = 0.3f; - this.unClipRatio = 1.6f; - this.doAngle = true; - this.mostAngle = true; - } - - public int getPadding() { - return this.padding; - } - - public void setPadding(int i) { - this.padding = i; - } - - public float getBoxScoreThresh() { - return this.boxScoreThresh; - } - - public void setBoxScoreThresh(float f) { - this.boxScoreThresh = f; - } - - public float getBoxThresh() { - return this.boxThresh; - } - - public void setBoxThresh(float f) { - this.boxThresh = f; - } - - public float getUnClipRatio() { - return this.unClipRatio; - } - - public void setUnClipRatio(float f) { - this.unClipRatio = f; - } - - public boolean getDoAngle() { - return this.doAngle; - } - - public void setDoAngle(boolean z) { - this.doAngle = z; - } - - public boolean getMostAngle() { - return this.mostAngle; - } - - public void setMostAngle(boolean z) { - this.mostAngle = z; - } - - public OcrResult detect(String input) { - return detect(input, 0); - } - - public OcrResult detect(String input, int maxSideLen) { - return detect(input, this.padding, maxSideLen, this.boxScoreThresh, this.boxThresh, this.unClipRatio, this.doAngle, this.mostAngle); - } -} \ No newline at end of file diff --git a/src/main/java/com/benjaminwan/ocrlibrary/OcrFailed.java b/src/main/java/com/benjaminwan/ocrlibrary/OcrFailed.java deleted file mode 100644 index 71e7a4c..0000000 --- a/src/main/java/com/benjaminwan/ocrlibrary/OcrFailed.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.benjaminwan.ocrlibrary; - -public final class OcrFailed extends OcrOutput { - public static final OcrFailed INSTANCE = new OcrFailed(); - - private OcrFailed() { - super(); - } -} diff --git a/src/main/java/com/benjaminwan/ocrlibrary/OcrOutput.java b/src/main/java/com/benjaminwan/ocrlibrary/OcrOutput.java deleted file mode 100644 index 5215bba..0000000 --- a/src/main/java/com/benjaminwan/ocrlibrary/OcrOutput.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.benjaminwan.ocrlibrary; - -public abstract class OcrOutput { - -} diff --git a/src/main/java/com/benjaminwan/ocrlibrary/OcrResult.java b/src/main/java/com/benjaminwan/ocrlibrary/OcrResult.java deleted file mode 100644 index 566929c..0000000 --- a/src/main/java/com/benjaminwan/ocrlibrary/OcrResult.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.benjaminwan.ocrlibrary; - -import java.util.ArrayList; - -public final class OcrResult extends OcrOutput { - private final double dbNetTime; - - private final ArrayList textBlocks; - private double detectTime; - - private String strRes; - - public OcrResult copy(double dbNetTime, ArrayList textBlocks, double detectTime, String strRes) { - return new OcrResult(dbNetTime, textBlocks, detectTime, strRes); - } - - public String toString() { - return "OcrResult(dbNetTime=" + this.dbNetTime + ", textBlocks=" + this.textBlocks + ", detectTime=" + this.detectTime + ", strRes=" + this.strRes + ')'; - } - - public double getDbNetTime() { - return this.dbNetTime; - } - - - public ArrayList getTextBlocks() { - return this.textBlocks; - } - - public double getDetectTime() { - return this.detectTime; - } - - public void setDetectTime(double d) { - this.detectTime = d; - } - - - public String getStrRes() { - return this.strRes; - } - - public void setStrRes(String str) { - this.strRes = str; - } - - public OcrResult(double dbNetTime, ArrayList textBlocks, double detectTime, String strRes) { - super(); - this.dbNetTime = dbNetTime; - this.textBlocks = textBlocks; - this.detectTime = detectTime; - this.strRes = strRes; - } -} diff --git a/src/main/java/com/benjaminwan/ocrlibrary/OcrStop.java b/src/main/java/com/benjaminwan/ocrlibrary/OcrStop.java deleted file mode 100644 index a7b6645..0000000 --- a/src/main/java/com/benjaminwan/ocrlibrary/OcrStop.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.benjaminwan.ocrlibrary; - -public final class OcrStop extends OcrOutput { - public static final OcrStop INSTANCE = new OcrStop(); - - private OcrStop() { - super(); - } -} diff --git a/src/main/java/com/benjaminwan/ocrlibrary/Point.java b/src/main/java/com/benjaminwan/ocrlibrary/Point.java deleted file mode 100644 index 73e7d5f..0000000 --- a/src/main/java/com/benjaminwan/ocrlibrary/Point.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.benjaminwan.ocrlibrary; - -public final class Point { - private int x; - private int y; - - public Point copy(int x, int y) { - return new Point(x, y); - } - - public String toString() { - return "Point(x=" + this.x + ", y=" + this.y + ')'; - } - - public int hashCode() { - int result = Integer.hashCode(this.x); - return (result * 31) + Integer.hashCode(this.y); - } - - public boolean equals(Object other) { - if (this == other) { - return true; - } - if (!(other instanceof Point)) { - return false; - } - Point point = (Point) other; - return this.x == point.x && this.y == point.y; - } - - public Point(int x, int y) { - this.x = x; - this.y = y; - } - - public int getX() { - return this.x; - } - - public void setX(int i) { - this.x = i; - } - - public int getY() { - return this.y; - } - - public void setY(int i) { - this.y = i; - } -} \ No newline at end of file diff --git a/src/main/java/com/benjaminwan/ocrlibrary/TextBlock.java b/src/main/java/com/benjaminwan/ocrlibrary/TextBlock.java deleted file mode 100644 index 6ac816b..0000000 --- a/src/main/java/com/benjaminwan/ocrlibrary/TextBlock.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.benjaminwan.ocrlibrary; - -import java.util.ArrayList; -import java.util.Arrays; - -public final class TextBlock { - - private final ArrayList boxPoint; - private float boxScore; - private final int angleIndex; - private final float angleScore; - private final double angleTime; - - private final String text; - - private final float[] charScores; - private final double crnnTime; - private final double blockTime; - - - public String toString() { - return "TextBlock(boxPoint=" + this.boxPoint + ", boxScore=" + this.boxScore + ", angleIndex=" + this.angleIndex + ", angleScore=" + this.angleScore + ", angleTime=" + this.angleTime + ", text=" + this.text + ", charScores=" + Arrays.toString(this.charScores) + ", crnnTime=" + this.crnnTime + ", blockTime=" + this.blockTime + ')'; - } - - public TextBlock( ArrayList boxPoint, float boxScore, int angleIndex, float angleScore, double angleTime, String text, float[] charScores, double crnnTime, double blockTime) { - this.boxPoint = boxPoint; - this.boxScore = boxScore; - this.angleIndex = angleIndex; - this.angleScore = angleScore; - this.angleTime = angleTime; - this.text = text; - this.charScores = charScores; - this.crnnTime = crnnTime; - this.blockTime = blockTime; - } - - - public ArrayList getBoxPoint() { - return this.boxPoint; - } - - public float getBoxScore() { - return this.boxScore; - } - - public void setBoxScore(float f) { - this.boxScore = f; - } - - public int getAngleIndex() { - return this.angleIndex; - } - - public float getAngleScore() { - return this.angleScore; - } - - public double getAngleTime() { - return this.angleTime; - } - - - public String getText() { - return this.text; - } - - - public float[] getCharScores() { - return this.charScores; - } - - public double getCrnnTime() { - return this.crnnTime; - } - - public double getBlockTime() { - return this.blockTime; - } -} diff --git a/src/main/java/com/litongjava/djl/paddle/ocr/v4/OcrV4DetExample.java b/src/main/java/com/litongjava/djl/paddle/ocr/v4/OcrV4DetExample.java deleted file mode 100644 index 9dd6986..0000000 --- a/src/main/java/com/litongjava/djl/paddle/ocr/v4/OcrV4DetExample.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.litongjava.djl.paddle.ocr.v4; - -import ai.djl.ModelException; -import ai.djl.inference.Predictor; -import ai.djl.modality.cv.Image; -import ai.djl.ndarray.NDList; -import ai.djl.ndarray.NDManager; -import ai.djl.opencv.OpenCVImageFactory; -import ai.djl.repository.zoo.ModelZoo; -import ai.djl.repository.zoo.ZooModel; -import ai.djl.translate.TranslateException; - -import com.litongjava.djl.paddle.ocr.v4.common.ImageUtils; -import com.litongjava.djl.paddle.ocr.v4.detection.OcrV4Detection; -import org.opencv.core.Mat; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.nio.file.Path; -import java.nio.file.Paths; - -public final class OcrV4DetExample { - - private static final Logger logger = LoggerFactory.getLogger(OcrV4DetExample.class); - - private OcrV4DetExample() { - } - - public static void main(String[] args) throws IOException, ModelException, TranslateException { - Path imageFile = Paths.get("src/test/resources/2.jpg"); - Image image = OpenCVImageFactory.getInstance().fromFile(imageFile); - - OcrV4Detection detection = new OcrV4Detection(); - try (ZooModel detectionModel = ModelZoo.loadModel(detection.chDetCriteria()); - Predictor detector = detectionModel.newPredictor(); - NDManager manager = NDManager.newBaseManager();) { - - NDList dt_boxes = detector.predict(image); - // 交给 NDManager自动管理内存 - // attach to manager for automatic memory management - dt_boxes.attach(manager); - - for (int i = 0; i < dt_boxes.size(); i++) { - ImageUtils.drawRect((Mat) image.getWrappedImage(), dt_boxes.get(i)); - } - ImageUtils.saveImage(image, "detect_rect.png", "build/output"); - ((Mat) image.getWrappedImage()).release(); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/litongjava/djl/paddle/ocr/v4/OcrV4RecExample.java b/src/main/java/com/litongjava/djl/paddle/ocr/v4/OcrV4RecExample.java deleted file mode 100644 index 3945727..0000000 --- a/src/main/java/com/litongjava/djl/paddle/ocr/v4/OcrV4RecExample.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.litongjava.djl.paddle.ocr.v4; - -import ai.djl.ModelException; -import ai.djl.inference.Predictor; -import ai.djl.modality.cv.Image; -import ai.djl.ndarray.NDList; -import ai.djl.ndarray.NDManager; -import ai.djl.opencv.OpenCVImageFactory; -import ai.djl.repository.zoo.ModelZoo; -import ai.djl.repository.zoo.ZooModel; -import ai.djl.translate.TranslateException; -import com.litongjava.djl.paddle.ocr.v4.common.ImageUtils; -import com.litongjava.djl.paddle.ocr.v4.common.RotatedBox; -import com.litongjava.djl.paddle.ocr.v4.common.RotatedBoxCompX; -import com.litongjava.djl.paddle.ocr.v4.detection.OcrV4Detection; -import com.litongjava.djl.paddle.ocr.v4.opencv.OpenCVUtils; -import com.litongjava.djl.paddle.ocr.v4.recognition.OcrV4Recognition; -import org.opencv.core.Mat; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * OCR V4模型 文字识别. 支持文本有旋转角度 - * OCR V4 model for text recognition. Supports text with rotation angles. - */ -public final class OcrV4RecExample { - - private static final Logger logger = LoggerFactory.getLogger(OcrV4RecExample.class); - - private OcrV4RecExample() { - } - - public static void main(String[] args) throws IOException, ModelException, TranslateException { - Path imageFile = Paths.get("src/test/resources/2.jpg"); - Image image = OpenCVImageFactory.getInstance().fromFile(imageFile); - - OcrV4Detection detection = new OcrV4Detection(); - OcrV4Recognition recognition = new OcrV4Recognition(); - try (ZooModel detectionModel = ModelZoo.loadModel(detection.chDetCriteria()); - Predictor detector = detectionModel.newPredictor(); - ZooModel recognitionModel = ModelZoo.loadModel(recognition.chRecCriteria()); - Predictor recognizer = recognitionModel.newPredictor(); - NDManager manager = NDManager.newBaseManager()) { - - long timeInferStart = System.currentTimeMillis(); - List detections = recognition.predict(manager, image, detector, recognizer); - -// for (int i = 0; i < 1000; i++) { -// detections = recognition.predict(image, detector, recognizer); -// for (RotatedBox result : detections) { -// System.out.println(result.getText()); -// } -// System.out.println("index : " + i); -// } - - long timeInferEnd = System.currentTimeMillis(); - System.out.println("time: " + (timeInferEnd - timeInferStart)); - - // 对检测结果根据坐标位置,根据从上到下,从做到右,重新排序,下面算法对图片倾斜旋转角度较小的情形适用 - // 如果图片旋转角度较大,则需要自行改进算法,需要根据斜率校正计算位置。 - // Reorder the detection results based on the coordinate positions, from top to bottom, from left to right. The algorithm below is suitable for situations where the image is slightly tilted or rotated. - // If the image rotation angle is large, the algorithm needs to be improved, and the position needs to be calculated based on the slope correction. - List initList = new ArrayList<>(); - for (RotatedBox result : detections) { - // put low Y value at the head of the queue. - initList.add(result); - } - Collections.sort(initList); - - List> lines = new ArrayList<>(); - List line = new ArrayList<>(); - RotatedBoxCompX firstBox = new RotatedBoxCompX(initList.get(0).getBox(), initList.get(0).getText()); - line.add(firstBox); - lines.add((ArrayList) line); - for (int i = 1; i < initList.size(); i++) { - RotatedBoxCompX tmpBox = new RotatedBoxCompX(initList.get(i).getBox(), initList.get(i).getText()); - float y1 = firstBox.getBox().toFloatArray()[1]; - float y2 = tmpBox.getBox().toFloatArray()[1]; - float dis = Math.abs(y2 - y1); - if (dis < 20) { // 认为是同 1 行 - Considered to be in the same line - line.add(tmpBox); - } else { // 换行 - Line break - firstBox = tmpBox; - Collections.sort(line); - line = new ArrayList<>(); - line.add(firstBox); - lines.add((ArrayList) line); - } - } - - - String fullText = ""; - for (int i = 0; i < lines.size(); i++) { - for (int j = 0; j < lines.get(i).size(); j++) { - String text = lines.get(i).get(j).getText(); - if (text.trim().equals("")) - continue; - fullText += text + " "; - } - fullText += '\n'; - } - - System.out.println(fullText); - - - // 转 BufferedImage 解决 Imgproc.putText 中文乱码问题 - Mat wrappedImage = (Mat) image.getWrappedImage(); - BufferedImage bufferedImage = OpenCVUtils.mat2Image(wrappedImage); - for (RotatedBox result : detections) { - ImageUtils.drawImageRectWithText(bufferedImage, result.getBox(), result.getText()); - } - - Mat image2Mat = OpenCVUtils.image2Mat(bufferedImage); - image = OpenCVImageFactory.getInstance().fromImage(image2Mat); - ImageUtils.saveImage(image, "ocr_result.png", "build/output"); - - wrappedImage.release(); - image2Mat.release(); - - logger.info("{}", detections); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/litongjava/djl/paddle/ocr/v4/common/ImageUtils.java b/src/main/java/com/litongjava/djl/paddle/ocr/v4/common/ImageUtils.java deleted file mode 100644 index 6c67331..0000000 --- a/src/main/java/com/litongjava/djl/paddle/ocr/v4/common/ImageUtils.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.litongjava.djl.paddle.ocr.v4.common; - -import ai.djl.modality.cv.Image; -import ai.djl.modality.cv.ImageFactory; -import ai.djl.modality.cv.output.DetectedObjects; -import ai.djl.ndarray.NDArray; -import org.opencv.core.Mat; -import org.opencv.core.Point; -import org.opencv.core.Scalar; -import org.opencv.imgproc.Imgproc; - -import java.awt.*; -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; - -/** - * 图像工具类 - */ -public class ImageUtils { - - /** - * 保存BufferedImage图片 - * - * @param img - * @param name - * @param path - */ - public static void saveImage(BufferedImage img, String name, String path) { - Image djlImg = ImageFactory.getInstance().fromImage(img); // 支持多种图片格式,自动适配 - Path outputDir = Paths.get(path); - Path imagePath = outputDir.resolve(name); - // OpenJDK 不能保存 jpg 图片的 alpha channel - try { - djlImg.save(Files.newOutputStream(imagePath), "png"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 保存DJL图片 - * - * @param img - * @param name - * @param path - */ - public static void saveImage(Image img, String name, String path) { - Path outputDir = Paths.get(path); - Path imagePath = outputDir.resolve(name); - // OpenJDK 不能保存 jpg 图片的 alpha channel - try { - img.save(Files.newOutputStream(imagePath), "png"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 保存图片,含检测框 - * - * @param img - * @param detection - * @param name - * @param path - * @throws IOException - */ - public static void saveBoundingBoxImage( - Image img, DetectedObjects detection, String name, String path) throws IOException { - // Make image copy with alpha channel because original image was jpg - img.drawBoundingBoxes(detection); - Path outputDir = Paths.get(path); - Files.createDirectories(outputDir); - Path imagePath = outputDir.resolve(name); - // OpenJDK can't save jpg with alpha channel - img.save(Files.newOutputStream(imagePath), "png"); - } - - /** - * 画矩形 - * - * @param mat - * @param box - */ - public static void drawRect(Mat mat, NDArray box) { - - float[] points = box.toFloatArray(); - List list = new ArrayList<>(); - - for (int i = 0; i < 4; i++) { - Point point = new Point((int) points[2 * i], (int) points[2 * i + 1]); - list.add(point); - } - - Imgproc.line(mat, list.get(0), list.get(1), new Scalar(0, 255, 0), 1); - Imgproc.line(mat, list.get(1), list.get(2), new Scalar(0, 255, 0), 1); - Imgproc.line(mat, list.get(2), list.get(3), new Scalar(0, 255, 0), 1); - Imgproc.line(mat, list.get(3), list.get(0), new Scalar(0, 255, 0), 1); - } - - /** - * 画矩形 - * - * @param mat - * @param box - * @param text - */ - public static void drawRectWithText(Mat mat, NDArray box, String text) { - - float[] points = box.toFloatArray(); - List list = new ArrayList<>(); - - for (int i = 0; i < 4; i++) { - Point point = new Point((int) points[2 * i], (int) points[2 * i + 1]); - list.add(point); - } - - Imgproc.line(mat, list.get(0), list.get(1), new Scalar(0, 255, 0), 1); - Imgproc.line(mat, list.get(1), list.get(2), new Scalar(0, 255, 0), 1); - Imgproc.line(mat, list.get(2), list.get(3), new Scalar(0, 255, 0), 1); - Imgproc.line(mat, list.get(3), list.get(0), new Scalar(0, 255, 0), 1); - // 中文乱码 - Imgproc.putText(mat, text, list.get(0), Imgproc.FONT_HERSHEY_SCRIPT_SIMPLEX, 1.0, new Scalar(0, 255, 0), 1); - } - - /** - * 画检测框(有倾斜角) - * - * @param image - * @param box - */ - public static void drawImageRect(BufferedImage image, NDArray box) { - float[] points = box.toFloatArray(); - int[] xPoints = new int[5]; - int[] yPoints = new int[5]; - - for (int i = 0; i < 4; i++) { - xPoints[i] = (int) points[2 * i]; - yPoints[i] = (int) points[2 * i + 1]; - } - xPoints[4] = xPoints[0]; - yPoints[4] = yPoints[0]; - - // 将绘制图像转换为Graphics2D - Graphics2D g = (Graphics2D) image.getGraphics(); - try { - g.setColor(new Color(0, 255, 0)); - // 声明画笔属性 :粗 细(单位像素)末端无修饰 折线处呈尖角 - BasicStroke bStroke = new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER); - g.setStroke(bStroke); - g.drawPolyline(xPoints, yPoints, 5); // xPoints, yPoints, nPoints - } finally { - g.dispose(); - } - } - - /** - * 画检测框(有倾斜角)和文本 - * - * @param image - * @param box - * @param text - */ - public static void drawImageRectWithText(BufferedImage image, NDArray box, String text) { - float[] points = box.toFloatArray(); - int[] xPoints = new int[5]; - int[] yPoints = new int[5]; - - for (int i = 0; i < 4; i++) { - xPoints[i] = (int) points[2 * i]; - yPoints[i] = (int) points[2 * i + 1]; - } - xPoints[4] = xPoints[0]; - yPoints[4] = yPoints[0]; - - // 将绘制图像转换为Graphics2D - Graphics2D g = (Graphics2D) image.getGraphics(); - try { - int fontSize = 32; - Font font = new Font("楷体", Font.PLAIN, fontSize); - g.setFont(font); - g.setColor(new Color(0, 0, 255)); - // 声明画笔属性 :粗 细(单位像素)末端无修饰 折线处呈尖角 - BasicStroke bStroke = new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER); - g.setStroke(bStroke); - g.drawPolyline(xPoints, yPoints, 5); // xPoints, yPoints, nPoints - g.drawString(text, xPoints[0], yPoints[0]); - } finally { - g.dispose(); - } - } - - /** - * 画检测框 - * - * @param image - * @param x - * @param y - * @param width - * @param height - */ - public static void drawImageRect(BufferedImage image, int x, int y, int width, int height) { - // 将绘制图像转换为Graphics2D - Graphics2D g = (Graphics2D) image.getGraphics(); - try { - g.setColor(new Color(0, 255, 0)); - // 声明画笔属性 :粗 细(单位像素)末端无修饰 折线处呈尖角 - BasicStroke bStroke = new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER); - g.setStroke(bStroke); - g.drawRect(x, y, width, height); - } finally { - g.dispose(); - } - } - - /** - * 显示文字 - * - * @param image - * @param text - * @param x - * @param y - */ - public static void drawImageText(BufferedImage image, String text, int x, int y) { - Graphics graphics = image.getGraphics(); - int fontSize = 32; - Font font = new Font("楷体", Font.PLAIN, fontSize); - try { - graphics.setFont(font); - graphics.setColor(new Color(0, 0, 255)); - int strWidth = graphics.getFontMetrics().stringWidth(text); - graphics.drawString(text, x, y); - } finally { - graphics.dispose(); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/litongjava/djl/paddle/ocr/v4/common/RotatedBox.java b/src/main/java/com/litongjava/djl/paddle/ocr/v4/common/RotatedBox.java deleted file mode 100644 index 1858258..0000000 --- a/src/main/java/com/litongjava/djl/paddle/ocr/v4/common/RotatedBox.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.litongjava.djl.paddle.ocr.v4.common; - -import ai.djl.ndarray.NDArray; - -/** - * 旋转检测框 - */ -public class RotatedBox implements Comparable { - private NDArray box; - private String text; - - public RotatedBox(NDArray box, String text) { - this.box = box; - this.text = text; - } - - /** - * 将左上角 Y 坐标升序排序 - * - * @param o - * @return - */ - @Override - public int compareTo(RotatedBox o) { - NDArray lowBox = this.getBox(); - NDArray highBox = o.getBox(); - float lowY = lowBox.toFloatArray()[1]; - float highY = highBox.toFloatArray()[1]; - return (lowY < highY) ? -1 : 1; - } - - public NDArray getBox() { - return box; - } - - public void setBox(NDArray box) { - this.box = box; - } - - public String getText() { - return text; - } - - public void setText(String text) { - this.text = text; - } -} \ No newline at end of file diff --git a/src/main/java/com/litongjava/djl/paddle/ocr/v4/common/RotatedBoxCompX.java b/src/main/java/com/litongjava/djl/paddle/ocr/v4/common/RotatedBoxCompX.java deleted file mode 100644 index 3010457..0000000 --- a/src/main/java/com/litongjava/djl/paddle/ocr/v4/common/RotatedBoxCompX.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.litongjava.djl.paddle.ocr.v4.common; - -import ai.djl.ndarray.NDArray; - -/** - */ -public class RotatedBoxCompX implements Comparable { - private NDArray box; - private String text; - - public RotatedBoxCompX(NDArray box, String text) { - this.box = box; - this.text = text; - } - - /** - * 将左上角 X 坐标升序排序 - * - * @param o - * @return - */ - @Override - public int compareTo(RotatedBoxCompX o) { - NDArray leftBox = this.getBox(); - NDArray rightBox = o.getBox(); - float leftX = leftBox.toFloatArray()[0]; - float rightX = rightBox.toFloatArray()[0]; - return (leftX < rightX) ? -1 : 1; - } - - public NDArray getBox() { - return box; - } - - public void setBox(NDArray box) { - this.box = box; - } - - public String getText() { - return text; - } - - public void setText(String text) { - this.text = text; - } -} \ No newline at end of file diff --git a/src/main/java/com/litongjava/djl/paddle/ocr/v4/detection/OCRDetectionTranslator.java b/src/main/java/com/litongjava/djl/paddle/ocr/v4/detection/OCRDetectionTranslator.java deleted file mode 100644 index ee59fdb..0000000 --- a/src/main/java/com/litongjava/djl/paddle/ocr/v4/detection/OCRDetectionTranslator.java +++ /dev/null @@ -1,525 +0,0 @@ -package com.litongjava.djl.paddle.ocr.v4.detection; - -import ai.djl.modality.cv.Image; -import ai.djl.modality.cv.util.NDImageUtils; -import ai.djl.ndarray.NDArray; -import ai.djl.ndarray.NDArrays; -import ai.djl.ndarray.NDList; -import ai.djl.ndarray.NDManager; -import ai.djl.ndarray.index.NDIndex; -import ai.djl.ndarray.types.DataType; -import ai.djl.ndarray.types.Shape; -import ai.djl.translate.Batchifier; -import ai.djl.translate.Translator; -import ai.djl.translate.TranslatorContext; -import com.litongjava.djl.paddle.ocr.v4.opencv.NDArrayUtils; -import org.opencv.core.*; -import org.opencv.imgproc.Imgproc; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * 文字检测前后处理 - */ -public class OCRDetectionTranslator implements Translator { - // det_algorithm == "DB" - private final float thresh = 0.3f; - private final boolean use_dilation = false; - private final String score_mode = "fast"; - private final String box_type = "quad"; - - private final int limit_side_len; - private final int max_candidates; - private final int min_size; - private final float box_thresh; - private final float unclip_ratio; - private float ratio_h; - private float ratio_w; - private int img_height; - private int img_width; - - public OCRDetectionTranslator(Map arguments) { - limit_side_len = - arguments.containsKey("limit_side_len") - ? Integer.parseInt(arguments.get("limit_side_len").toString()) - : 960; - max_candidates = - arguments.containsKey("max_candidates") - ? Integer.parseInt(arguments.get("max_candidates").toString()) - : 1000; - min_size = - arguments.containsKey("min_size") - ? Integer.parseInt(arguments.get("min_size").toString()) - : 3; - box_thresh = - arguments.containsKey("box_thresh") - ? Float.parseFloat(arguments.get("box_thresh").toString()) - : 0.6f; // 0.5f - unclip_ratio = - arguments.containsKey("unclip_ratio") - ? Float.parseFloat(arguments.get("unclip_ratio").toString()) - : 1.6f; - } - - @Override - public NDList processOutput(TranslatorContext ctx, NDList list) { - NDManager manager = ctx.getNDManager(); - NDArray pred = list.get(0); - pred = pred.squeeze(); - NDArray segmentation = pred.gt(thresh); // thresh=0.3 .mul(255f) - - segmentation = segmentation.toType(DataType.UINT8, true); - Shape shape = segmentation.getShape(); - int rows = (int) shape.get(0); - int cols = (int) shape.get(1); - - Mat newMask = new Mat(); - if (this.use_dilation) { - Mat mask = new Mat(); - //convert from NDArray to Mat - Mat srcMat = NDArrayUtils.uint8NDArrayToMat(segmentation); - // size 越小,腐蚀的单位越小,图片越接近原图 - // Mat dilation_kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(2, 2)); - Mat dilation_kernel = NDArrayUtils.uint8ArrayToMat(new byte[][]{{1, 1}, {1, 1}}); - /** - * 膨胀说明: 图像的一部分区域与指定的核进行卷积, 求核的最`大`值并赋值给指定区域。 膨胀可以理解为图像中`高亮区域`的'领域扩大'。 - * 意思是高亮部分会侵蚀不是高亮的部分,使高亮部分越来越多。 - */ - Imgproc.dilate(srcMat, mask, dilation_kernel); - //destination Matrix - Scalar scalar = new Scalar(255); - Core.multiply(mask, scalar, newMask); - // release Mat - mask.release(); - srcMat.release(); - dilation_kernel.release(); - } else { - Mat srcMat = NDArrayUtils.uint8NDArrayToMat(segmentation); - //destination Matrix - Scalar scalar = new Scalar(255); - Core.multiply(srcMat, scalar, newMask); - // release Mat - srcMat.release(); - } - - NDList dt_boxes = null; - NDArray boxes = boxes_from_bitmap(manager, pred, newMask); - if (boxes != null) { - //boxes[:, :, 0] = boxes[:, :, 0] / ratio_w - NDArray boxes1 = boxes.get(":, :, 0").div(ratio_w); - boxes.set(new NDIndex(":, :, 0"), boxes1); - //boxes[:, :, 1] = boxes[:, :, 1] / ratio_h - NDArray boxes2 = boxes.get(":, :, 1").div(ratio_h); - boxes.set(new NDIndex(":, :, 1"), boxes2); - - dt_boxes = this.filter_tag_det_res(boxes); - - dt_boxes.detach(); - } - - // release Mat - newMask.release(); - - return dt_boxes; - } - - - private NDList filter_tag_det_res(NDArray dt_boxes) { - NDList boxesList = new NDList(); - - int num = (int) dt_boxes.getShape().get(0); - for (int i = 0; i < num; i++) { - NDArray box = dt_boxes.get(i); - box = order_points_clockwise(box); - box = clip_det_res(box); - float[] box0 = box.get(0).toFloatArray(); - float[] box1 = box.get(1).toFloatArray(); - float[] box3 = box.get(3).toFloatArray(); - int rect_width = (int) Math.sqrt(Math.pow(box1[0] - box0[0], 2) + Math.pow(box1[1] - box0[1], 2)); - int rect_height = (int) Math.sqrt(Math.pow(box3[0] - box0[0], 2) + Math.pow(box3[1] - box0[1], 2)); - if (rect_width <= 3 || rect_height <= 3) - continue; - boxesList.add(box); - } - - return boxesList; - } - - private NDArray clip_det_res(NDArray points) { - for (int i = 0; i < points.getShape().get(0); i++) { - int value = Math.max((int) points.get(i, 0).toFloatArray()[0], 0); - value = Math.min(value, img_width - 1); - points.set(new NDIndex(i + ",0"), value); - value = Math.max((int) points.get(i, 1).toFloatArray()[0], 0); - value = Math.min(value, img_height - 1); - points.set(new NDIndex(i + ",1"), value); - } - - return points; - } - - /** - * sort the points based on their x-coordinates - * 顺时针 - * - * @param pts - * @return - */ - - private NDArray order_points_clockwise(NDArray pts) { - NDList list = new NDList(); - long[] indexes = pts.get(":, 0").argSort().toLongArray(); - - // grab the left-most and right-most points from the sorted - // x-roodinate points - Shape s1 = pts.getShape(); - NDArray leftMost1 = pts.get(indexes[0] + ",:"); - NDArray leftMost2 = pts.get(indexes[1] + ",:"); - NDArray leftMost = leftMost1.concat(leftMost2).reshape(2, 2); - NDArray rightMost1 = pts.get(indexes[2] + ",:"); - NDArray rightMost2 = pts.get(indexes[3] + ",:"); - NDArray rightMost = rightMost1.concat(rightMost2).reshape(2, 2); - - // now, sort the left-most coordinates according to their - // y-coordinates so we can grab the top-left and bottom-left - // points, respectively - indexes = leftMost.get(":, 1").argSort().toLongArray(); - NDArray lt = leftMost.get(indexes[0] + ",:"); - NDArray lb = leftMost.get(indexes[1] + ",:"); - indexes = rightMost.get(":, 1").argSort().toLongArray(); - NDArray rt = rightMost.get(indexes[0] + ",:"); - NDArray rb = rightMost.get(indexes[1] + ",:"); - - list.add(lt); - list.add(rt); - list.add(rb); - list.add(lb); - - NDArray rect = NDArrays.concat(list).reshape(4, 2); - return rect; - } - - /** - * Get boxes from the binarized image predicted by DB - * - * @param manager - * @param pred the binarized image predicted by DB. - * @param bitmap new 'pred' after threshold filtering. - */ - private NDArray boxes_from_bitmap(NDManager manager, NDArray pred, Mat bitmap) { - int dest_height = (int) pred.getShape().get(0); - int dest_width = (int) pred.getShape().get(1); - int height = bitmap.rows(); - int width = bitmap.cols(); - - List contours = new ArrayList<>(); - Mat hierarchy = new Mat(); - // 寻找轮廓 - Imgproc.findContours( - bitmap, - contours, - hierarchy, - Imgproc.RETR_LIST, - Imgproc.CHAIN_APPROX_SIMPLE); - - int num_contours = Math.min(contours.size(), max_candidates); - NDList boxList = new NDList(); - float[] scores = new float[num_contours]; - - for (int index = 0; index < num_contours; index++) { - MatOfPoint contour = contours.get(index); - MatOfPoint2f newContour = new MatOfPoint2f(contour.toArray()); - float[][] pointsArr = new float[4][2]; - int sside = get_mini_boxes(newContour, pointsArr); - if (sside < this.min_size) - continue; - NDArray points = manager.create(pointsArr); - float score = box_score_fast(manager, pred, points); - if (score < this.box_thresh) - continue; - - NDArray box = unclip(manager, points); // TODO get_mini_boxes(box) - - // box[:, 0] = np.clip(np.round(box[:, 0] / width * dest_width), 0, dest_width) - NDArray boxes1 = box.get(":,0").div(width).mul(dest_width).round().clip(0, dest_width); - box.set(new NDIndex(":, 0"), boxes1); - // box[:, 1] = np.clip(np.round(box[:, 1] / height * dest_height), 0, dest_height) - NDArray boxes2 = box.get(":,1").div(height).mul(dest_height).round().clip(0, dest_height); - box.set(new NDIndex(":, 1"), boxes2); - - boxList.add(box); - scores[index] = score; - - // release memory - contour.release(); - newContour.release(); - } - - // release - hierarchy.release(); - - NDArray boxes = null; - if (boxList.size() > 0) { - boxes = NDArrays.stack(boxList); - return boxes; - } - - return boxes; - - - } - - /** - * Shrink or expand the boxaccording to 'unclip_ratio' - * - * @param points The predicted box. - * @return uncliped box - */ - private NDArray unclip(NDManager manager, NDArray points) { - points = order_points_clockwise(points); - float[] pointsArr = points.toFloatArray(); - float[] lt = java.util.Arrays.copyOfRange(pointsArr, 0, 2); - float[] lb = java.util.Arrays.copyOfRange(pointsArr, 6, 8); - - float[] rt = java.util.Arrays.copyOfRange(pointsArr, 2, 4); - float[] rb = java.util.Arrays.copyOfRange(pointsArr, 4, 6); - - float width = distance(lt, rt); - float height = distance(lt, lb); - - if (width > height) { - float k = (lt[1] - rt[1]) / (lt[0] - rt[0]); // y = k * x + b - - float delta_dis = height; - float delta_x = (float) Math.sqrt((delta_dis * delta_dis) / (k * k + 1)); - float delta_y = Math.abs(k * delta_x); - - if (k > 0) { - pointsArr[0] = lt[0] - delta_x + delta_y; - pointsArr[1] = lt[1] - delta_y - delta_x; - pointsArr[2] = rt[0] + delta_x + delta_y; - pointsArr[3] = rt[1] + delta_y - delta_x; - - pointsArr[4] = rb[0] + delta_x - delta_y; - pointsArr[5] = rb[1] + delta_y + delta_x; - pointsArr[6] = lb[0] - delta_x - delta_y; - pointsArr[7] = lb[1] - delta_y + delta_x; - } else { - pointsArr[0] = lt[0] - delta_x - delta_y; - pointsArr[1] = lt[1] + delta_y - delta_x; - pointsArr[2] = rt[0] + delta_x - delta_y; - pointsArr[3] = rt[1] - delta_y - delta_x; - - pointsArr[4] = rb[0] + delta_x + delta_y; - pointsArr[5] = rb[1] - delta_y + delta_x; - pointsArr[6] = lb[0] - delta_x + delta_y; - pointsArr[7] = lb[1] + delta_y + delta_x; - } - } else { - float k = (lt[1] - rt[1]) / (lt[0] - rt[0]); // y = k * x + b - - float delta_dis = width; - float delta_y = (float) Math.sqrt((delta_dis * delta_dis) / (k * k + 1)); - float delta_x = Math.abs(k * delta_y); - - if (k > 0) { - pointsArr[0] = lt[0] + delta_x - delta_y; - pointsArr[1] = lt[1] - delta_y - delta_x; - pointsArr[2] = rt[0] + delta_x + delta_y; - pointsArr[3] = rt[1] - delta_y + delta_x; - - pointsArr[4] = rb[0] - delta_x + delta_y; - pointsArr[5] = rb[1] + delta_y + delta_x; - pointsArr[6] = lb[0] - delta_x - delta_y; - pointsArr[7] = lb[1] + delta_y - delta_x; - } else { - pointsArr[0] = lt[0] - delta_x - delta_y; - pointsArr[1] = lt[1] - delta_y + delta_x; - pointsArr[2] = rt[0] - delta_x + delta_y; - pointsArr[3] = rt[1] - delta_y - delta_x; - - pointsArr[4] = rb[0] + delta_x + delta_y; - pointsArr[5] = rb[1] + delta_y - delta_x; - pointsArr[6] = lb[0] + delta_x - delta_y; - pointsArr[7] = lb[1] + delta_y + delta_x; - } - } - points = manager.create(pointsArr).reshape(4, 2); - - return points; - } - - private float distance(float[] point1, float[] point2) { - float disX = point1[0] - point2[0]; - float disY = point1[1] - point2[1]; - float dis = (float) Math.sqrt(disX * disX + disY * disY); - return dis; - } - - /** - * Get boxes from the contour or box. - * - * @param contour The predicted contour. - * @param pointsArr The predicted box. - * @return smaller side of box - */ - private int get_mini_boxes(MatOfPoint2f contour, float[][] pointsArr) { - // https://blog.csdn.net/qq_37385726/article/details/82313558 - // bounding_box[1] - rect 返回矩形的长和宽 - RotatedRect rect = Imgproc.minAreaRect(contour); - Mat points = new Mat(); - Imgproc.boxPoints(rect, points); - - float[][] fourPoints = new float[4][2]; - for (int row = 0; row < 4; row++) { - fourPoints[row][0] = (float) points.get(row, 0)[0]; - fourPoints[row][1] = (float) points.get(row, 1)[0]; - } - - float[] tmpPoint = new float[2]; - for (int i = 0; i < 4; i++) { - for (int j = i + 1; j < 4; j++) { - if (fourPoints[j][0] < fourPoints[i][0]) { - tmpPoint[0] = fourPoints[i][0]; - tmpPoint[1] = fourPoints[i][1]; - fourPoints[i][0] = fourPoints[j][0]; - fourPoints[i][1] = fourPoints[j][1]; - fourPoints[j][0] = tmpPoint[0]; - fourPoints[j][1] = tmpPoint[1]; - } - } - } - - int index_1 = 0; - int index_2 = 1; - int index_3 = 2; - int index_4 = 3; - - if (fourPoints[1][1] > fourPoints[0][1]) { - index_1 = 0; - index_4 = 1; - } else { - index_1 = 1; - index_4 = 0; - } - - if (fourPoints[3][1] > fourPoints[2][1]) { - index_2 = 2; - index_3 = 3; - } else { - index_2 = 3; - index_3 = 2; - } - - pointsArr[0] = fourPoints[index_1]; - pointsArr[1] = fourPoints[index_2]; - pointsArr[2] = fourPoints[index_3]; - pointsArr[3] = fourPoints[index_4]; - - int height = rect.boundingRect().height; - int width = rect.boundingRect().width; - int sside = Math.min(height, width); - - // release - points.release(); - - return sside; - } - - /** - * Calculate the score of box. - * - * @param bitmap The binarized image predicted by DB. - * @param points The predicted box - * @return - */ - private float box_score_fast(NDManager manager, NDArray bitmap, NDArray points) { - NDArray box = points.get(":"); - long h = bitmap.getShape().get(0); - long w = bitmap.getShape().get(1); - // xmin = np.clip(np.floor(box[:, 0].min()).astype(np.int), 0, w - 1) - int xmin = box.get(":, 0").min().floor().clip(0, w - 1).toType(DataType.INT32, true).toIntArray()[0]; - int xmax = box.get(":, 0").max().ceil().clip(0, w - 1).toType(DataType.INT32, true).toIntArray()[0]; - int ymin = box.get(":, 1").min().floor().clip(0, h - 1).toType(DataType.INT32, true).toIntArray()[0]; - int ymax = box.get(":, 1").max().ceil().clip(0, h - 1).toType(DataType.INT32, true).toIntArray()[0]; - - NDArray mask = manager.zeros(new Shape(ymax - ymin + 1, xmax - xmin + 1), DataType.UINT8); - - box.set(new NDIndex(":, 0"), box.get(":, 0").sub(xmin)); - box.set(new NDIndex(":, 1"), box.get(":, 1").sub(ymin)); - - //mask - convert from NDArray to Mat - Mat maskMat = NDArrayUtils.uint8NDArrayToMat(mask); - - //mask - convert from NDArray to Mat - 4 rows, 2 cols - Mat boxMat = NDArrayUtils.floatNDArrayToMat(box, CvType.CV_32S); - -// boxMat.reshape(1, new int[]{1, 4, 2}); - List pts = new ArrayList<>(); - MatOfPoint matOfPoint = NDArrayUtils.matToMatOfPoint(boxMat); // new MatOfPoint(boxMat); - pts.add(matOfPoint); - Imgproc.fillPoly(maskMat, pts, new Scalar(1)); - - - NDArray subBitMap = bitmap.get(ymin + ":" + (ymax + 1) + "," + xmin + ":" + (xmax + 1)); - Mat bitMapMat = NDArrayUtils.floatNDArrayToMat(subBitMap); - - Scalar score = Core.mean(bitMapMat, maskMat); - float scoreValue = (float) score.val[0]; - // release - maskMat.release(); - boxMat.release(); - bitMapMat.release(); - - return scoreValue; - } - - @Override - public NDList processInput(TranslatorContext ctx, Image input) { - NDArray img = input.toNDArray(ctx.getNDManager()); - int h = input.getHeight(); - int w = input.getWidth(); - img_height = h; - img_width = w; - - // limit the max side - float ratio = 1.0f; - if (Math.max(h, w) > limit_side_len) { - if (h > w) { - ratio = (float) limit_side_len / (float) h; - } else { - ratio = (float) limit_side_len / (float) w; - } - } - - int resize_h = (int) (h * ratio); - int resize_w = (int) (w * ratio); - - resize_h = Math.round((float) resize_h / 32f) * 32; - resize_w = Math.round((float) resize_w / 32f) * 32; - - ratio_h = resize_h / (float) h; - ratio_w = resize_w / (float) w; - - img = NDImageUtils.resize(img, resize_w, resize_h); - - img = NDImageUtils.toTensor(img); - - img = - NDImageUtils.normalize( - img, - new float[]{0.485f, 0.456f, 0.406f}, - new float[]{0.229f, 0.224f, 0.225f}); - - img = img.expandDims(0); - - return new NDList(img); - } - - @Override - public Batchifier getBatchifier() { - return null; - } -} \ No newline at end of file diff --git a/src/main/java/com/litongjava/djl/paddle/ocr/v4/detection/OcrV4Detection.java b/src/main/java/com/litongjava/djl/paddle/ocr/v4/detection/OcrV4Detection.java deleted file mode 100644 index f2e2bc8..0000000 --- a/src/main/java/com/litongjava/djl/paddle/ocr/v4/detection/OcrV4Detection.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.litongjava.djl.paddle.ocr.v4.detection; - -import ai.djl.modality.cv.Image; -import ai.djl.ndarray.NDList; -import ai.djl.repository.zoo.Criteria; -import ai.djl.training.util.ProgressBar; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.concurrent.ConcurrentHashMap; -import java.nio.file.Paths; - -/** - * 文字检测 - */ -public final class OcrV4Detection { - /** - * 中文文本检测 - * - * @return - */ - public Criteria chDetCriteria() { - Criteria criteria = - Criteria.builder() - .optEngine("OnnxRuntime") - // .optModelName("inference") - .setTypes(Image.class, NDList.class) - .optModelPath(Paths.get("models/ch_PP-OCRv4_det_infer/inference.onnx")) - .optTranslator(new OCRDetectionTranslator(new ConcurrentHashMap())) - .optProgress(new ProgressBar()) - .build(); - - return criteria; - } - -} \ No newline at end of file diff --git a/src/main/java/com/litongjava/djl/paddle/ocr/v4/opencv/NDArrayUtils.java b/src/main/java/com/litongjava/djl/paddle/ocr/v4/opencv/NDArrayUtils.java deleted file mode 100644 index 1e3bc4c..0000000 --- a/src/main/java/com/litongjava/djl/paddle/ocr/v4/opencv/NDArrayUtils.java +++ /dev/null @@ -1,236 +0,0 @@ -package com.litongjava.djl.paddle.ocr.v4.opencv; - -import ai.djl.ndarray.NDArray; -import org.opencv.core.CvType; -import org.opencv.core.Mat; -import org.opencv.core.MatOfPoint; -import org.opencv.core.Point; - -import java.util.ArrayList; -import java.util.List; - -public class NDArrayUtils { - /** - * Mat To MatOfPoint - * - * @param mat - * @return - */ - public static MatOfPoint matToMatOfPoint(Mat mat) { - int rows = mat.rows(); - MatOfPoint matOfPoint = new MatOfPoint(); - - List list = new ArrayList<>(); - for (int i = 0; i < rows; i++) { - Point point = new Point((float) mat.get(i, 0)[0], (float) mat.get(i, 1)[0]); - list.add(point); - } - matOfPoint.fromList(list); - - return matOfPoint; - } - - /** - * float NDArray To float[][] Array - * - * @param ndArray - * @return - */ - public static float[][] floatNDArrayToArray(NDArray ndArray) { - int rows = (int) (ndArray.getShape().get(0)); - int cols = (int) (ndArray.getShape().get(1)); - float[][] arr = new float[rows][cols]; - - float[] arrs = ndArray.toFloatArray(); - for (int i = 0; i < rows; i++) { - for (int j = 0; j < cols; j++) { - arr[i][j] = arrs[i * cols + j]; - } - } - return arr; - } - - /** - * Mat To double[][] Array - * - * @param mat - * @return - */ - public static double[][] matToDoubleArray(Mat mat) { - int rows = mat.rows(); - int cols = mat.cols(); - - double[][] doubles = new double[rows][cols]; - - for (int i = 0; i < rows; i++) { - for (int j = 0; j < cols; j++) { - doubles[i][j] = mat.get(i, j)[0]; - } - } - - return doubles; - } - - /** - * Mat To float[][] Array - * - * @param mat - * @return - */ - public static float[][] matToFloatArray(Mat mat) { - int rows = mat.rows(); - int cols = mat.cols(); - - float[][] floats = new float[rows][cols]; - - for (int i = 0; i < rows; i++) { - for (int j = 0; j < cols; j++) { - floats[i][j] = (float) mat.get(i, j)[0]; - } - } - - return floats; - } - - /** - * Mat To byte[][] Array - * - * @param mat - * @return - */ - public static byte[][] matToUint8Array(Mat mat) { - int rows = mat.rows(); - int cols = mat.cols(); - - byte[][] bytes = new byte[rows][cols]; - - for (int i = 0; i < rows; i++) { - for (int j = 0; j < cols; j++) { - bytes[i][j] = (byte) mat.get(i, j)[0]; - } - } - - return bytes; - } - - /** - * float NDArray To float[][] Array - * - * @param ndArray - * @param cvType - * @return - */ - public static Mat floatNDArrayToMat(NDArray ndArray, int cvType) { - int rows = (int) (ndArray.getShape().get(0)); - int cols = (int) (ndArray.getShape().get(1)); - Mat mat = new Mat(rows, cols, cvType); - - float[] arrs = ndArray.toFloatArray(); - for (int i = 0; i < rows; i++) { - for (int j = 0; j < cols; j++) { - mat.put(i, j, arrs[i * cols + j]); - } - } - return mat; - } - - /** - * float NDArray To Mat - * - * @param ndArray - * @return - */ - public static Mat floatNDArrayToMat(NDArray ndArray) { - int rows = (int) (ndArray.getShape().get(0)); - int cols = (int) (ndArray.getShape().get(1)); - Mat mat = new Mat(rows, cols, CvType.CV_32F); - - float[] arrs = ndArray.toFloatArray(); - for (int i = 0; i < rows; i++) { - for (int j = 0; j < cols; j++) { - mat.put(i, j, arrs[i * cols + j]); - } - } - - return mat; - - } - - /** - * uint8 NDArray To Mat - * - * @param ndArray - * @return - */ - public static Mat uint8NDArrayToMat(NDArray ndArray) { - int rows = (int) (ndArray.getShape().get(0)); - int cols = (int) (ndArray.getShape().get(1)); - Mat mat = new Mat(rows, cols, CvType.CV_8U); - - byte[] arrs = ndArray.toByteArray(); - - for (int i = 0; i < rows; i++) { - for (int j = 0; j < cols; j++) { - mat.put(i, j, arrs[i * cols + j]); - } - } - return mat; - } - - /** - * float[][] Array To Mat - * - * @param arr - * @return - */ - public static Mat floatArrayToMat(float[][] arr) { - int rows = arr.length; - int cols = arr[0].length; - Mat mat = new Mat(rows, cols, CvType.CV_32F); - - for (int i = 0; i < rows; i++) { - for (int j = 0; j < cols; j++) { - mat.put(i, j, arr[i][j]); - } - } - - return mat; - } - - /** - * byte[][] Array To Mat - * - * @param arr - * @return - */ - public static Mat uint8ArrayToMat(byte[][] arr) { - int rows = arr.length; - int cols = arr[0].length; - Mat mat = new Mat(rows, cols, CvType.CV_8U); - - for (int i = 0; i < rows; i++) { - for (int j = 0; j < cols; j++) { - mat.put(i, j, arr[i][j]); - } - } - - return mat; - } - - /** - * List To Mat - * - * @param points - * @return - */ - public static Mat toMat(List points) { - Mat mat = new Mat(points.size(), 2, CvType.CV_32F); - for (int i = 0; i < points.size(); i++) { - ai.djl.modality.cv.output.Point point = points.get(i); - mat.put(i, 0, (float) point.getX()); - mat.put(i, 1, (float) point.getY()); - } - - return mat; - } -} \ No newline at end of file diff --git a/src/main/java/com/litongjava/djl/paddle/ocr/v4/opencv/OpenCVUtils.java b/src/main/java/com/litongjava/djl/paddle/ocr/v4/opencv/OpenCVUtils.java deleted file mode 100644 index 81c0f44..0000000 --- a/src/main/java/com/litongjava/djl/paddle/ocr/v4/opencv/OpenCVUtils.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.litongjava.djl.paddle.ocr.v4.opencv; - -import org.opencv.core.CvType; -import org.opencv.core.Mat; -import org.opencv.imgproc.Imgproc; - -import java.awt.image.BufferedImage; -import java.awt.image.DataBufferByte; - -public class OpenCVUtils { - - /** - * 透视变换 - * - * @param src - * @param srcPoints - * @param dstPoints - * @return - */ - public static Mat perspectiveTransform(Mat src, Mat srcPoints, Mat dstPoints) { - Mat dst = src.clone(); - Mat warp_mat = Imgproc.getPerspectiveTransform(srcPoints, dstPoints); - Imgproc.warpPerspective(src, dst, warp_mat, dst.size()); - warp_mat.release(); - - return dst; - } - - /** - * Mat to BufferedImage - * - * @param mat - * @return - */ - public static BufferedImage mat2Image(Mat mat) { - int width = mat.width(); - int height = mat.height(); - byte[] data = new byte[width * height * (int) mat.elemSize()]; - Imgproc.cvtColor(mat, mat, 4); - mat.get(0, 0, data); - BufferedImage ret = new BufferedImage(width, height, 5); - ret.getRaster().setDataElements(0, 0, width, height, data); - return ret; - } - - /** - * BufferedImage to Mat - * - * @param img - * @return - */ - public static Mat image2Mat(BufferedImage img) { - int width = img.getWidth(); - int height = img.getHeight(); - byte[] data = ((DataBufferByte) img.getRaster().getDataBuffer()).getData(); - Mat mat = new Mat(height, width, CvType.CV_8UC3); - mat.put(0, 0, data); - return mat; - } -} \ No newline at end of file diff --git a/src/main/java/com/litongjava/djl/paddle/ocr/v4/recognition/OcrV4Recognition.java b/src/main/java/com/litongjava/djl/paddle/ocr/v4/recognition/OcrV4Recognition.java deleted file mode 100644 index 9ce8df4..0000000 --- a/src/main/java/com/litongjava/djl/paddle/ocr/v4/recognition/OcrV4Recognition.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.litongjava.djl.paddle.ocr.v4.recognition; - -import ai.djl.inference.Predictor; -import ai.djl.modality.cv.Image; -import ai.djl.modality.cv.ImageFactory; -import ai.djl.modality.cv.output.Point; -import ai.djl.modality.cv.util.NDImageUtils; -import ai.djl.ndarray.NDArray; -import ai.djl.ndarray.NDList; -import ai.djl.ndarray.NDManager; -import ai.djl.opencv.OpenCVImageFactory; -import ai.djl.repository.zoo.Criteria; -import ai.djl.training.util.ProgressBar; -import ai.djl.translate.TranslateException; -import com.litongjava.djl.paddle.ocr.v4.common.RotatedBox; -import com.litongjava.djl.paddle.ocr.v4.opencv.NDArrayUtils; -import com.litongjava.djl.paddle.ocr.v4.opencv.OpenCVUtils; -import org.opencv.core.Mat; - -import java.awt.image.BufferedImage; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 文字识别 - */ -public final class OcrV4Recognition { - - - /** - * 中文简体 - * - * @return - */ - public Criteria chRecCriteria() { - Path modelPath = Paths.get("models/ch_PP-OCRv4_rec_infer/inference.onnx"); - Criteria criteria = - Criteria.builder() - .optEngine("OnnxRuntime") - //.optModelName("inference") - .setTypes(Image.class, String.class) - .optModelPath(modelPath) - .optProgress(new ProgressBar()) - .optTranslator(new PpWordRecTranslator(new ConcurrentHashMap())) - .build(); - return criteria; - } - - - /** - * 图像推理 - * - * @param manager - * @param image - * @param detector - * @param recognizer - * @return - * @throws TranslateException - */ - public List predict(NDManager manager, - Image image, Predictor detector, Predictor recognizer) - throws TranslateException { - NDList boxes = detector.predict(image); - if (boxes == null) { - return null; - } - // 交给 NDManager自动管理内存 - // attach to manager for automatic memory management - boxes.attach(manager); - - List result = new ArrayList<>(); - - Mat mat = (Mat) image.getWrappedImage(); - - for (int i = 0; i < boxes.size(); i++) { - NDArray box = boxes.get(i); - - float[] pointsArr = box.toFloatArray(); - float[] lt = java.util.Arrays.copyOfRange(pointsArr, 0, 2); - float[] rt = java.util.Arrays.copyOfRange(pointsArr, 2, 4); - float[] rb = java.util.Arrays.copyOfRange(pointsArr, 4, 6); - float[] lb = java.util.Arrays.copyOfRange(pointsArr, 6, 8); - int img_crop_width = (int) Math.max(distance(lt, rt), distance(rb, lb)); - int img_crop_height = (int) Math.max(distance(lt, lb), distance(rt, rb)); - List srcPoints = new ArrayList<>(); - srcPoints.add(new Point(lt[0], lt[1])); - srcPoints.add(new Point(rt[0], rt[1])); - srcPoints.add(new Point(rb[0], rb[1])); - srcPoints.add(new Point(lb[0], lb[1])); - List dstPoints = new ArrayList<>(); - dstPoints.add(new Point(0, 0)); - dstPoints.add(new Point(img_crop_width, 0)); - dstPoints.add(new Point(img_crop_width, img_crop_height)); - dstPoints.add(new Point(0, img_crop_height)); - - Mat srcPoint2f = NDArrayUtils.toMat(srcPoints); - Mat dstPoint2f = NDArrayUtils.toMat(dstPoints); - - Mat cvMat = OpenCVUtils.perspectiveTransform(mat, srcPoint2f, dstPoint2f); - - Image subImg = OpenCVImageFactory.getInstance().fromImage(cvMat); -// ImageUtils.saveImage(subImg, i + ".png", "build/output"); - - subImg = subImg.getSubImage(0, 0, img_crop_width, img_crop_height); - if (subImg.getHeight() * 1.0 / subImg.getWidth() > 1.5) { - subImg = rotateImg(manager, subImg); - } - - String name = recognizer.predict(subImg); - RotatedBox rotatedBox = new RotatedBox(box, name); - result.add(rotatedBox); - - cvMat.release(); - srcPoint2f.release(); - dstPoint2f.release(); - - } - - return result; - } - - private BufferedImage get_rotate_crop_image(Image image, NDArray box) { - return null; - } - - /** - * 欧式距离计算 - * - * @param point1 - * @param point2 - * @return - */ - private float distance(float[] point1, float[] point2) { - float disX = point1[0] - point2[0]; - float disY = point1[1] - point2[1]; - float dis = (float) Math.sqrt(disX * disX + disY * disY); - return dis; - } - - /** - * 图片旋转 - * - * @param manager - * @param image - * @return - */ - private Image rotateImg(NDManager manager, Image image) { - NDArray rotated = NDImageUtils.rotate90(image.toNDArray(manager), 1); - return ImageFactory.getInstance().fromNDArray(rotated); - } -} \ No newline at end of file diff --git a/src/main/java/com/litongjava/djl/paddle/ocr/v4/recognition/PpWordRecTranslator.java b/src/main/java/com/litongjava/djl/paddle/ocr/v4/recognition/PpWordRecTranslator.java deleted file mode 100644 index 473559c..0000000 --- a/src/main/java/com/litongjava/djl/paddle/ocr/v4/recognition/PpWordRecTranslator.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.litongjava.djl.paddle.ocr.v4.recognition; - -import ai.djl.Model; -import ai.djl.modality.cv.Image; -import ai.djl.modality.cv.util.NDImageUtils; -import ai.djl.ndarray.NDArray; -import ai.djl.ndarray.NDList; -import ai.djl.ndarray.index.NDIndex; -import ai.djl.ndarray.types.DataType; -import ai.djl.ndarray.types.Shape; -import ai.djl.translate.Batchifier; -import ai.djl.translate.Translator; -import ai.djl.translate.TranslatorContext; -import ai.djl.util.Utils; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -/** - * 文字识别前后处理 - */ -public class PpWordRecTranslator implements Translator { - private List table; - private final boolean use_space_char; - - public PpWordRecTranslator(Map arguments) { - use_space_char = - arguments.containsKey("use_space_char") - ? Boolean.parseBoolean(arguments.get("use_space_char").toString()) - : true; - } - - @Override - public void prepare(TranslatorContext ctx) throws IOException { - Model model = ctx.getModel(); - try (InputStream is = model.getArtifact("dict.txt").openStream()) { - table = Utils.readLines(is, true); - table.add(0, "blank"); - if (use_space_char) { - table.add(" "); - table.add(" "); - } else { - table.add(""); - table.add(""); - } - - } - } - - @Override - public String processOutput(TranslatorContext ctx, NDList list) throws IOException { - StringBuilder sb = new StringBuilder(); - NDArray tokens = list.singletonOrThrow(); - - long[] indices = tokens.get(0).argMax(1).toLongArray(); - boolean[] selection = new boolean[indices.length]; - Arrays.fill(selection, true); - for (int i = 1; i < indices.length; i++) { - if (indices[i] == indices[i - 1]) { - selection[i] = false; - } - } - - // 字符置信度 -// float[] probs = new float[indices.length]; -// for (int row = 0; row < indices.length; row++) { -// NDArray value = tokens.get(0).get(new NDIndex(""+ row +":" + (row + 1) +"," + indices[row] +":" + ( indices[row] + 1))); -// probs[row] = value.toFloatArray()[0]; -// } - - int lastIdx = 0; - for (int i = 0; i < indices.length; i++) { - if (selection[i] == true && indices[i] > 0 && !(i > 0 && indices[i] == lastIdx)) { - sb.append(table.get((int) indices[i])); - } - } - return sb.toString(); - } - - @Override - public NDList processInput(TranslatorContext ctx, Image input) { - NDArray img = input.toNDArray(ctx.getNDManager(), Image.Flag.COLOR); - int imgC = 3; - int imgH = 48; - int imgW = 320; - - float max_wh_ratio = (float) imgW / (float) imgH; - - int h = input.getHeight(); - int w = input.getWidth(); - float wh_ratio = (float) w / (float) h; - - max_wh_ratio = Math.max(max_wh_ratio, wh_ratio); - imgW = (int) (imgH * max_wh_ratio); - - int resized_w; - if (Math.ceil(imgH * wh_ratio) > imgW) { - resized_w = imgW; - } else { - resized_w = (int) (Math.ceil(imgH * wh_ratio)); - } - NDArray resized_image = NDImageUtils.resize(img, resized_w, imgH); - resized_image = resized_image.transpose(2, 0, 1).toType(DataType.FLOAT32, false); - resized_image.divi(255f).subi(0.5f).divi(0.5f); - NDArray padding_im = ctx.getNDManager().zeros(new Shape(imgC, imgH, imgW), DataType.FLOAT32); - padding_im.set(new NDIndex(":,:,0:" + resized_w), resized_image); - - padding_im = padding_im.flip(0); - padding_im = padding_im.expandDims(0); - return new NDList(padding_im); - } - - @Override - public Batchifier getBatchifier() { - return null; - } - -} \ No newline at end of file diff --git a/src/main/java/com/luooqi/ocr/controller/ProcessController.java b/src/main/java/com/luooqi/ocr/controller/ProcessController.java index f09f020..1080320 100644 --- a/src/main/java/com/luooqi/ocr/controller/ProcessController.java +++ b/src/main/java/com/luooqi/ocr/controller/ProcessController.java @@ -1,6 +1,7 @@ package com.luooqi.ocr.controller; import com.luooqi.ocr.utils.CommUtils; + import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; diff --git a/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java b/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java index 8f443fc..ff77b49 100644 --- a/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java +++ b/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java @@ -1,114 +1,34 @@ package com.luooqi.ocr.local; -import ai.djl.MalformedModelException; -import ai.djl.inference.Predictor; -import ai.djl.modality.cv.Image; -import ai.djl.ndarray.NDList; -import ai.djl.ndarray.NDManager; -import ai.djl.opencv.OpenCVImageFactory; -import ai.djl.repository.zoo.ModelNotFoundException; -import ai.djl.repository.zoo.ModelZoo; -import ai.djl.repository.zoo.ZooModel; -import com.litongjava.djl.paddle.ocr.v4.common.RotatedBox; -import com.litongjava.djl.paddle.ocr.v4.common.RotatedBoxCompX; -import com.litongjava.djl.paddle.ocr.v4.detection.OcrV4Detection; -import com.litongjava.djl.paddle.ocr.v4.recognition.OcrV4Recognition; - import java.io.File; -import java.io.IOException; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; + +import com.benjaminwan.ocrlibrary.OcrResult; + +import io.github.mymonstercat.Model; +import io.github.mymonstercat.ocr.InferenceEngine; /** * Created by litonglinux@qq.com on 11/23/2023_2:09 AM */ public enum PaddlePaddleOCRV4 { INSTANCE; - private static OcrV4Detection detection; - private static OcrV4Recognition recognition; - private static Predictor detector; - private static Predictor recognizer; - private static NDManager manager; - - PaddlePaddleOCRV4() { - } - - - //noting not to do.but init - public static void init() throws ModelNotFoundException, MalformedModelException, IOException { - detection = new OcrV4Detection(); - recognition = new OcrV4Recognition(); - ZooModel detectionModel = null; - ZooModel recognitionModel = null; - detectionModel = ModelZoo.loadModel(detection.chDetCriteria()); - recognitionModel = ModelZoo.loadModel(recognition.chRecCriteria()); + static InferenceEngine engine = null; - detector = detectionModel.newPredictor(); - - recognizer = recognitionModel.newPredictor(); - manager = NDManager.newBaseManager(); + PaddlePaddleOCRV4() { } - public String ocr(File imageFile) throws Exception { - Path path = imageFile.toPath(); - Image image = OpenCVImageFactory.getInstance().fromFile(path); - return ocr(image); + // noting not to do.but init + public static void init() { + engine = InferenceEngine.getInstance(Model.ONNX_PPOCR_V4_SERVER); } - public String ocr(Image image) throws Exception { - List detections = recognition.predict(manager, image, detector, recognizer); - if (detections == null) { - return null; - } - - List initList = new ArrayList<>(); - for (RotatedBox result : detections) { - // put low Y value at the head of the queue. - initList.add(result); - } - Collections.sort(initList); - - List> lines = new ArrayList<>(); - List line = new ArrayList<>(); - RotatedBoxCompX firstBox = new RotatedBoxCompX(initList.get(0).getBox(), initList.get(0).getText()); - line.add(firstBox); - lines.add((ArrayList) line); - for (int i = 1; i < initList.size(); i++) { - RotatedBoxCompX tmpBox = new RotatedBoxCompX(initList.get(i).getBox(), initList.get(i).getText()); - float y1 = firstBox.getBox().toFloatArray()[1]; - float y2 = tmpBox.getBox().toFloatArray()[1]; - float dis = Math.abs(y2 - y1); - if (dis < 20) { // 认为是同 1 行 - Considered to be in the same line - line.add(tmpBox); - } else { // 换行 - Line break - firstBox = tmpBox; - Collections.sort(line); - line = new ArrayList<>(); - line.add(firstBox); - lines.add((ArrayList) line); - } - } - - - StringBuffer fullText = new StringBuffer(); - for (int i = 0; i < lines.size(); i++) { - for (int j = 0; j < lines.get(i).size(); j++) { - String text = lines.get(i).get(j).getText(); - if (text.trim().equals("")) - continue; - fullText.append(text + " "); - } - fullText.append('\n'); - } - return fullText.toString(); + public OcrResult ocr(File imageFile) { + return engine.runOcr(imageFile.getAbsolutePath()); } public void close() { - detector.close(); - recognizer.close(); + } } diff --git a/src/main/java/com/luooqi/ocr/snap/ScreenCapture.java b/src/main/java/com/luooqi/ocr/snap/ScreenCapture.java index 0afbe19..b2febe9 100644 --- a/src/main/java/com/luooqi/ocr/snap/ScreenCapture.java +++ b/src/main/java/com/luooqi/ocr/snap/ScreenCapture.java @@ -1,11 +1,17 @@ package com.luooqi.ocr.snap; -import cn.hutool.core.swing.ScreenUtil; -import cn.hutool.log.StaticLog; +import java.awt.AWTException; +import java.awt.Rectangle; +import java.awt.Robot; +import java.awt.image.BufferedImage; + import com.luooqi.ocr.model.CaptureInfo; import com.luooqi.ocr.utils.CommUtils; import com.luooqi.ocr.windows.MainForm; + +import cn.hutool.core.swing.ScreenUtil; +import cn.hutool.log.StaticLog; import javafx.animation.AnimationTimer; import javafx.application.Platform; import javafx.embed.swing.SwingFXUtils; @@ -17,15 +23,18 @@ import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.scene.input.MouseButton; -import javafx.scene.layout.*; +import javafx.scene.layout.Background; +import javafx.scene.layout.BackgroundImage; +import javafx.scene.layout.BackgroundPosition; +import javafx.scene.layout.BackgroundRepeat; +import javafx.scene.layout.BackgroundSize; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.Pane; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.FontWeight; import javafx.stage.Stage; -import java.awt.*; -import java.awt.image.BufferedImage; - /** * This is the Window which is used from the user to draw the rectangle representing an area on the screen to be captured. * @@ -353,23 +362,23 @@ private void repaintCanvas() { // smart calculation of where the mouse has been dragged data.rectWidth = (data.mouseXNow > data.mouseXPressed) ? data.mouseXNow - data.mouseXPressed // RIGHT - : data.mouseXPressed - data.mouseXNow // LEFT + : data.mouseXPressed - data.mouseXNow // LEFT ; data.rectHeight = (data.mouseYNow > data.mouseYPressed) ? data.mouseYNow - data.mouseYPressed // DOWN - : data.mouseYPressed - data.mouseYNow // UP + : data.mouseYPressed - data.mouseYNow // UP ; data.rectUpperLeftX = // -------->UPPER_LEFT_X - (data.mouseXNow > data.mouseXPressed) ? data.mouseXPressed // RIGHT - : data.mouseXNow// LEFT + (data.mouseXNow > data.mouseXPressed) ? data.mouseXPressed // RIGHT + : data.mouseXNow// LEFT ; data.rectUpperLeftY = // -------->UPPER_LEFT_Y - (data.mouseYNow > data.mouseYPressed) ? data.mouseYPressed // DOWN - : data.mouseYNow // UP + (data.mouseYNow > data.mouseYPressed) ? data.mouseYPressed // DOWN + : data.mouseYNow // UP ; gc.strokeRect(data.rectUpperLeftX - 1.00, data.rectUpperLeftY - 1.00, data.rectWidth + 2.00, - data.rectHeight + 2.00); + data.rectHeight + 2.00); gc.clearRect(data.rectUpperLeftX, data.rectUpperLeftY, data.rectWidth, data.rectHeight); // draw the text @@ -378,10 +387,10 @@ private void repaintCanvas() { gc.setLineWidth(1); gc.setFill(Color.FIREBRICK); gc.fillRect(middle - 77, data.rectUpperLeftY < 50 ? data.rectUpperLeftY + 2 : data.rectUpperLeftY - 18.00, 100, - 18); + 18); gc.setFill(Color.WHITE); gc.fillText(data.rectWidth + " * " + data.rectHeight, middle - 77 + 9, - data.rectUpperLeftY < 50 ? data.rectUpperLeftY + 17.00 : data.rectUpperLeftY - 4.00); + data.rectUpperLeftY < 50 ? data.rectUpperLeftY + 17.00 : data.rectUpperLeftY - 4.00); } } @@ -418,8 +427,8 @@ public void prepareForCapture() { mainCanvas.setCursor(Cursor.CROSSHAIR); initGraphContent(); rootPane.setBackground(new Background(new BackgroundImage(fxImage, BackgroundRepeat.NO_REPEAT, - BackgroundRepeat.NO_REPEAT, BackgroundPosition.CENTER, - new BackgroundSize(CaptureInfo.ScreenWidth, CaptureInfo.ScreenHeight, false, false, true, true)))); + BackgroundRepeat.NO_REPEAT, BackgroundPosition.CENTER, + new BackgroundSize(CaptureInfo.ScreenWidth, CaptureInfo.ScreenHeight, false, false, true, true)))); repaintCanvas(); stage.setScene(scene); stage.setFullScreenExitHint(""); @@ -439,8 +448,8 @@ private void prepareImage() { try { mainCanvas.setDisable(true); image = new Robot().createScreenCapture(new Rectangle(data.rectUpperLeftX + CaptureInfo.ScreenMinX, - data.rectUpperLeftY + (int) CommUtils.getCrtScreen(stage).getVisualBounds().getMinY(), data.rectWidth, - data.rectHeight)); + data.rectUpperLeftY + (int) CommUtils.getCrtScreen(stage).getVisualBounds().getMinY(), data.rectWidth, + data.rectHeight)); } catch (AWTException ex) { StaticLog.error(ex); return; diff --git a/src/main/java/com/luooqi/ocr/utils/OcrUtils.java b/src/main/java/com/luooqi/ocr/utils/OcrUtils.java index 85264de..c0152fe 100644 --- a/src/main/java/com/luooqi/ocr/utils/OcrUtils.java +++ b/src/main/java/com/luooqi/ocr/utils/OcrUtils.java @@ -1,7 +1,24 @@ package com.luooqi.ocr.utils; -import ai.djl.modality.cv.Image; -import ai.djl.opencv.OpenCVImageFactory; +import java.awt.Point; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileOutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.imageio.ImageIO; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.rendering.PDFRenderer; + +import com.benjaminwan.ocrlibrary.OcrResult; +import com.luooqi.ocr.local.PaddlePaddleOCRV4; +import com.luooqi.ocr.model.TextBlock; + import cn.hutool.core.codec.Base64; import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.UUID; @@ -17,21 +34,6 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.hutool.log.StaticLog; -import com.benjaminwan.ocrlibrary.OcrResult; -import com.luooqi.ocr.local.PaddlePaddleOCRV4; -import com.luooqi.ocr.model.TextBlock; -import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.rendering.PDFRenderer; - -import javax.imageio.ImageIO; -import java.awt.*; -import java.awt.image.BufferedImage; -import java.awt.image.DataBufferInt; -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.util.List; -import java.util.*; /** * tools-ocr @@ -39,7 +41,6 @@ */ public class OcrUtils { - public static String recImgLocal(byte[] imgData) { String path = "tmp_" + Math.abs(Arrays.hashCode(imgData)) + ".png"; File file = FileUtil.writeBytes(imgData, path); @@ -54,7 +55,7 @@ public static String recImgLocal(BufferedImage image) { public static String recImgLocal(File file) { if (file.exists()) { try { - return PaddlePaddleOCRV4.INSTANCE.ocr(file); + return extractLocalResult(PaddlePaddleOCRV4.INSTANCE.ocr(file)); } catch (Exception e) { e.printStackTrace(); return e.getMessage(); @@ -63,7 +64,6 @@ public static String recImgLocal(File file) { return "文件不存在"; } - public static String recPdfLocal(File pdfFile) { if (pdfFile.exists()) { try (PDDocument document = PDDocument.load(pdfFile)) { @@ -90,19 +90,18 @@ public static String recPdfLocal(File pdfFile) { return null; } - public static String ocrImg(byte[] imgData) { int i = Math.abs(UUID.randomUUID().hashCode()) % 4; StaticLog.info("OCR Engine: " + i); switch (i) { - case 0: - return bdGeneralOcr(imgData); - case 1: - return bdAccurateOcr(imgData); - case 2: - return sogouMobileOcr(imgData); - default: - return sogouWebOcr(imgData); + case 0: + return bdGeneralOcr(imgData); + case 1: + return bdAccurateOcr(imgData); + case 2: + return sogouMobileOcr(imgData); + default: + return sogouWebOcr(imgData); } } @@ -115,7 +114,8 @@ private static String bdAccurateOcr(byte[] imgData) { } private static String bdBaseOcr(byte[] imgData, String type) { - String[] urlArr = new String[]{"http://ai.baidu.com/tech/ocr/general", "http://ai.baidu.com/index/seccode?action=show"}; + String[] urlArr = new String[] { "http://ai.baidu.com/tech/ocr/general", + "http://ai.baidu.com/index/seccode?action=show" }; StringBuilder cookie = new StringBuilder(); for (String url : urlArr) { HttpResponse cookieResp = WebUtils.get(url); @@ -129,7 +129,8 @@ private static String bdBaseOcr(byte[] imgData, String type) { HashMap header = new HashMap<>(); header.put("Referer", "http://ai.baidu.com/tech/ocr/general"); header.put("Cookie", cookie.toString()); - String data = "type=" + URLUtil.encodeQuery(type) + "&detect_direction=false&image_url&image=" + URLUtil.encodeQuery("data:image/jpeg;base64," + Base64.encode(imgData)) + "&language_type=CHN_ENG"; + String data = "type=" + URLUtil.encodeQuery(type) + "&detect_direction=false&image_url&image=" + + URLUtil.encodeQuery("data:image/jpeg;base64," + Base64.encode(imgData)) + "&language_type=CHN_ENG"; HttpResponse response = WebUtils.postRaw("http://ai.baidu.com/aidemo", data, 0, header); return extractBdResult(WebUtils.getSafeHtml(response)); } @@ -137,9 +138,11 @@ private static String bdBaseOcr(byte[] imgData, String type) { public static String sogouMobileOcr(byte[] imgData) { String boundary = "------WebKitFormBoundary8orYTmcj8BHvQpVU"; String url = "http://ocr.shouji.sogou.com/v2/ocr/json"; - String header = boundary + "\r\nContent-Disposition: form-data; name=\"pic\"; filename=\"pic.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n"; + String header = boundary + + "\r\nContent-Disposition: form-data; name=\"pic\"; filename=\"pic.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n"; String footer = "\r\n" + boundary + "--\r\n"; - byte[] postData = CommUtils.mergeByte(header.getBytes(CharsetUtil.CHARSET_ISO_8859_1), imgData, footer.getBytes(CharsetUtil.CHARSET_ISO_8859_1)); + byte[] postData = CommUtils.mergeByte(header.getBytes(CharsetUtil.CHARSET_ISO_8859_1), imgData, + footer.getBytes(CharsetUtil.CHARSET_ISO_8859_1)); return extractSogouResult(CommUtils.postMultiData(url, postData, boundary.substring(2))); } @@ -148,7 +151,8 @@ public static String sogouWebOcr(byte[] imgData) { String referer = "https://deepi.sogou.com/?from=picsearch&tdsourcetag=s_pctim_aiomsg"; String imageData = Base64.encode(imgData); long t = System.currentTimeMillis(); - String sign = SecureUtil.md5("sogou_ocr_just_for_deepibasicOpenOcr" + t + imageData.substring(0, Math.min(1024, imageData.length())) + "4b66a37108dab018ace616c4ae07e644"); + String sign = SecureUtil.md5("sogou_ocr_just_for_deepibasicOpenOcr" + t + + imageData.substring(0, Math.min(1024, imageData.length())) + "4b66a37108dab018ace616c4ae07e644"); Map data = new HashMap<>(); data.put("image", imageData); data.put("lang", "zh-Chs"); @@ -178,7 +182,7 @@ private static String extractSogouResult(String html) { JSONObject jObj = jsonArray.getJSONObject(i); TextBlock textBlock = new TextBlock(); textBlock.setText(jObj.getStr("content").trim()); - //noinspection SuspiciousToArrayCall + // noinspection SuspiciousToArrayCall String[] frames = jObj.getJSONArray("frame").toArray(new String[0]); textBlock.setTopLeft(CommUtils.frameToPoint(frames[0])); textBlock.setTopRight(CommUtils.frameToPoint(frames[1])); @@ -205,7 +209,7 @@ private static String extractBdResult(String html) { JSONObject jObj = jsonArray.getJSONObject(i); TextBlock textBlock = new TextBlock(); textBlock.setText(jObj.getStr("words").trim()); - //noinspection SuspiciousToArrayCall + // noinspection SuspiciousToArrayCall JSONObject location = jObj.getJSONObject("location"); int top = location.getInt("top"); int left = location.getInt("left"); @@ -220,7 +224,6 @@ private static String extractBdResult(String html) { return CommUtils.combineTextBlocks(textBlocks, isEng); } - private static String extractLocalResult(OcrResult ocrResult) { if (ocrResult == null) { return ""; @@ -240,5 +243,4 @@ private static String extractLocalResult(OcrResult ocrResult) { return CommUtils.combineTextBlocks(textBlocks, isEng); } - } diff --git a/src/main/java/com/luooqi/ocr/windows/MainForm.java b/src/main/java/com/luooqi/ocr/windows/MainForm.java index 7f883eb..8053cd5 100644 --- a/src/main/java/com/luooqi/ocr/windows/MainForm.java +++ b/src/main/java/com/luooqi/ocr/windows/MainForm.java @@ -1,11 +1,10 @@ package com.luooqi.ocr.windows; -import ai.djl.MalformedModelException; -import ai.djl.repository.zoo.ModelNotFoundException; -import cn.hutool.core.io.FileTypeUtil; -import cn.hutool.core.thread.ThreadUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.log.StaticLog; +import java.awt.image.BufferedImage; +import java.io.File; +import java.util.HashMap; +import java.util.Map; + import com.luooqi.ocr.config.InitConfig; import com.luooqi.ocr.controller.ProcessController; import com.luooqi.ocr.local.PaddlePaddleOCRV4; @@ -14,6 +13,11 @@ import com.luooqi.ocr.snap.ScreenCapture; import com.luooqi.ocr.utils.CommUtils; import com.luooqi.ocr.utils.OcrUtils; + +import cn.hutool.core.io.FileTypeUtil; +import cn.hutool.core.thread.ThreadUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.log.StaticLog; import javafx.application.Platform; import javafx.beans.property.SimpleStringProperty; import javafx.geometry.Insets; @@ -23,7 +27,13 @@ import javafx.scene.control.ToolBar; import javafx.scene.input.Clipboard; import javafx.scene.input.DataFormat; -import javafx.scene.layout.*; +import javafx.scene.layout.Border; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.BorderStroke; +import javafx.scene.layout.BorderStrokeStyle; +import javafx.scene.layout.BorderWidths; +import javafx.scene.layout.CornerRadii; +import javafx.scene.layout.HBox; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.FontPosture; @@ -31,12 +41,6 @@ import javafx.stage.Stage; import lombok.extern.slf4j.Slf4j; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - /** * Created by litonglinux@qq.com on 12/9/2023_4:40 PM */ @@ -54,8 +58,8 @@ public int hashCode() { private static ScreenCapture screenCapture; private static ProcessController processController; private static TextArea textArea; - //private static boolean isSegment = true; - //private static String ocrText = ""; + // private static boolean isSegment = true; + // private static String ocrText = ""; public void init(Stage primaryStage) { @@ -84,21 +88,15 @@ public void init(Stage primaryStage) { root.setTop(topBar); root.setCenter(textArea); root.setBottom(footerBar); - root.getStylesheets().addAll( - getClass().getResource("/css/main.css").toExternalForm() - ); + root.getStylesheets().addAll(getClass().getResource("/css/main.css").toExternalForm()); CommUtils.initStage(primaryStage); mainScene = new Scene(root, 670, 470); stage.setScene(mainScene); - //启动引擎,加载模型,如果模型加载错误下屏幕显示错误 + // 启动引擎,加载模型,如果模型加载错误下屏幕显示错误 try { PaddlePaddleOCRV4.init(); - } catch (ModelNotFoundException e) { - textArea.setText("加载模型出现错误" + e.getMessage()); - } catch (MalformedModelException e) { - textArea.setText("加载模型出现错误" + e.getMessage()); - } catch (IOException e) { - textArea.setText("加载模型出现错误" + e.getMessage()); + } catch (Exception e) { + e.printStackTrace(); } } @@ -106,7 +104,8 @@ private TextArea getCenter() { TextArea textArea = new TextArea(); textArea.setId("ocrTextArea"); textArea.setWrapText(true); - textArea.setBorder(new Border(new BorderStroke(Color.DARKGRAY, BorderStrokeStyle.SOLID, CornerRadii.EMPTY, BorderWidths.DEFAULT))); + textArea.setBorder( + new Border(new BorderStroke(Color.DARKGRAY, BorderStrokeStyle.SOLID, CornerRadii.EMPTY, BorderWidths.DEFAULT))); textArea.setFont(Font.font("Arial", FontPosture.REGULAR, 14)); return textArea; } @@ -116,21 +115,21 @@ private ToolBar getFooterBar() { footerBar.setId("statsToolbar"); Label statsLabel = new Label(); SimpleStringProperty statsProperty = new SimpleStringProperty("总字数:0"); - textArea.textProperty().addListener((observable, oldValue, newValue) -> statsProperty.set("总字数:" + newValue.replaceAll(CommUtils.SPECIAL_CHARS, "").length())); + textArea.textProperty().addListener((observable, oldValue, newValue) -> statsProperty + .set("总字数:" + newValue.replaceAll(CommUtils.SPECIAL_CHARS, "").length())); statsLabel.textProperty().bind(statsProperty); footerBar.getItems().add(statsLabel); return footerBar; } private HBox getTopBar() { - HBox topBar = new HBox( - CommUtils.createButton("snapBtn", MainForm::screenShotOcr, "截图"), - CommUtils.createButton("openImageBtn", this::openImageOcr, "打开"), - CommUtils.createButton("copyBtn", this::copyText, "复制"), - CommUtils.createButton("pasteBtn", this::pasteText, "粘贴"), - CommUtils.createButton("clearBtn", this::clearText, "清空"), - CommUtils.createButton("wrapBtn", this::wrapText, "换行") - //CommUtils.SEPARATOR, resetBtn, segmentBtn + HBox topBar = new HBox(CommUtils.createButton("snapBtn", MainForm::screenShotOcr, "截图"), + CommUtils.createButton("openImageBtn", this::openImageOcr, "打开"), + CommUtils.createButton("copyBtn", this::copyText, "复制"), + CommUtils.createButton("pasteBtn", this::pasteText, "粘贴"), + CommUtils.createButton("clearBtn", this::clearText, "清空"), + CommUtils.createButton("wrapBtn", this::wrapText, "换行") + // CommUtils.SEPARATOR, resetBtn, segmentBtn ); topBar.setId("topBar"); topBar.setMinHeight(40); @@ -157,7 +156,6 @@ private void wrapText() { textArea.setWrapText(!textArea.isWrapText()); } - private void clearText() { textArea.setText(""); } @@ -167,9 +165,8 @@ private void pasteText() { if (StrUtil.isBlank(text)) { return; } - textArea.setText(textArea.getText() - + (StrUtil.isBlank(textArea.getText()) ? "" : "\n") - + Clipboard.getSystemClipboard().getString()); + textArea.setText(textArea.getText() + (StrUtil.isBlank(textArea.getText()) ? "" : "\n") + + Clipboard.getSystemClipboard().getString()); } private void copyText() { @@ -198,24 +195,22 @@ public static void screenShotOcr() { private void openImageOcr() { FileChooser fileChooser = new FileChooser(); fileChooser.setTitle("Please Select Image File"); - String[] extensions = {"*.png", "*.jpg", "*.pdf", "*.PDF"}; + String[] extensions = { "*.png", "*.jpg", "*.pdf", "*.PDF" }; fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("Image Files", extensions)); File selectedFile = fileChooser.showOpenDialog(stage); if (selectedFile == null || !selectedFile.isFile()) { return; } - stageInfo = new StageInfo(stage.getX(), stage.getY(), - stage.getWidth(), stage.getHeight(), stage.isFullScreen()); + stageInfo = new StageInfo(stage.getX(), stage.getY(), stage.getWidth(), stage.getHeight(), stage.isFullScreen()); try { - //BufferedImage image = ImageIO.read(selectedFile); + // BufferedImage image = ImageIO.read(selectedFile); doOcr(selectedFile); } catch (Exception e) { StaticLog.error(e); } } - public static void cancelSnap() { Platform.runLater(screenCapture::cancelSnap); } diff --git a/src/main/resources/images/01.png b/src/main/resources/images/01.png new file mode 100644 index 0000000000000000000000000000000000000000..51df578ca9857d6a4035b9d50c713a8fcf05467b GIT binary patch literal 294035 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

DA?TG)J9*}?cSp5@k^&0~eZ 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 z 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 dh2W?r`EX^v%e^*WJGlepz#Wu_L(G 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⪼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 literal 0 HcmV?d00001 diff --git a/src/test/java/com/benjaminwan/ocrlibrary/OcrEngineTest.java b/src/test/java/com/benjaminwan/ocrlibrary/OcrEngineTest.java deleted file mode 100644 index 2a3a681..0000000 --- a/src/test/java/com/benjaminwan/ocrlibrary/OcrEngineTest.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.benjaminwan.ocrlibrary; - -import cn.hutool.log.StaticLog; -import com.luooqi.ocr.utils.LibraryUtils; -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * Created by litonglinux@qq.com on 10/11/2023_3:01 AM - */ -public class OcrEngineTest { - - @Test - public void test1() { - // https://github.com/RapidAI/RapidOcrNcnnLibTest/tree/main/resource/models - - String libPath = "D:\\lib\\ocr-lib\\win64\\bin"; - LibraryUtils.addLibary(libPath); - - OcrEngine ocrEngine = new OcrEngine(); - StaticLog.info("version=" + ocrEngine.getVersion()); - ocrEngine.setNumThread(8); - //------- init Logger ------- - ocrEngine.initLogger(true, false, false); - //ocrEngine.enableResultText(""); - ocrEngine.setGpuIndex(-1); - String modelsDir = "D:\\model\\ppocr-v3-NCNN-models"; - String detName = "ch_PP-OCRv3_det_infer"; - String clsName = "ch_ppocr_mobile_v2.0_cls_infer"; - String recName = "ch_PP-OCRv3_rec_infer"; - String keysName = "ppocr_keys_v1.txt"; - - boolean initModelsRet = ocrEngine.initModels(modelsDir, detName, clsName, recName, keysName); - if (!initModelsRet) { - StaticLog.error("Error in models initialization, please check the models/keys path!"); - return; - } - StaticLog.info("padding(%d) boxScoreThresh(%f) boxThresh(%f) unClipRatio(%f) doAngle(%b) mostAngle(%b)", ocrEngine.getPadding(), ocrEngine.getBoxScoreThresh(), ocrEngine.getBoxThresh(), ocrEngine.getUnClipRatio(), ocrEngine.getDoAngle(), ocrEngine.getMostAngle()); - - String imagePath = "D:\\images\\Snipaste_2023-10-11_02-08-03.png"; - OcrResult ocrResult = ocrEngine.detect(imagePath); - System.out.println(ocrResult.getStrRes()); - - } - -} \ No newline at end of file diff --git a/src/test/java/com/litongjava/RapidOcrTest.java b/src/test/java/com/litongjava/RapidOcrTest.java new file mode 100644 index 0000000..27090aa --- /dev/null +++ b/src/test/java/com/litongjava/RapidOcrTest.java @@ -0,0 +1,14 @@ +package com.litongjava; + +import com.benjaminwan.ocrlibrary.OcrResult; + +import io.github.mymonstercat.Model; +import io.github.mymonstercat.ocr.InferenceEngine; + +public class RapidOcrTest { + public static void main(String[] args) { + InferenceEngine engine = InferenceEngine.getInstance(Model.ONNX_PPOCR_V4_SERVER); + OcrResult ocrResult = engine.runOcr("images/01.png"); + System.out.println(ocrResult.getStrRes().trim()); + } +} diff --git a/src/test/java/com/luooqi/ocr/utils/OcrUtilsTest.java b/src/test/java/com/luooqi/ocr/utils/OcrUtilsTest.java index 478b01a..d6ea182 100644 --- a/src/test/java/com/luooqi/ocr/utils/OcrUtilsTest.java +++ b/src/test/java/com/luooqi/ocr/utils/OcrUtilsTest.java @@ -1,20 +1,12 @@ package com.luooqi.ocr.utils; -import cn.hutool.core.swing.ScreenUtil; -import cn.hutool.json.JSONArray; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; -import com.luooqi.ocr.model.TextBlock; -import javafx.scene.SnapshotParameters; -import org.junit.Test; - -import java.awt.*; +import java.awt.GraphicsConfiguration; +import java.awt.GraphicsEnvironment; +import java.awt.Point; import java.awt.geom.AffineTransform; import java.io.File; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; + +import org.junit.Test; public class OcrUtilsTest { @@ -32,7 +24,8 @@ private Point frameToPoint(String text) { @Test public void sogouWebOcr() { - GraphicsConfiguration asdf = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration(); + GraphicsConfiguration asdf = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice() + .getDefaultConfiguration(); AffineTransform asfd2 = asdf.getDefaultTransform(); double scaleX = asfd2.getScaleX(); double scaleY = asfd2.getScaleY(); @@ -46,7 +39,7 @@ public void recPdfLocal() { } @Test - public void recImageLocal(){ + public void recImageLocal() { OcrUtils.recImgLocal(new File("temp_1010298_4.png")); } } From 38de48be7d2f1609b278484d151202d3ef122c05 Mon Sep 17 00:00:00 2001 From: litongjava Date: Sun, 28 Apr 2024 06:20:04 -1000 Subject: [PATCH 8/9] set default thread is 2 --- src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java | 5 ++++- src/test/java/com/litongjava/RapidOcrTest.java | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java b/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java index ff77b49..758baa0 100644 --- a/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java +++ b/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java @@ -6,6 +6,7 @@ import io.github.mymonstercat.Model; import io.github.mymonstercat.ocr.InferenceEngine; +import io.github.mymonstercat.ocr.config.HardwareConfig; /** * Created by litonglinux@qq.com on 11/23/2023_2:09 AM @@ -21,7 +22,9 @@ public enum PaddlePaddleOCRV4 { // noting not to do.but init public static void init() { - engine = InferenceEngine.getInstance(Model.ONNX_PPOCR_V4_SERVER); + HardwareConfig onnxConfig = HardwareConfig.getOnnxConfig(); + onnxConfig.setNumThread(2); + engine = InferenceEngine.getInstance(Model.ONNX_PPOCR_V4_SERVER, onnxConfig); } public OcrResult ocr(File imageFile) { diff --git a/src/test/java/com/litongjava/RapidOcrTest.java b/src/test/java/com/litongjava/RapidOcrTest.java index 27090aa..4349ac8 100644 --- a/src/test/java/com/litongjava/RapidOcrTest.java +++ b/src/test/java/com/litongjava/RapidOcrTest.java @@ -4,11 +4,14 @@ import io.github.mymonstercat.Model; import io.github.mymonstercat.ocr.InferenceEngine; +import io.github.mymonstercat.ocr.config.HardwareConfig; public class RapidOcrTest { public static void main(String[] args) { - InferenceEngine engine = InferenceEngine.getInstance(Model.ONNX_PPOCR_V4_SERVER); - OcrResult ocrResult = engine.runOcr("images/01.png"); + HardwareConfig onnxConfig = HardwareConfig.getOnnxConfig(); + onnxConfig.setNumThread(2); + InferenceEngine engine = InferenceEngine.getInstance(Model.ONNX_PPOCR_V4_SERVER, onnxConfig); + OcrResult ocrResult = engine.runOcr("C:\\Users\\Administrator\\Desktop\\01.jpg"); System.out.println(ocrResult.getStrRes().trim()); } } From e40f8d7f45df3be3fba4b85231562220db2431be Mon Sep 17 00:00:00 2001 From: litongjava Date: Sun, 28 Apr 2024 07:06:12 -1000 Subject: [PATCH 9/9] change thread --- src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java | 1 - src/test/java/com/litongjava/RapidOcrTest.java | 7 ++++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java b/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java index 758baa0..878ddc5 100644 --- a/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java +++ b/src/main/java/com/luooqi/ocr/local/PaddlePaddleOCRV4.java @@ -32,6 +32,5 @@ public OcrResult ocr(File imageFile) { } public void close() { - } } diff --git a/src/test/java/com/litongjava/RapidOcrTest.java b/src/test/java/com/litongjava/RapidOcrTest.java index 4349ac8..0bfba20 100644 --- a/src/test/java/com/litongjava/RapidOcrTest.java +++ b/src/test/java/com/litongjava/RapidOcrTest.java @@ -8,10 +8,15 @@ public class RapidOcrTest { public static void main(String[] args) { + String imagePath = "C:\\Users\\Administrator\\Desktop\\01.jpg"; + + // init HardwareConfig onnxConfig = HardwareConfig.getOnnxConfig(); onnxConfig.setNumThread(2); InferenceEngine engine = InferenceEngine.getInstance(Model.ONNX_PPOCR_V4_SERVER, onnxConfig); - OcrResult ocrResult = engine.runOcr("C:\\Users\\Administrator\\Desktop\\01.jpg"); + + // run + OcrResult ocrResult = engine.runOcr(imagePath); System.out.println(ocrResult.getStrRes().trim()); } }