欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java中使用tess4J进行图片文字识别(支持中文)

程序员文章站 2022-03-05 10:17:35
...

Java 版本:建议JDK1.8 
使用的软件是tesseractocr3.02,3以后的版本才支持中文, 这个软件需要安装在本地电脑中,安装的过程中全部都按照默认进行安装(以便于Java直接调用)

代码及所使用的软件插件及jar包地址如下:

https://download.csdn.net/download/weixin_40461281/10609983

该软件默认的识别的是英文,如果相要能识别中文,需要将中文的训练文本chi_sim.traineddata存放到(安装路径下\Tesseract-OCR\tessdata)中

Java中识别的话很简单 , 下面是封装的工具类

import net.sourceforge.tess4j.Tesseract;

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


public class OCR {
    /**
     *
     * @param srImage 图片路径
     * @param ZH_CN 是否使用中文训练库,true-是
     * @return 识别结果
     */
    public static String FindOCR(String srImage, boolean ZH_CN) {
        try {
            System.out.println("start");
            double start=System.currentTimeMillis();
            File imageFile = new File(srImage);
            if (!imageFile.exists()) {
                return "图片不存在";
            }
            BufferedImage textImage = ImageIO.read(imageFile);
            Tesseract instance=Tesseract.getInstance();
            instance.setDatapath("C:\\Program Files (x86)\\Tesseract-OCR\\tessdata");//设置训练库
            if (ZH_CN)
                instance.setLanguage("chi_sim");//中文识别
            String result = null;
            result = instance.doOCR(textImage);
            double end=System.currentTimeMillis();
            System.out.println("耗时"+(end-start)/1000+" s");
            return result;
        } catch (Exception e) {
            e.printStackTrace();
            return "发生未知错误";
        }
    }
    public static void main(String[] args) throws Exception {
        String result=FindOCR("D:\\test2.png",true);
        System.out.println(result);
    }
}