win下编译paddleocr方便java本地调用

java想搞个ocr的demo前提

  1. 想用java做一些ocr的需求,那么我们需要用到opencv(对图片进行一些基本的操作)和ocr(文字识别)。
  2. opencv官网提供的有对每个系统有编译好的版本直接下下来用就可以了,里面有一些版权问题的一些算法如果想用的话需要自己下源代码自己编译(编译的步骤网上找下就可以了)
  3. ocr依赖的类库搜下网上很多Tesseract但是找个对中文识别率是不行的。我们可以用百度的paddleocr。
  4. java想本地使用paddleocr那肯定要调用本地连接库了,win下面我们要做的就是把paddleocr搞成dll供我们调用。

opencv依赖引入

  1. 直接opencv官网下载对应平台就可以了。下exe安装版本就可以了其实就是个压缩包。
  2. win下面需要引入对应jar包,另一个是dll文件。
arduino 复制代码
static {
    // 加载动态库 直接路径指定
    //URL url = ClassLoader.getSystemResource("lib/opencv_java454.dll");
    //System.load(url.getPath());
    System.load("D:\go_work\ocr\Release\opencv_java454.dll");
    //系统加载 需要在环境变量里面能找到,不用后缀
    //System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}

3.入门hello,world

paddleocr win下编译

  1. clone项目 gitee.com/paddlepaddl... github.com/PaddlePaddl...
  2. 下载安装Windows预测库 paddleinference.paddlepaddle.org.cn/user_guides...
  3. 编译需要准备的工具cmake和visual studio;cmake还需要github可以访问到的需要下一些依赖。
  4. 网上教程很多,搜下就可以了。很多教程提供的都是exe,然后需要你找下dll的编译。
  5. 之前我这里遇到的问题,有个文件报错需要再网上找下然后引进来。
  6. dll的话需要我们自己写个C++函数供外部调用。
  7. 还有个问题是预测库地址的问题,可以自己改为默认的。(当时用go的时候相对路径没报错,java用的时候找不到)
  8. 编译后文件,模型文件是我自己放的

测试编译后paddleocr

  1. 需要把编译后的文件设置到环境变量中,如果直接指定dll会有依赖提示的。
  2. 然后加载依赖,注意不要后缀
arduino 复制代码
System.loadLibrary("ppocr");
  1. 在opencv中也用到了dll但是给的有jar包调用时封装好的。但这里paddleocr是我们自己编译的,需要我们自己去调用当
  2. 之前在网上找的用自带的jni的一直没搞定(这里面有个麻烦的点是两种语言的数据类型对应的映射),后来发现jna使用起来很丝滑。
arduino 复制代码
//C++定义的函数
char* ImageProcess(char* image_dir)

//定义一个接口就可以了
public interface IImageProcess extends Library {
    public static IImageProcess dta = (IImageProcess) Native.loadLibrary("ppocr", IImageProcess.class);
    String ImageProcess(String path);
}
  1. 效果原图(图片内容是有点复杂的,个别有点问题,整体很可以的)

最后说下我想的怎么去应用

因为单纯的说把整个图片内容识别出来实用起来肯定是有点鸡肋的。如果你会用opencv那就另说了(因为想在图片中识标识出你想要的东西需要很多操作的步骤转来转去的)。简单处理的话就是对一类图片直接进行定位处理,所以想做个简单通用的识别内容提取我想的是维护不同类型的模板,提取的内容在前端进行标记处理(就是相对的坐标标记,内容维护个json),然后根据模板结合ocr处理得到想要内容。

相关推荐
吴声子夜歌2 小时前
ApacheCommons——commons-pool2(高性能通用对象池框架)
java·开发语言·apache
mldong7 小时前
C# 开发者也有自己的轻量工作流引擎了:NuGet 装包,5 分钟跑通一条审批流
后端·c#·.net
xcl09258 小时前
幼儿托育系统开发实战:从需求分析到上线全流程指南
java·大数据·需求分析
吴声子夜歌8 小时前
ApacheCommons——commons-cli(命令行参数解析)
java·开发语言·apache
小小猪的春天8 小时前
Java 手写第一个 MCP Server:Spring AI MCP 半小时跑通
java·人工智能·spring boot·ai编程
find1star8 小时前
LeetCode 141:环形链表
java·算法·leetcode·链表
爱学堂IT分享9 小时前
鹤翔老师pmp项目管理培训认证考试课 (直播录播题库送学时证明)【共58课时】-51CTO学堂
后端
今天AI了吗9 小时前
DeepSeek Harness 深度解析:从评测架构到实战落地
java·网络·数据库·人工智能·架构·java-ee
王的宝库9 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
许彰午9 小时前
27-AuthService登录链路
java·低代码·架构