Maven项目中使用Tess4j
Tess4J介绍Tess4J的使用Maven依赖导入添加Tessdata语言库新建环境变量编写demo代码官方提供实例代码[示例代码链接](/codesample.html)Tess4J介绍
Tess4J官网
Tesseract-OCR支持中文识别,并且开源和提供全套的训练工具,是快速低成本开发的首选。而Tess4j则是Tesseract在Java PC上的应用。在英文和数字识别中性能还是不错的,但是在中文识别中,无论速度还是识别率还是较弱,建议有条件的话,针对场景进行训练,会获得较好结果。
Tess4J的使用
Maven依赖导入
Tess4J Tesseract For Java >>4.5.4
<!-- /artifact/net.sourceforge.tess4j/tess4j --><dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>4.5.4</version></dependency>
添加Tessdata语言库
github下:语言库下载地址
百度云盘下 :
链接:/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(); // JNA Interface Mapping// 语言库的路径// instance.setDatapath("D:\\TessData\\tessdata\\tessdata-master");// 通过环境变量获取instance.setDatapath(System.getenv("TESSDATA_PREFIX"));// 设置语言为中文, eng为英文instance.setLanguage("chi_sim");try {long startTime = System.currentTimeMillis();// 执行OCR操作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(); // JNA Interface Mapping// ITesseract instance = new Tesseract1(); // JNA Direct Mappinginstance.setDatapath("tessdata"); // path to tessdata directorytry {String result = instance.doOCR(imageFile);System.out.println(result);} catch (TesseractException e) {System.err.println(e.getMessage());}}}
如有错误,欢迎指出。