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

相关推荐
是十一月末8 分钟前
Opencv实现图像的腐蚀、膨胀及开、闭运算
人工智能·python·opencv·计算机视觉
醒了就刷牙15 分钟前
黑马Java面试教程_P9_MySQL
java·mysql·面试
m0_7482336421 分钟前
SQL数组常用函数记录(Map篇)
java·数据库·sql
编程爱好者熊浪1 小时前
JAVA HTTP压缩数据
java
吴冰_hogan1 小时前
JVM(Java虚拟机)的组成部分详解
java·开发语言·jvm
开心工作室_kaic1 小时前
springboot485基于springboot的宠物健康顾问系统(论文+源码)_kaic
spring boot·后端·宠物
长风清留扬1 小时前
基于OpenAI Whisper AI模型自动生成视频字幕:全面解析与实战指南
人工智能·神经网络·opencv·计算机视觉·自然语言处理·数据挖掘·whisper
0zxm1 小时前
08 Django - Django媒体文件&静态文件&文件上传
数据库·后端·python·django·sqlite
白宇横流学长2 小时前
基于java出租车计价器设计与实现【源码+文档+部署讲解】
java·开发语言
数据小爬虫@4 小时前
Java爬虫实战:深度解析Lazada商品详情
java·开发语言