ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

纯 C OCR 又补齐 Java 生态了!lw.PPOCR.C v0.1.0-preview.7 发布

纯 C OCR 又补齐 Java 生态了!lw.PPOCR.C v0.1.0-preview.7 发布 目录一、普通 Java/JVM 现在可以直接调用 lw.PPOCR.C二、Windows DLL、Linux SO 已经直接放进 Release三、Android 也补上了完整 Java 接入四、单文件 HTML 现在可以直接 CtrlV 粘贴截图五、为什么粘贴后没有自动 OCR六、一个 HTML依然完全离线七、这一版更像是在完善“接入生态”八、v0.1.0-preview.7 下载内容九、项目地址写在最后lw.PPOCR.C的单文件离线 OCR 方案又进一步完善了。在上一版v0.1.0-preview.6中我们重点完成了 Android ARM64 支持让同一套纯 C OCR Runtime 可以运行在 Windows、Linux、WebAssembly 和 Android 上。这几天收到了一些非常有价值的反馈。有人问支持 Java 吗还有用户继续问能不能通过 GitHub Actions 直接生成 Java 调用需要的 DLL 和 SO与此同时HTML 版本也有人提出能不能直接粘贴截图识别这些需求都很实际。于是v0.1.0-preview.7的方向也很明确继续降低 OCR 的集成和使用门槛。这一版主要补齐了桌面 Java/JVM 支持、Android Java 支持同时让单文件 HTML 可以直接通过CtrlV / ⌘V粘贴截图进行 OCR。一、普通 Java/JVM 现在可以直接调用 lw.PPOCR.C之前lw.PPOCR.C已经有比较稳定的纯 C ABI也有 C、C#、WebAssembly、Android 等接入方式。但对于普通桌面 Java 项目来说还缺少最后一层。现在补上了。整体结构非常简单Java / JVM ↓ Java Wrapper ↓ JNI ↓ lw_ppocr_java.dll / .so ↓ lw_ppocr_c.dll / .so ↓ PP-OCRv6 Tiny也就是说这不是 Android Java而是普通的Windows Java Linux Java项目。目前已经通过 CI 实际验证Java 8 Windows x64 Linux x64Java 层不需要接入 OpenCV也不需要 ONNX Runtime、Paddle Runtime 或 Python。图片读取直接使用 Java 标准库ImageIO。例如一个最小调用大致就是这样try (NativeOcr ocr new NativeOcr( models, false, 0)) { String[] lines ocr.recognizeFile(test.jpg); for (String line : lines) { System.out.println(line); } }Java 负责图片读取JNI 只是很薄的一层桥接真正的DET CLS REC仍然由lw.PPOCR.C完成。这也是整个项目一直坚持的思路核心能力尽量集中在一套轻量级纯 C Runtime 中上层语言只做薄封装。二、Windows DLL、Linux SO 已经直接放进 Release如果只是提供 JNI 示例Java 用户仍然需要准备 JDK 准备 CMake 准备编译器 自己编 JNI对很多只想“拿来用”的用户来说还是稍微麻烦了一点。所以这次把 CI 继续往前做了一步。现在 GitHub Actions 会分别在Windows Server 2022 x64 Ubuntu 22.04 x64环境中编译 lw.PPOCR.C ↓ 安装 Development Package ↓ 通过安装包编译 Java JNI ↓ 整理最终 Bundle ↓ 校验 DLL / SO ↓ 校验 SHA256 ↓ 实际运行 Java OCR ↓ 检查中文识别结果 ↓ 生成 Release 产物换句话说我们测试的已经不是“代码能不能编译。”而是“最终准备交给用户下载的那一包文件到底能不能真实完成 OCR。”v0.1.0-preview.7Release 中现在直接提供lw.PPOCR.C-0.1.0-java-jni-windows-x64.zip以及lw.PPOCR.C-0.1.0-java-jni-linux-x64.tar.gzWindows 包中包含 JNI DLL、核心 OCR DLL、Java 示例、PP-OCRv6 Tiny 模型、字典以及相关 License 和校验文件。Linux 包则提供对应的.so。Linux 版本还专门检查了$ORIGINRPATH使 JNI.so可以从自身目录找到核心 Runtime.so。所以对于普通 Java 用户来说这一版已经可以做到下载 → 解压 → 编译 Java 示例 → 直接运行。三、Android 也补上了完整 Java 接入上一版 Android 示例主要使用 Kotlin。虽然 AAR 本身可以被 Java 项目调用但对于纯 Java Android 项目来说使用体验还不够直观。所以preview.7又补了一层。现在 Android AAR 增加了 Java 更容易调用的同步接口例如LwPpocrEngine.createBlocking(...)以及engine.recognizeBlocking(...)同时仓库新增android/demo-java/这是一个真正的纯 Java Android Demo 模块。Demo 中没有为了“Java 示例”再重新写一套 JNI。Java 和 Kotlin 最终仍然共用Android API ↓ JNI ↓ lw.PPOCR.C这意味着底层 Runtime 只有一份。Java Demo 目前包含图片选择、后台解码、EXIF 方向处理、大图片采样、ARGB_8888 转换、CLS、阅读顺序、OCR 调用以及 Engine 生命周期管理。所以现在 Android 端已经可以比较明确地说Kotlin 可以用Java 也可以用。四、单文件 HTML 现在可以直接 CtrlV 粘贴截图这个功能其实很小但我个人觉得是preview.7里非常实用的一项改进。以前使用 HTML OCR通常是截图 ↓ 保存图片 ↓ 打开 HTML ↓ 选择图片 ↓ 开始识别现在可以变成Win Shift S ↓ 截图 ↓ Ctrl V ↓ 开始识别macOS 则可以直接⌘V粘贴。也就是说剪贴板里的截图可以直接进入 HTML 页面。不需要先保存文件。而且这个功能没有引入新的服务器、Clipboard 权限或者网络请求。实现链路仍然是系统剪贴板 ↓ Browser File / Blob ↓ Canvas ↓ WASM ↓ lw.PPOCR.C所有内容继续在浏览器本地处理。图片不会上传到网络。五、为什么粘贴后没有自动 OCR这里我们特意保留了一个设计Ctrl V ↓ 加载图片 ↓ 显示预览 ↓ 点击“开始识别”而不是Ctrl V ↓ 立即 OCR原因是用户识别之前可能还需要修改CLS 阅读顺序同时也与当前选择图片 拖入图片 打开 PDF的交互方式保持一致。所以目前单文件 HTML 支持的输入方式已经变成选择图片 拖入图片 粘贴截图 打开 PDF对于日常截图 OCR 来说操作已经非常接近一个桌面小工具。但它本质上仍然只是一个 HTML 文件。六、一个 HTML依然完全离线这是lw.PPOCR.CWeb 方案一直比较强调的一点。下载lw.PPOCR.C-0.1.0-ocr-demo.html以后直接双击即可使用。里面已经包含OCR WASM Runtime PP-OCRv6 Tiny 模型 字典 Web UI PDF.js PDF 解码组件所以不需要Python Node.js Web Server OpenCV ONNX Runtime Paddle Runtime也不需要安装浏览器插件。一个现代浏览器即可运行。现在又增加了粘贴截图以后我觉得这个定位更加清晰了“随身携带的离线 OCR”——一个 HTML图片、截图和扫描 PDF 都能识别。七、这一版更像是在完善“接入生态”v0.1.0-preview.7并没有去增加新的 OCR 模型。核心仍然是PP-OCRv6 Tiny FP32 CPU DET optional CLS REC这一版主要解决的是怎样让不同技术栈的开发者更方便地使用这一套 Runtime。现在整个项目的接入关系已经逐渐变成lw.PPOCR.C │ ┌─────────┼────────┐ │ │ │ C C# Java │ ┌─────┴─────┐ │ │ Desktop JVM Android │ │ JNI DLL/SO AAR │ ├──────── WebAssembly │ └──────── Standalone HTML底层始终还是同一套纯 C OCR Runtime这也是我比较希望lw.PPOCR.C最终形成的形态OCR Runtime 本身尽量小、稳定、独立不同平台只负责提供最薄的一层集成。八、v0.1.0-preview.7 下载内容目前 Release 中已经包括Windows x64 Native 开发包Linux x86_64 Native 开发包单文件离线 OCR HTMLWeb SDKNode/WASMAndroid ARM64 AARAndroid ARM64 Preview APKJava/JNI Windows x64Java/JNI Linux x64对应 SHA256 校验文件。其中这一次新增的 Java/JNI 两个平台包可以直接在 Release 页面下载。九、项目地址GitHubhttps://github.com/lxw112190/lw.PPOCR.Cv0.1.0-preview.7https://github.com/lxw112190/lw.PPOCR.C/releases/tag/v0.1.0-preview.7如果只想体验 Web 版本可以直接下载 Release 中的lw.PPOCR.C-0.1.0-ocr-demo.html双击打开即可。如果是 Java/JVM 项目可以查看examples/java-jni/Android Java 示例则位于android/demo-java/写在最后lw.PPOCR.C目前仍然处在 Preview 阶段。它也不是一个通用 ONNX 推理框架。目前的目标一直比较明确专注 PP-OCR把 OCR 推理链路尽可能做轻、做小、做容易集成。从最早的纯 C Runtime到现在逐渐有了Windows Linux C# WebAssembly 单文件 HTML Node.js Android Kotlin Java/JVM很多功能其实都来自使用者的实际反馈。这一版的 Java/JVM、CI DLL/SO以及 HTML 粘贴截图就是三个很典型的例子。如果大家在实际项目中还有其他接入需求、兼容性问题或者优化建议也欢迎继续提交 Issue。能用一个 HTML 解决的就尽量不让用户再部署一套环境。而对于需要嵌入自己应用的开发者能通过一层很薄的接口调用纯 C Runtime就尽量不再引入一整套大型运行时。这也是lw.PPOCR.C接下来会继续坚持的方向。
返回列表