Java使用Tesseract-OCR文字识别(Java调用tess4j提取图片中文、英文、数字信息)

由于需要在应用中将原本的身份认证手动提交身份信息改为用户上传身份证照自动提取信息,提升用户体验,第一时间想到阿里云等平台的收费服务及开源技术Tesseract-OCR(Tesseract-OCR提供了全套训练工具,可降低开发成本,需要下载客户端使用),同时提供了tess4j(tess4j是Java对Tesseract-OCR的封装,使Java应用程序可以调用tess4j API使用Tesseract-OCR),这里先体验一下开源技术tess4j。

一、tess4j实现提取图片信息

1、创建一个maven普通Java项目,标记部分为后面添加。

2、添加tess4j相关依赖。如果非maven工程需下载源码包,将源码包下的lib文件夹拷贝至项目下,下一步的图片中显示了源码包目录结构

        <!--     tess4j相关依赖   -->
        <dependency>
            <groupId>net.sourceforge.tess4j</groupId>
            <artifactId>tess4j</artifactId>
            <version>3.2.1</version>
        </dependency>

3、下载源码包

tess4j源码包:https://sourceforge.net/projects/tess4j/

中文库地址:https://github.com/tesseract-ocr/tessdata/blob/master/chi_sim.traineddata

其他语言包地址:https://github.com/tesseract-ocr/tessdata

3.1、下载tess4j源码包并解压

3.2、将tess4j里的文件夹tessdata拷贝至项目根目录,与src同级。

3.3、tessdata默认只有英文库eng.traineddata,识别中文需要下载中文包并将中文包拷贝至tessdata里eng.traineddata同级目录下。

4、在项目中创建图片资源目录,存放本地图片供识别使用,这里在根目录创建并存入几张中、英文、数字图片。

5、编写测试类。


import java.io.File;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;

/**
 *  tess4j测试类
 */

public class Tess4jDemo {
    public static void main(String []args) throws TesseractException{

                //创建ITesseract接口的实现实例对象
                ITesseract iTesseract = new Tesseract();
                //设置tessdata训练库语言包地址,项目根目录下为默认地址可不设置
//                iTesseract.setDatapath("E:\IDEA\IntelliJ IDEA 2019.1.3\IdeaProjects\Tess4jDemo\tessdata");
                //默认识别英文
                //如果需要识别英文之外的语种,需要指定识别语种,并且需要将对应的语言包放进项目中
//                iTesseract.setLanguage("chi_sim");

                // 指定本地图片
                File img = new File("E:\\IDEA\\IntelliJ IDEA 2019.1.3\\IdeaProjects\\Tess4jDemo\\Tess4jImages\\num.jpg");
                //开始识别时间
                long startTime = System.currentTimeMillis();
                //识别结果
                String ocrResult = iTesseract.doOCR(img);
                // 输出识别结果
                System.out.println("耗时:" + (System.currentTimeMillis() - startTime) + "ms");
                System.out.println("识别结果: \n" + ocrResult );

    }
}

6、运行结果

6.1、数字图片识别

6.1.1

6.1.2

6.2、英文图片识别。

6.3、中文图片识别,将代码中设置中文库的代码注释取消

6.3.1

6.3.2

 

结果很明显:在简单环境下,印刷体,数字识别最好,中、英文识别差不多效果一般,复杂环境下,识别效果都很差,必须使用官方提供的训练工具对各种场景提升识别能力

 

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Tesseract-OCR是一个开源的OCR识别引擎,可以识别多种语言的文字。在Java使用Tesseract-OCR可以通过以下步骤实现: 1. 安装Tesseract-OCR引擎 可以从Tesseract-OCR官网下载安装包进行安装,也可以通过命令行安装。在Windows系统下,可以通过以下命令安装: ``` choco install tesseract ``` 在Linux系统下,可以通过以下命令安装: ``` apt-get install tesseract-ocr ``` 2. 导入Tesseract-OCRJava API 可以通过在pom.xml文件中添加以下依赖来导入Tesseract-OCRJava API: ``` <dependency> <groupId>com.github.tesseract-ocr</groupId> <artifactId>tess4j</artifactId> <version>4.5.4</version> </dependency> ``` 3. 使用Tesseract-OCR进行文字识别 可以通过以下代码段来实现使用Tesseract-OCR进行文字识别: ``` File imageFile = new File("image.png"); Tesseract tesseract = new Tesseract(); tesseract.setDatapath("/usr/share/tesseract-ocr/tessdata"); String result = tesseract.doOCR(imageFile); System.out.println(result); ``` 其中,第一行代码创建了一个File对象,表示待识别的图像文件。第二行代码创建了一个Tesseract对象,并设置了Tesseract-OCR的数据路径。第三行代码调用doOCR()方法进行文字识别,并将识别结果存储到result字符串中。最后一行代码将识别结果输出到控制台。 需要注意的是,Tesseract-OCR对图像的分辨率、亮度、对比度等要求较高,因此在进行文字识别前,需要对图像进行预处理,以提高识别准确率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值