Java - Tess4J文字识别
程序员文章站
2022-03-05 10:09:59
...
概念
Tess4J是对Tesseract OCR API的Java JNA 封装。tesseract是跨平台的OCR(Optical Character Recognition,光学字符识别)引擎,让开发者非常容易的集成OCR能力到他们自己的应用。通过强大的API从图片中识别和提取文本内容。Tess4J支持主流的图片格式,如TIFF,JPEG,GIF,PNG,BMP,and PDF。
JNA可以让你像调用一般java方法一样直接调用本地方法。jna封装的 那些 c++写的 动态类库 dll文件 已经在jar包里了。不要在像网上的教程 安装一下 ,不需要安装。
Tess4J在英文和数字识别中性能比较好,但是在中文识别中,无论速度还是识别率还是较弱,因此需要针对场景进行训练,才能获得较好结果。
官网地址
http://tess4j.sourceforge.net/docs/index.html
识别文字
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>4.4.1</version>
</dependency>
File file = new File("D:\\wenshu_zhang\\jpg\\115220200301000294\\1.jpg");
ITesseract instance = new Tesseract();
//设置训练库的位置
instance.setDatapath(lagnguagePath);
//chi_sim :简体中文, eng 根据需求选择语言库
instance.setLanguage("chi_sim");
String result = null;
try {
long startTime = System.currentTimeMillis();
result = instance.doOCR(file);
long endTime = System.currentTimeMillis();
System.out.println("Time is:" + (endTime - startTime) + " 毫秒");
} catch (TesseractException e) {
e.printStackTrace();
}
System.out.println(result);
如何提高识别率
在被识别的图片理想的情况下,tesseract的识别率是很高的。识别率低原因很大部分是因为被识别的图片没做好处理。
总结了下,可以从以下几条入手去提高识别率。
- 做好图片的二值化
- 合理的降噪
- 图片resize
- 图片旋转到合适的角度
- 图片切割
- 合理的训练自己的识别库。
上一篇: Elasticsearch Kibana 基本查询语法
下一篇: 查看Linux发行版名称和版本号