沉梦听雨的编程指南 沉梦听雨的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)

沉梦听雨

时间是最好的浸渍剂,而沉淀是最好的提纯器🚀
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)
  • 开发工具篇

  • 工具库篇

    • lombok工具库

      • lombok注解使用小结
      • Builder用法解析
      • 异常相关注解
    • EasyExcel小记

    • 定时任务相关

    • Hutool工具库

    • 极光推送学习
    • OkHttp学习
    • BigDecimal类详解
    • PdfBox学习
    • OCR功能实现
      • 可选择的 OCR 引擎
      • Tesseract 示例
        • 1. 下载和安装 Tesseract
        • 在 Windows 上安装 Tesseract
        • 在 Linux 上安装 Tesseract
        • 在 macOS 上安装 Tesseract
        • 2. 添加 Tess4J 依赖
        • Maven
        • Gradle
        • 3. 编写 Java 代码实现 OCR 功能
        • 4. 处理多语言支持
        • 下载语言数据文件
        • 放置语言数据文件
        • 5. 步骤小结
      • RapidOCR 示例
      • 学习参考
  • 开发技巧篇

  • 工具类系列

  • 随笔

  • 开发日常
  • 工具库篇
沉梦听雨
2024-10-26
目录

OCR功能实现

# JAVA 实现 OCR 功能

# 可选择的 OCR 引擎

  • Tesseract OCR 与 Tess4J:tesseract-ocr/tesseract: Tesseract Open Source OCR Engine (main repository) (opens new window)

  • spire.ocr:Spire.OCR for Java | 专业的图文识别组件,用以读取图片格式中的文本 (opens new window)

  • rapidocr:安装及使用 - RapidOCR 文档 (opens new window)

  • 百度 ocr api:文字识别OCR (opens new window)

  • 阿里文字识别:文字识别_OCR 文字识别_图片识别文字_数据智能-阿里云 (opens new window)

# Tesseract 示例

在 Java 中实现 OCR(光学字符识别)功能,通常需要依赖一些第三方库。

  • Tesseract 是一个非常流行且强大的开源 OCR 引擎,可以用来从图像中提取文本信息。
  • 你可以通过 Tesseract 的 Java 绑定库 Tess4J 来在 Java 应用程序中使用 Tesseract。

# 1. 下载和安装 Tesseract

首先,你需要下载并安装 Tesseract OCR 引擎。Tesseract 支持多种操作系统,包括 Windows、Linux 和 macOS。

# 在 Windows 上安装 Tesseract

  1. 下载 Tesseract:

    • 访问 Tesseract at UB Mannheim (opens new window) 或 Tesseract at GitHub (opens new window)。
    • 下载适合你操作系统的安装包。例如,对于 Windows,你可以下载 tesseract-ocr-w64-setup-v5.0.0-20220101.exe。
  2. 安装 Tesseract:

    • 运行下载的安装程序并按照提示进行安装。
    • 安装过程中,记住 Tesseract 的安装路径(通常是 C:\Program Files\Tesseract-OCR)。
  3. 设置环境变量(可选但推荐):

    • 将 Tesseract 的安装路径添加到系统的 PATH 环境变量中。这样你可以在命令行中直接使用 tesseract 命令。

# 在 Linux 上安装 Tesseract

sudo apt-get update
sudo apt-get install tesseract-ocr
1
2

# 在 macOS 上安装 Tesseract

brew install tesseract
1

# 2. 添加 Tess4J 依赖

如果你使用 Maven 或者 Gradle 项目,可以添加 Tess4J 的依赖项。

# Maven

在 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>5.0.0</version>
</dependency>
1
2
3
4
5

# Gradle

在 build.gradle 文件中添加以下依赖:

dependencies {
    implementation 'net.sourceforge.tess4j:tess4j:5.0.0'
}
1
2
3

# 3. 编写 Java 代码实现 OCR 功能

以下是一个简单的示例,展示如何使用 Tess4J 从图片中提取文本信息:

import net.sourceforge.tess4j.*;

import java.io.File;

public class OCRExample {

    public static void main(String[] args) {
        try {
            // 创建 Tesseract 实例
            ITesseract instance = new Tesseract();

            // 设置 Tesseract 数据路径(包含训练数据文件)
            // 如果你在 PATH 环境变量中设置了 Tesseract,这一步可以省略
            // 否则,你需要指定 Tesseract 的安装路径
            instance.setDatapath("path/to/tessdata");

            // 设置识别的语言
            // 例如中文简体 (chi_sim) 或英文 (eng)
            instance.setLanguage("chi_sim");

            // 读取图片文件
            File imageFile = new File("path/to/your/image.png");

            // 执行 OCR 识别
            String result = instance.doOCR(imageFile);

            // 输出结果
            System.out.println(result);

            // 存储或处理结果
            processResult(result);

        } catch (TesseractException e) {
            e.printStackTrace();
        }
    }

    private static void processResult(String result) {
        // 在这里处理 OCR 结果,例如存储到数据库
        System.out.println("Processing OCR result: " + result);
        // 你可以在这里添加更多的逻辑,例如解析特定字段、验证数据等
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

# 4. 处理多语言支持

Tesseract 支持多种语言,你可以通过下载相应的语言数据文件来扩展其支持范围。例如,要支持中文简体,你需要下载 chi_sim.traineddata 文件,并将其放在 tessdata 目录下。

# 下载语言数据文件

访问 Tesseract Language Data (opens new window) 页面,下载你需要的语言数据文件。

# 放置语言数据文件

将下载的语言数据文件(例如 chi_sim.traineddata)放置在 Tesseract 的 tessdata 目录下。例如,如果你的 Tesseract 安装路径是 C:\Program Files\Tesseract-OCR,则将文件放在 C:\Program Files\Tesseract-OCR\tessdata 目录下。

# 5. 步骤小结

  1. 下载并安装 Tesseract:确保 Tesseract 安装在你的系统上,并且路径已添加到环境变量中。
  2. 添加 Tess4J 依赖:在你的 Java 项目中添加 Tess4J 依赖。
  3. 编写 Java 代码:使用 Tess4J API 从图片中提取文本信息。

通过这些步骤,你可以在 Java 应用程序中实现 OCR 功能。

# RapidOCR 示例

RapidOCR 是一个开源的 OCR 库,支持 Windows 和 Linux 部署。

实现步骤:

  • 添加依赖:在项目中添加 RapidOCR 的依赖。

    <dependency>
      <groupId>io.github.mymonstercat</groupId>
      <artifactId>rapidocr</artifactId>
      <version>0.0.7</version>
    </dependency>
    
    1
    2
    3
    4
    5
  • 编写 OCR 代码:使用 RapidOCR 进行文字识别。

    import com.example.paddleocr.PaddleOcr;
    
    public class OCRDemo {
        public static void main(String[] args) {
            String temPath = "E:\\cstp3.png";
            ParamConfig paramConfig = ParamConfig.getDefaultConfig();
            paramConfig.setDoAngle(true);
            paramConfig.setMostAngle(true);
            InferenceEngine engine = InferenceEngine.getInstance(Model.ONNX_PPOCR_V4);
            // 开始识别
            OcrResult ocrResult = engine.runOcr(temPath, paramConfig);
            System.out.println("识别内容" + ocrResult.getStrRes().replace("\n", " "));
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

# 学习参考

  • Spire.OCR for Java 实现OCR扫描/识别图片文字 - E-iceblue - 博客园 (opens new window)
  • java实现OCR图片识别,RapidOcr开源免费,支持Windows和linux部署_io.github.mymonstercat-CSDN博客 (opens new window)
上次更新: 2024/10/27 22:27:59
PdfBox学习
常见数据校验注解

← PdfBox学习 常见数据校验注解→

Theme by Vdoing | Copyright © 2023-2025 沉梦听雨 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式