java tess4j mave_Java使用Tesseract-OCR进行图像中文文字识别

1.Tesseract和Tess4J介绍

Tesseract支持Unicode(UTF-8),可以“开箱即用”地识别100多种语言。Tesseract支持各种输出格式:纯文本、HOCR(HTML)、PDF、TSV、仅不可见文本PDF。Tesseract-OCR支持中文识别,并且开源和提供全套的训练工具,是快速低成本开发的首选。

Tess4J则是Tesseract在Java的本地动态库的API(该库提供光学字符识别(OCR)支持:TIFF、JPEG、GIF、PNG和BMP图像格式,多页tiff图像,PDF文档格式)。tess4j是在apache许可证v2.0下发布和分发的,也可以从maven中央存储库获得。如果使用Tess4J只需要下载相关Jar包,导入库,再把项目封装好就可以处处运行了,可移植性比较好。Tess4J在英文和数字识别中性能比较好,但是在中文识别中,无论速度还是识别率还是较弱,因此需要针对场景进行训练,才能获得较好结果。

2.下载识别中文字体库

https://github.com/tesseract-ocr/tessdata/blob/master/chi_sim.traineddata

3.新建maven项目

把字体库文件放入resources目录下

528.html

4.maven配置

net.sourceforge.tess4j

tess4j

4.4.0

5.java代码

package net.itxw;

import net.sourceforge.tess4j.Tesseract;

import net.sourceforge.tess4j.TesseractException;

import net.sourceforge.tess4j.util.LoadLibs;

import javax.imageio.ImageIO;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

/**

* @Author: houyong

* @Date: 2019/9/19

*/

public class Tess4JTest {

public static void main(String[] args) {

System.out.println(ocrCn("D:\\itxwnet.png"));

}

public static String ocrCn(String path){

String result="";

try {

//记录开始时间

double start = System.currentTimeMillis();

//初始化Tesseract

Tesseract tesseract = new Tesseract();

tesseract.setLanguage("chi_sim");

//获取tessdata下的字体库文件

File tessDataFolder = LoadLibs.extractTessResources("tessdata");

//设置语言包

tesseract.setDatapath(tessDataFolder.getAbsolutePath());

//读取图片文件

File file = new File(path);

BufferedImage textImage = ImageIO.read(file);

//识别图片文字

result=tesseract.doOCR(textImage);

//计算耗时

double end = System.currentTimeMillis();

System.out.println("耗时"+(end-start)/1000+" s");

textImage.flush();

} catch (IOException e) {

e.printStackTrace();

} catch (TesseractException e) {

e.printStackTrace();

}

return result;

}

}

6.测试识别图片文字

将要识别的图片:

528.html

执行结果:

528.html

这个速度和准确率还是差点意思了。1.6秒,错了2个字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值