• java 使用tess4j实现OCR的最简单样例


    网上很多教程没有介绍清楚tessdata的位置,以及怎么配置,并且对中文库的描述也存在问题,这里介绍一个最简单的样例。

    1、使用maven,直接引入依赖,确保你的工程JDK是1.8以上

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

    2、实现代码

    public class OCRDemo {
        public static void main(String args[]) throws Exception {
            ITesseract instance = new Tesseract();
            instance.setDatapath("tessdata"); //相对目录,这个时候tessdata目录和src目录平级
    
    //        instance.setDatapath("E:\myProgram\java\ocrdemo\tessdata");//支持绝对目录
            instance.setLanguage("chi_sim");//选择字库文件(只需要文件名,不需要后缀名)
    
            try {
                File imageFile = new File("d:\temp\4.jpg");
                String result = instance.doOCR(imageFile);//开始识别
                System.out.println(result);//打印图片内容
            } catch (Exception e) {
                System.out.println(e.toString());//打印图片内容
            }
        }
    }

    3、这里一定要注意tessdata的目录位置

    4、还需注意就是你选的语言库是不是真的库,网上给的地址,比如这个:https://github.com/tesseract-ocr/tessdata 

    你从上面下载的不是真正的训练字库,你需要真正找到字库才行。

    5、真正的中文字库是比较大的,用notepad++打开文件看看确认是否是真的字库,不然程序会报错误,无法打开chi_sim.traineddata文件,

    这个地址可以下载到文件:https://raw.githubusercontent.com/tesseract-ocr/tessdata/master/chi_sim.traineddata

    6、识别的效果一般,复杂的表格识别需要自定义识别区域

    识别的图片:

    识别后的文字:

    . 防 火 塔 系 统
    
    防 火 埋 作 为 不 同 网 络 或 网 络 安 全 城 之 间 信 息 的 出 入 口 能 根 据 企 业 的 安 全 策 畦 接 制
    出 人 网 络 的 信 息 流 口 本 身 具 有 较 强 的 抗 攻 击 能 力 「 它 是 提 供 信 息 安 全 服 务 实 现 网
    络 和 信 息 宗 全 的 基 蛎 设 施 . 在 逐 辐 上 , 防 火 境 是 一 个 分 离 器 限 制 器 和 分 析 器 , 可
    以 有 效 勘 接 内 部 网 和 Intemet 之 间 的 任 何 活 动 「 保 证 内 部 网 络 的 安 全 . 防 火 墙 通 常
    放 在 外 部 Intemet 网 和 内 部 网 络 之 间 , 以 保 证 内 部 网 络 的 安 全 . 。
    
    防 火 埕 对 流 经 它 的 网 络 通 信 进 行 扫 揽 , 泉 样 能 够 过 滁 掉 一 些 攻 击 , 以 免 其 在 目 标 计
    算 机 上 被 执 行 “ 仿 火 墙 运 可 以 伟 闭 不 使 用 的 堵 口 而 丝 它 还 能 菲 止 特 定 堡 口 的 流 出
    通 信 封 锁 特 洛 伊 木 马 曝 后 「 它 可 以 蔡 止 来 自 特 殊 站 点 的 访 问 仕 而 防 止 来 自 不 明
    人 促 者 的 所 有 通 信 。 。
     
  • 相关阅读:
    代码编写原则
    换个角度看世界
    不使用nib 文件时,需要改变一个view 的大小时,需要为viewcontroller添加loadView方法
    建议:一般地,建议使用xcode 4.3开发app 而不是使用xcode4.5
    iOS 5解决Could not instantiate class named NSLayoutConstraint问题
    访问对象方法比较
    让一个view 或者控件不支持拖拽
    Java Map遍历方式的选择
    Java里多个Map的性能比较(TreeMap、HashMap、ConcurrentSkipListMap)
    java List集合记录 ArrayList和LinkedList的区别
  • 原文地址:https://www.cnblogs.com/asker009/p/11098220.html
Copyright © 2020-2023  润新知