快速入门

安装

下载地址open in new window

下载安装即可,没有什么可以讲解的

添加服务模型

无需阅读,已经内置 server 端模型

为了减少安装的包的体积,默认内置内置了移动端模型.移动端模型的推理速度较快,但是有些生僻字无法识别,下面介绍如何添加服务端模型解决这一问题

下载 paddle ocr 服务端模型

paddle paddle 模型下载

下面直接给成服务端模型下载地址

模型转换

下载的模型默认格式是 paddle paddle 格式,为了实现较快的推理和速度和在 cpu 上进行推理,需要将 paddle 格式的模型转为 onnx 格式

简介

  • Paddle 格式模型的转换,主要借助paddle2onnxopen in new window库实现。针对 PaddleOCR 中涉及到的相关模型,直接转换并不太方便。因此,推出了PaddleOCRModelConverteropen in new window转换工具。
  • 主要有两种使用方式:
    • 方法一:在线转换,借助魔搭和 Hugging Face 两个平台,搭建在线转换 demo;
    • 方法二:离线转换,pip 安装该工具,即可本地转换使用。

在线快速转换

离线转换

PaddleOCRModelConverteropen in new window

替换模型

进入目录替换模型即可,笔者 windows 的目录是

  • D:\dev_program\treehole-v2.2.9-windows-x64-cpu\app\models

注意下载模型后需要重名模型存放的对应的目录,笔者的目录如下

.
├── ch_PP-OCRv4_det_infer
│   ├── inference.onnx
├── ch_PP-OCRv4_rec_infer
│   ├── dict.txt
│   ├── inference.onnx
├── readme.md

已有 onnx 模型下载

已经将部分转换好的 ONNX 模型做了整理,提供了 Hugging Face、Google 网盘和百度网盘两个下载途径。

服务端口接口

有些时候需要中服务端使用 ocr 识别,笔者退出了一个服务端项目,对外提供了 http 接口,开源地址如下

二次开发

代码结构

这是一个典型的 Maven 项目结构,其中:

  • pom.xml: 这是 Maven 的项目对象模型文件,它包含了项目的依赖、插件和其他配置信息。
  • src: 这是源代码目录,通常包含主代码 (src/main) 和测试代码 (src/test)。

pom.xml 文件的部分内容中,

  1. 项目的 groupIdcom.luooqi,而 artifactIdtool-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 -DskipTests

目标文件目录

target\jfx\native

安装包目录结构

windows

.
├── app
│   ├── lib
│   │   ├── commons-logging-1.2.jar
│   │   ├── fontbox-2.0.24.jar
│   │   ├── hutool-all-5.8.11.jar
│   │   ├── imgscalr-lib-4.2.jar
│   │   ├── jnativehook-2.1.0.jar
│   │   ├── logback-classic-1.2.3.jar
│   │   ├── logback-core-1.2.3.jar
│   │   ├── pdfbox-2.0.24.jar
│   │   ├── rapidocr-0.0.7.jar
│   │   ├── rapidocr-common-0.0.7.jar
│   │   ├── rapidocr-onnx-models-1.2.2.jar
│   │   ├── rapidocr-onnx-platform-0.0.7.jar
│   │   ├── rapidocr-onnx-windows-x86_64-1.2.2.jar
│   │   ├── slf4j-api-1.7.25.jar
│   ├── logs
│   │   ├── ocr-2024-04-28.log
│   ├── tmp_1995725880.png
│   ├── tools-ocr-2.3.0-jfx.jar
│   ├── treehole.cfg
├── msvcp120.dll
├── msvcr100.dll
├── msvcr120.dll
├── packager.dll
├── runtime
│   ├── COPYRIGHT
│   ├── LICENSE
│   ├── README.txt
│   ├── THIRDPARTYLICENSEREADME-JAVAFX.txt
│   ├── THIRDPARTYLICENSEREADME.txt
│   ├── Welcome.html
│   ├── bin
│   │   ├── JAWTAccessBridge-64.dll
│   │   ├── JavaAccessBridge-64.dll
│   │   ├── WindowsAccessBridge-64.dll
│   │   ├── attach.dll
│   │   ├── awt.dll
│   │   ├── bci.dll
│   │   ├── dcevm
│   │   │   ├── jvm.dll
│   │   ├── dcpr.dll
│   │   ├── decora_sse.dll
│   │   ├── deploy.dll
│   │   ├── dt_shmem.dll
│   │   ├── dt_socket.dll
│   │   ├── fontmanager.dll
│   │   ├── fxplugins.dll
│   │   ├── glass.dll
│   │   ├── glib-lite.dll
│   │   ├── gstreamer-lite.dll
│   │   ├── hprof.dll
│   │   ├── instrument.dll
│   │   ├── j2pcsc.dll
│   │   ├── j2pkcs11.dll
│   │   ├── jaas_nt.dll
│   │   ├── java.dll
│   │   ├── java_crw_demo.dll
│   │   ├── javafx_font.dll
│   │   ├── javafx_font_t2k.dll
│   │   ├── javafx_iio.dll
│   │   ├── jawt.dll
│   │   ├── jdwp.dll
│   │   ├── jfr.dll
│   │   ├── jfxmedia.dll
│   │   ├── jfxwebkit.dll
│   │   ├── jli.dll
│   │   ├── jpeg.dll
│   │   ├── jsdt.dll
│   │   ├── jsound.dll
│   │   ├── jsoundds.dll
│   │   ├── kcms.dll
│   │   ├── lcms.dll
│   │   ├── management.dll
│   │   ├── mlib_image.dll
│   │   ├── msvcp120.dll
│   │   ├── msvcr100.dll
│   │   ├── msvcr120.dll
│   │   ├── net.dll
│   │   ├── nio.dll
│   │   ├── npt.dll
│   │   ├── plugin2
│   │   │   ├── msvcr100.dll
│   │   │   ├── npjp2.dll
│   │   ├── prism_common.dll
│   │   ├── prism_d3d.dll
│   │   ├── prism_sw.dll
│   │   ├── resource.dll
│   │   ├── sawindbg.dll
│   │   ├── server
│   │   │   ├── Xusage.txt
│   │   │   ├── classes.jsa
│   │   │   ├── jvm.dll
│   │   ├── splashscreen.dll
│   │   ├── sunec.dll
│   │   ├── sunmscapi.dll
│   │   ├── t2k.dll
│   │   ├── unpack.dll
│   │   ├── verify.dll
│   │   ├── w2k_lsa_auth.dll
│   │   ├── zip.dll
│   ├── lib
│   │   ├── accessibility.properties
│   │   ├── amd64
│   │   │   ├── jvm.cfg
│   │   ├── calendars.properties
│   │   ├── charsets.jar
│   │   ├── classlist
│   │   ├── cmm
│   │   │   ├── CIEXYZ.pf
│   │   │   ├── GRAY.pf
│   │   │   ├── LINEAR_RGB.pf
│   │   │   ├── PYCC.pf
│   │   │   ├── sRGB.pf
│   │   ├── content-types.properties
│   │   ├── currency.data
│   │   ├── ext
│   │   │   ├── access-bridge-64.jar
│   │   │   ├── cldrdata.jar
│   │   │   ├── dnsns.jar
│   │   │   ├── jaccess.jar
│   │   │   ├── jfxrt.jar
│   │   │   ├── localedata.jar
│   │   │   ├── meta-index
│   │   │   ├── nashorn.jar
│   │   │   ├── sunec.jar
│   │   │   ├── sunjce_provider.jar
│   │   │   ├── sunmscapi.jar
│   │   │   ├── sunpkcs11.jar
│   │   │   ├── zipfs.jar
│   │   ├── flavormap.properties
│   │   ├── fontconfig.bfc
│   │   ├── fontconfig.properties.src
│   │   ├── fonts
│   │   │   ├── LucidaBrightDemiBold.ttf
│   │   │   ├── LucidaBrightDemiItalic.ttf
│   │   │   ├── LucidaBrightItalic.ttf
│   │   │   ├── LucidaBrightRegular.ttf
│   │   │   ├── LucidaSansDemiBold.ttf
│   │   │   ├── LucidaSansRegular.ttf
│   │   │   ├── LucidaTypewriterBold.ttf
│   │   │   ├── LucidaTypewriterRegular.ttf
│   │   ├── hijrah-config-umalqura.properties
│   │   ├── images
│   │   │   ├── cursors
│   │   │   │   ├── cursors.properties
│   │   │   │   ├── invalid32x32.gif
│   │   │   │   ├── win32_CopyDrop32x32.gif
│   │   │   │   ├── win32_CopyNoDrop32x32.gif
│   │   │   │   ├── win32_LinkDrop32x32.gif
│   │   │   │   ├── win32_LinkNoDrop32x32.gif
│   │   │   │   ├── win32_MoveDrop32x32.gif
│   │   │   │   ├── win32_MoveNoDrop32x32.gif
│   │   ├── javafx.properties
│   │   ├── javaws.jar
│   │   ├── jce.jar
│   │   ├── jfr
│   │   │   ├── default.jfc
│   │   │   ├── profile.jfc
│   │   ├── jfr.jar
│   │   ├── jfxswt.jar
│   │   ├── jsse.jar
│   │   ├── jvm.hprof.txt
│   │   ├── logging.properties
│   │   ├── management
│   │   │   ├── jmxremote.access
│   │   │   ├── jmxremote.password.template
│   │   │   ├── management.properties
│   │   │   ├── snmp.acl.template
│   │   ├── management-agent.jar
│   │   ├── meta-index
│   │   ├── net.properties
│   │   ├── plugin.jar
│   │   ├── psfont.properties.ja
│   │   ├── psfontj2d.properties
│   │   ├── resources.jar
│   │   ├── rt.jar
│   │   ├── security
│   │   │   ├── README.txt
│   │   │   ├── US_export_policy.jar
│   │   │   ├── blacklist
│   │   │   ├── blacklisted.certs
│   │   │   ├── cacerts
│   │   │   ├── java.policy
│   │   │   ├── java.security
│   │   │   ├── javaws.policy
│   │   │   ├── local_policy.jar
│   │   │   ├── trusted.libraries
│   │   ├── sound.properties
│   │   ├── tzdb.dat
│   │   ├── tzmappings
├── treehole.exe
├── treehole.ico

参考资料

Last Updated:
Contributors: litongjava