zoukankan      html  css  js  c++  java
  • 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识别

  • 相关阅读:
    浅水方程
    Delaunay三角剖分算法
    计算机图形学知名期刊杂志(转载)
    Sql 主键自增
    Skinny triangle
    开源免费天气预报接口API以及全国所有地区代码!!
    Navier Stokes(纳维叶-斯托克斯)方程
    java.util.Date_与_java.sql.Date互转_及_字符串转换为日期时间格式
    2015最后一天
    html标签
  • 原文地址:https://www.cnblogs.com/Jason-Xiang/p/14411667.html
Copyright © 2011-2022 走看看