Java使用tess4J进行OCR图像识别

简介

OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。

Tess4J是对Tesseract OCR API.的Java JNA 封装。使java能够通过调用Tess4J的API来使用Tesseract OCR。支持的格式:TIFF,JPEG,GIF,PNG,BMP,JPEG,and PDF

Tesseract 的github地址:https://github.com/tesseract-ocr/tesseract
Tess4J的github地址:https://github.com/nguyenq/tess4j

Tess4J API 提供的功能:

  1. 直接识别支持的文件
  2. 识别图片流
  3. 识别图片的某块区域
  4. 将识别结果保存为 TEXT/ HOCR/ PDF/ UNLV/ BOX
  5. 通过设置取词的等级,提取识别出来的文字
  6. 获得每一个识别区域的具体坐标范围
  7. 调整倾斜的图片
  8. 裁剪图片
  9. 调整图片分辨率
  10. 从粘贴板获得图像
  11. 克隆一个图像(目的:创建一份一模一样的图片,与原图在操作修改上,不相 互影响)
  12. 图片转换为二进制、黑白图像、灰度图像
  13. 反转图片颜色

创建maven项目

pom中引用jar包

     <dependency>
            <groupId>net.sourceforge.tess4j</groupId>
            <artifactId>tess4j</artifactId>
            <version>4.5.1</version>
        </dependency>

下载语言库文件

语言库下载地址:https://github.com/tesseract-ocr/tessdata

其中chi_sim.traineddata为中文语言库,eng.traineddata为英文语言库。

在任意地方创建一个文件夹tessdata,将下载的chi_sim.traineddata 和 eng.traineddata语言包存放在该目录下,也可以直接存放到自己项目的resources/tessdata目录下。

PS:后期的OCR样本训练,实际上就是制作生成自己的语言库文件

代码示例

// 识别图片的路径(修改为自己的图片路径)
        String path = "D:\\test.png";
        File file = new File(path);

        ITesseract instance = new Tesseract();
        //获得Tesseract的文字库,设置语言库位置
        URL tessdataPath = ClassLoader.getSystemResource("tessdata");
        instance.setDatapath(tessdataPath.getPath().substring(1));
        //chi_sim :简体中文, eng:英文    根据需求选择语言库
        instance.setLanguage("eng");

        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: ");
        System.out.println(result);

测试图片:

 结果:

 

 

 

 

 

参考:

Java使用Tess4J 实现简单的图像识别(Maven版)

JAVA使用Tess4J进行ocr识别

 

posted @ 2021-02-18 14:30  大象踢足球  阅读(1767)  评论(0编辑  收藏  举报