SpringBoot + Tess4J 实现本地与远程图片处理

简介: 【4月更文挑战第30天】Spring Boot 是一个流行的 Java 框架,可以方便地搭建各种类型的应用。Tess4J 是一个基于 Tesseract OCR 的 Java 接口库,用于识别图像中的文本。本文将介绍如何结合这两个工具,创建一个应用程序,能够处理本地和远程图像,提取其中的文本。

引言

Spring Boot 是一个流行的 Java 框架,可以方便地搭建各种类型的应用。Tess4J 是一个基于 Tesseract OCR 的 Java 接口库,用于识别图像中的文本。本文将介绍如何结合这两个工具,创建一个应用程序,能够处理本地和远程图像,提取其中的文本。

准备工作

1. 环境设置

  • JDK:确保已安装 Java 8 或以上版本。
  • Maven:用于管理项目依赖。
  • Tesseract OCR:需要在系统中安装 Tesseract OCR,以便 Tess4J 能够调用。

2. 项目配置

创建一个基于 Spring Boot 的 Maven 项目,并在 pom.xml 中添加以下依赖:

xml复制代码

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
</dependency>

实现图片文本提取

1. 图片文本提取逻辑

首先,我们需要一个方法来处理图像并提取文本。以下代码演示了如何使用 Tess4J 进行本地和远程图像的文本提取。

java复制代码

import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;

public class ImageTextExtractor {

    private Tesseract tesseract;

    public ImageTextExtractor() {
        tesseract = new Tesseract();
        // 设置 Tesseract OCR 数据目录
        tesseract.setDatapath("C:/Program Files/Tesseract-OCR/tessdata");
        tesseract.setLanguage("eng"); // 设置识别语言
    }

    public String extractTextFromLocalImage(String imagePath) throws TesseractException {
        return tesseract.doOCR(new File(imagePath));
    }

    public String extractTextFromRemoteImage(String imageUrl) throws IOException, TesseractException {
        // 下载图像到本地临时文件夹
        String tempFilePath = System.getProperty("java.io.tmpdir") + "/temp_image.jpg";
        Files.copy(new URL(imageUrl).openStream(), Paths.get(tempFilePath));
        
        return extractTextFromLocalImage(tempFilePath);
    }
}

2. 创建 Web 控制器

接下来,我们需要一个 Web 控制器来接收 HTTP 请求,并调用上述的方法:

java复制代码

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class OCRController {

    private final ImageTextExtractor extractor;

    public OCRController() {
        extractor = new ImageTextExtractor();
    }

    @GetMapping("/extract-text")
    public String extractText(@RequestParam String source, @RequestParam(required = false) boolean isRemote) {
        try {
            if (isRemote) {
                return extractor.extractTextFromRemoteImage(source);
            } else {
                return extractor.extractTextFromLocalImage(source);
            }
        } catch (Exception e) {
            return "Error: " + e.getMessage();
        }
    }
}

测试应用程序

1. 本地测试

启动应用程序后,使用浏览器或 Postman 等工具访问以下 URL 进行测试:

  • 本地图像http://localhost:8080/extract-text?source=path_to_image_file
  • 远程图像http://localhost:8080/extract-text?source=image_url&isRemote=true

2. 分析结果

在浏览器或客户端中查看结果,并确保应用程序能够正确提取图像中的文本。

结论

本文介绍了如何使用 Spring Boot 和 Tess4J 构建一个应用程序,以处理本地和远程图像中的文本提取任务。通过合理配置项目依赖和结构,我们可以轻松构建一个实用的 OCR 应用,从而扩展 Java 项目的功能,为用户提供更多实用的服务。

相关文章
|
文字识别 Java API
SpringBoot+Tess4j实现牛逼的OCR识别工具
SpringBoot+Tess4j实现牛逼的OCR识别工具
1648 0
SpringBoot+Tess4j实现牛逼的OCR识别工具
|
3月前
|
文字识别 Java 计算机视觉
【神技解锁】Spring Boot + Tess4J:一图胜千言,瞬间变文字,颠覆你的视觉体验!
【8月更文挑战第29天】本文详细介绍了如何在 Spring Boot 项目中集成 Tess4J,实现高效本地与远程图片的光学字符识别(OCR)处理。通过具体步骤展示了如何添加依赖、配置 OCR 引擎、创建图片处理服务及控制器,并提供了测试方法。这不仅适用于文本识别场景,还可扩展至其他图像处理任务,为项目增添实用功能。
166 0
|
Java API 数据安全/隐私保护
SpringBoot2.x 整合 thumbnailator 图片处理
在实际项目中,有时为了响应速度,难免会对一些高清图片进行一些处理,比如图片压缩之类的,而其中压缩可能就是最为常见的。最近,阿粉就被要求实现这个功能,原因是客户那边嫌速度过慢。借此机会,阿粉今儿就给大家介绍一些一下我做这个功能时使用的 Thumbnailator 库。
SpringBoot2.x 整合 thumbnailator 图片处理
|
26天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
130 1
|
2月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
138 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
2月前
|
前端开发 JavaScript Java
SpringBoot项目部署打包好的React、Vue项目刷新报错404
本文讨论了在SpringBoot项目中部署React或Vue打包好的前端项目时,刷新页面导致404错误的问题,并提供了两种解决方案:一是在SpringBoot启动类中配置错误页面重定向到index.html,二是将前端路由改为hash模式以避免刷新问题。
209 1
|
10天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
87 62
|
8天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
21 2
|
10天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
2月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
基于Java+Springboot+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的大学竞赛报名管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
202 3
基于Java+Springboot+Vue开发的大学竞赛报名管理系统