欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

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的识别率是很高的。识别率低原因很大部分是因为被识别的图片没做好处理。

总结了下,可以从以下几条入手去提高识别率。

  1. 做好图片的二值化
  2. 合理的降噪
  3. 图片resize
  4. 图片旋转到合适的角度
  5. 图片切割
  6. 合理的训练自己的识别库。

 

相关标签: Java 开发