Tesseract-OCR JAVA获取图片中的文字内容

一、总体执行步骤

1、下载Tesseract引擎安装(路径用于配置环境变量)

2、下载Tessdata语言库,放在引擎安装的tessdata目录下

3、导入maven依赖

4、编写代码

二、步骤细分:

1、官网(可忽略)

官网地址:UB Mannheim: Digitale Bibliothek

项目地址:https://github.com/tesseract-ocr/tesseract/wiki

 2、Tesseract引擎安装包下载地址(安装目录用于配置环境变量)

对应版本: https://digi.bib.uni-mannheim.de/tesseract/

3、配置环境变量

使用Tesseract引擎安装的根目录地址;

打开命令终端,输入:tesseract -v,可以看到版本信息即安装完成;

4、下载其他语言的识别包

语言包: https://tesseract-ocr.github.io/tessdoc/Data-Files

简体字识别包:https://github.com/tesseract-ocr/tessdata/raw/4.00/chi_sim.traineddata

繁体字识别包:https://github.com/tesseract-ocr/tessdata/raw/4.00/chi_tra.traineddata

https://github.com/tesseract-ocr/tessdata_best
https://github.com/tesseract-ocr/tessdata

https://blog.csdn.net/hktkfly6/article/details/104228994

5、maven坐标

<!-- https://mvnrepository.com/artifact/net.sourceforge.tess4j/tess4j -->
<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>4.5.4</version>
</dependency>

6、代码

例子一:


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

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class ORCreadPicWord {
    /**
     *
     * @param srcImage 图片全路径
     * @param ZH_CN 是否使用简体中文
     * @return
     */
    public static String findORC(String srcImage,boolean ZH_CN) {
        try {
            File srcimage = new File(srcImage);
            if (!srcimage.exists()) {
                return "图片不存在";
            }

            BufferedImage textImage = ImageIO.read(srcimage);
            ITesseract instance = new Tesseract();//导入依赖后可用

            instance.setDatapath("C:\\Program Files (x86)\\Tesseract-OCR\\tessdata");//设置中文字体的目录(全路径)
            if (ZH_CN) {
                instance.setLanguage("chi_sim");//中文识别
            }
            String result = instance.doOCR(textImage);
            return result;
        } catch (IOException | TesseractException e) {
            e.printStackTrace();
            return "未知错误";
        }
    }

    public static void main(String[] args) {
        //图片中文件结束处的光标也会影响文字读取
        String orc = findORC("C:\\Users\\Administrator\\Desktop\\w\\test.jpg", true);
        System.out.println(orc);
    }
}

例子二:

OcrService
import net.sourceforge.tess4j.TesseractException;

import java.awt.image.BufferedImage;

public interface OcrService {
    public String recognizeText(BufferedImage image) throws TesseractException;
}
OcrServiceImpl

import com.icbc.service.OcrService;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import org.springframework.stereotype.Service;

import java.awt.image.BufferedImage;

@Service
public class OcrServiceImpl implements OcrService {

    private ITesseract tesseract;

    public OcrServiceImpl() {
        this.tesseract = new Tesseract();
        this.tesseract.setDatapath("C:\\Program Files (x86)\\Tesseract-OCR\\tessdata");
    }

    public String recognizeText(BufferedImage image) throws TesseractException {
        tesseract.setLanguage("chi_sim");
        //若要实现简体+繁体的识别,可将语言类型拼接起来
//        tesseract.setLanguage("chi_sim+chi_tra");

        return tesseract.doOCR(image);
    }
}
 

OcrController

import com.icbc.service.OcrService;
import net.sourceforge.tess4j.TesseractException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.imageio.ImageIO;
import java.io.IOException;

@RestController
@RequestMapping("/ocr")
public class OcrController {

    @Autowired
    private OcrService ocrService;

    @PostMapping("/recognize")
    public String recognizeText(@RequestParam("file") MultipartFile file) {
        try {
            String result = ocrService.recognizeText(ImageIO.read(file.getInputStream()));
            return result;
        } catch (IOException | TesseractException e) {
            return "图片处理出错: " + e.getMessage();
        }
    }
}
 

postman测试:

设置heads和body

  • 15
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Tesseract-OCR 是一个开源的字符识别库,支持多种语言,其适用于通过光学字符识别(OCR)技术处理身份证信息。而 Java Tesseract-OCR 是基于 Tesseract-OCRJava API,为开发人员提供了在 Java 程序使用 Tesseract-OCR 的功能。 使用 Java Tesseract-OCR 处理身份证,首先需要安装 Tesseract-OCR 的依赖库,并将其与 Java 项目进行集成。然后,可以通过 Java Tesseract-OCR 提供的 API,对身份证进行文字识别。 识别身份证的过程一般包括以下几个步骤: 1. 图像预处理:首先需要加载身份证图片进行预处理,包括图像灰度化、二值化等操作,以便提高识别的准确性。 2. 文字识别:使用 Java Tesseract-OCR 的 API,对预处理后的图像进行文字识别。可以根据需求,选择不同的识别模式和语言设置,以达到更好的识别效果。 3. 结果输出:获取到识别结果后,可以将识别的文字信息输出到控制台、文件或者存储到数据。 需要注意的是,由于身份证上的文字信息存在一定的特殊性,如字体、背景等因素的影响,识别的准确率可能会受到一些限制。因此,在使用 Java Tesseract-OCR 进行身份证文字识别时,可能需要对图片进行适当的预处理,以及对识别结果进行后期的校验和修正,以保证最终的准确性。 总之,Java Tesseract-OCR 是一个强大的工具,能够帮助开发人员在 Java 程序实现身份证文字识别功能,但需要根据实际情况对其进行调试和优化,以达到更好的识别效果。 ### 回答2: Java Tesseract-OCR是一个基于Java开发OCR(光学字符识别)库,可以用于识别身份证。OCR技术可以将身份证上的文字和数字转化为计算机可读的文本数据,从而实现身份证信息的自动化处理和识别。 使用Java Tesseract-OCR识别身份证,首先需要将身份证的图像文件加载到程序。然后,通过调用相应的方法,对图像进行预处理和分析。预处理包括图像二值化、去噪等操作,以提高识别准确度。接下来,调用OCR识别方法,将图像转化为文本数据。最后,对识别结果进行后期处理和分析,提取身份证上的各项信息。 使用Java Tesseract-OCR识别身份证有以下几个优点。首先,Java Tesseract-OCR是一个开源的OCR库,提供了丰富的功能和灵活的定制选项,可以根据具体需求进行配置和调整。其次,Java Tesseract-OCR是基于Tesseract引擎开发的,该引擎是目前最为成熟和广泛应用的OCR引擎之一,具有较高的识别准确度和稳定性。再次,Java Tesseract-OCR支持多种图像格式和语言,可以应对不同类型和语种的身份证识别需求。 总而言之,Java Tesseract-OCR是一个强大而灵活的工具,可以用于身份证的OCR识别。通过使用该工具,可以实现身份证信息的自动化处理和识别,提高工作效率和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值