tessdata的Ocr识别

话不多说直接上代码

中文库可以自己搜索也可以github上下载很多
chi_sim.traineddata
package com.doing.utils;


import lombok.extern.slf4j.Slf4j;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Slf4j
public class OcrLocalTess4j {
	/**
 * @Author Mr伍
 * @Description //TODO 
 * @Date  2021/3/3
 * @Param bytes  图片文件的byte数组
 * @return java.lang.String  识别出来的字符串
 **/
    public static String dowl_Ocr(byte[] bytes) throws RuntimeException, IOException {
        File file = null;
        //创建文件目录
        String filePath    = DefaultConfig.getString("tempfilejpgPath");
        //语言库路径
        String xlLib=DefaultConfig.getString("languagePath");
        //零时文件名
        String fname="tem.jpg";
        File dir = new File(filePath);
        if (!dir.exists() && !dir.isDirectory()) {
            dir.mkdirs();
        }
        BufferedOutputStream bos1 = null;
        java.io.FileOutputStream fos1 = null;
        try {

            file = new File(filePath + "\\"+fname);
            fos1 = new java.io.FileOutputStream(file);
            bos1 = new BufferedOutputStream(fos1);
            bos1.write(bytes);
        } catch (Exception e) {
            e.printStackTrace();
            log.error(e.getMessage());
        } finally {
            if (bos1 != null) {
                try {
                    bos1.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fos1 != null) {
                try {
                    fos1.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            ITesseract instance = new Tesseract();
            //设置训练库的位置
            instance.setDatapath(xlLib);
            //chi_sim 中文 eng英文
            instance.setLanguage("chi_sim");

            String result = null;
            try {
            //doOCR不止提供File类型还有BufferedImage详情看源码
                result = instance.doOCR(file);
            } catch (TesseractException e) {
                log.error(e.getMessage());
                e.printStackTrace();
            }
//匹配空格换行符
            Pattern pattern = Pattern.compile("\\s*|\t|\r|\n");
            Matcher m = pattern.matcher(result);
            //替换成空字符
            String strNoBlank = m.replaceAll("");
            System.out.println("result:"+strNoBlank );
            //查询需要的数字开头结尾截取出来(自由扩展)
            strNoBlank = strNoBlank.substring(strNoBlank.indexOf("5000"), strNoBlank.indexOf("5000") + 11);
            System.err.println("识别出的数字"+strNoBlank);
            return strNoBlank;
        }

    }

}


<dependency>
            <groupId>net.sourceforge.tess4j</groupId>
            <artifactId>tess4j</artifactId>
            <version>4.4.0</version>
            <!--排除部分-->
            <exclusions>
                <exclusion>
                    <artifactId>log4j-over-slf4j</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>logback-classic</artifactId>
                    <groupId>ch.qos.logback</groupId>
                </exclusion>
            </exclusions>
        </dependency>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java OCR识别可以使用Tess4J这个基于Tesseract OCR引擎的Java接口来实现。以下是使用Tess4J进行OCR识别的步骤: 1.在Maven项目中添加Tess4J依赖: ```xml <dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4j</artifactId> <version>4.5.4</version> </dependency> ``` 2.加载图片并进行OCR识别: ```java File imageFile = new File("image.png"); ITesseract instance = new Tesseract(); instance.setDatapath("tessdata"); // 设置tessdata文件夹的路径 String result = instance.doOCR(imageFile); System.out.println(result); ``` 其中,`setDatapath`方法用于设置tessdata文件夹的路径,该文件夹包含了Tesseract OCR引擎所需的语言数据文件。`doOCR`方法用于对图片进行OCR识别,返回识别结果的字符串。 3.如果需要对多语言进行OCR识别,可以在`setLanguage`方法中指定语言: ```java instance.setLanguage("eng+chi_sim"); // 指定英文和简体中文 ``` 4.如果需要对PDF文件进行OCR识别,可以使用`PDFParser`类: ```java File pdfFile = new File("document.pdf"); PDFParser parser = new PDFParser(); parser.setOcrStrategy(new OcrStrategy() { @Override public String recognizeText(BufferedImage bi, Rectangle rect) throws TesseractException { ITesseract instance = new Tesseract(); instance.setDatapath("tessdata"); return instance.doOCR(bi, rect); } }); List<String> results = parser.parse(pdfFile); for (String result : results) { System.out.println(result); } ``` 其中,`PDFParser`类用于解析PDF文件,`setOcrStrategy`方法用于设置OCR策略,`recognizeText`方法用于对PDF中的每一页进行OCR识别

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值