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处理得到想要内容。

相关推荐
程序员黑豆6 小时前
全新系列开启:AI 全栈开发
前端·后端·全栈
要开心吖ZSH6 小时前
AI医疗分诊与健康咨询助手agent开发——(0)项目背景与概要
java·ai·agent·健康医疗·rag
自进化Agent智能体6 小时前
Skill Marketplace架构:AI能力的民主化与生态建设
后端
后青春期的诗go7 小时前
泛微OA-E9与第三方系统集成开发企业级实战记录(十五)
java·泛微·集成开发·e9
千云7 小时前
ClaudeCode Skill生成教学培训文档,助力新人快速学习项目
人工智能·后端·ai编程
吃口巧乐兹7 小时前
理解 Agent 中的 Slash Command:从概念到自定义命令实践
java·github
fliter7 小时前
Rust 构建为什么这么慢?从工具链底层到实际优化的完整排查指南
后端
用户9772654613847 小时前
Boto3:Python 开发者操作 AWS 的官方 SDK
后端
程序员cxuan8 小时前
姚顺雨这次访谈,腾讯终于把 AI 下半场讲明白了
人工智能·后端·程序员
神奇小汤圆8 小时前
开源:把自己"博客转推文"蒸馏成一个 Agent Skill
后端