Tess4J介绍
Tess4J官网 Tesseract-OCR支持中文识别,并且开源和提供全套的训练工具,是快速低成本开发的首选。而Tess4j则是Tesseract在Java PC上的应用。在英文和数字识别中性能还是不错的,但是在中文识别中,无论速度还是识别率还是较弱,建议有条件的话,针对场景进行训练,会获得较好结果。
Tess4J的使用
Maven依赖导入
Tess4J Tesseract For Java >>4.5.4
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>4.5.4</version>
</dependency>
添加Tessdata语言库
github下:语言库下载地址 百度云盘下 :
链接:https://pan.baidu.com/s/1BTMTbCb_y2fAnrFGf740zg
提取码:crz5
在任意地方创建一个文件夹tessdata,将下载的chi_sim.traineddata(中文语言库)和 eng.traineddata(英文语言库)语言包存放在该目录下,也可以直接存放到自己项目的resources/tessdata目录下。 我是放在了项目根目录下,将所有的语言库都放了进去。
新建环境变量
也可以新建一个环境变量TESSDATA_PREFIX ,变量值为语言库解压的文件夹路径。 可以在项目中通过System.getenv(key) 获取到环境变量的值。
编写demo代码
package com.chen;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import java.io.File;
public class TesseractExample {
public static void main(String[] args) {
File imageFile = new File("C:\\Users\\Administrator\\Desktop\\111.jpg");
ITesseract instance = new Tesseract();
instance.setDatapath(System.getenv("TESSDATA_PREFIX"));
instance.setLanguage("chi_sim");
try {
long startTime = System.currentTimeMillis();
String result = instance.doOCR(imageFile);
System.out.println(result);
long endTime = System.currentTimeMillis();
System.out.println("Time is:" + (endTime - startTime) + " 毫秒");
} catch (TesseractException e) {
System.err.println(e.getMessage());
}
}
}
其中111图片为: 输出结果为:
package net.sourceforge.tess4j.example;
import java.io.File;
import net.sourceforge.tess4j.*;
public class TesseractExample {
public static void main(String[] args) {
File imageFile = new File("eurotext.tif");
ITesseract instance = new Tesseract();
instance.setDatapath("tessdata");
try {
String result = instance.doOCR(imageFile);
System.out.println(result);
} catch (TesseractException e) {
System.err.println(e.getMessage());
}
}
}
如有错误,欢迎指出。
|