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 网 和 内 部 网 络 之 间 , 以 保 证 内 部 网 络 的 安 全 . 。 防 火 埕 对 流 经 它 的 网 络 通 信 进 行 扫 揽 , 泉 样 能 够 过 滁 掉 一 些 攻 击 , 以 免 其 在 目 标 计
算 机 上 被 执 行 “ 仿 火 墙 运 可 以 伟 闭 不 使 用 的 堵 口 而 丝 它 还 能 菲 止 特 定 堡 口 的 流 出
通 信 封 锁 特 洛 伊 木 马 曝 后 「 它 可 以 蔡 止 来 自 特 殊 站 点 的 访 问 仕 而 防 止 来 自 不 明
人 促 者 的 所 有 通 信 。 。
java 使用tess4j实现OCR的最简单样例的更多相关文章
- java 不可变对象 final Collections guava 简单样例
本地环境 jdk1.8 连接 Google Guava官方教程(中文版) journaldev 说明 java的final关键字大家都了解,但是final修饰的如果是引用类型,那么不可修改的其实只是重 ...
- velocity简单样例
velocity简单样例整体实现须要三个步骤,详细例如以下: 1.创建一个Javaproject 2.导入须要的jar包 3.创建须要的文件 ============================= ...
- extern外部方法使用C#简单样例
外部方法使用C#简单样例 1.添加引用using System.Runtime.InteropServices; 2.声明和实现的连接[DllImport("kernel32", ...
- java 线程、线程池基本应用演示样例代码回想
java 线程.线程池基本应用演示样例代码回想 package org.rui.thread; /** * 定义任务 * * @author lenovo * */ public class Lift ...
- spring事务详解(二)简单样例
系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 ...
- java I/O进程控制,重定向 演示样例代码
java I/O进程控制,重定向 演示样例代码 package org.rui.io.util; import java.io.*; /** * 标准I/O重定向 */ public class Re ...
- Java 序列化Serializable具体解释(附具体样例)
Java 序列化Serializable具体解释(附具体样例) 1.什么是序列化和反序列化 Serialization(序列化)是一种将对象以一连串的字节描写叙述的过程:反序列化deserializa ...
- 自己定义隐式转换和显式转换c#简单样例
自己定义隐式转换和显式转换c#简单样例 (出自朱朱家园http://blog.csdn.net/zhgl7688) 样例:对用户user中,usernamefirst name和last name进行 ...
- java 8 date time 简单样例
参考 Java 8 Time Api 使用指南-珍藏限量版 Java 8 中处理日期和时间示例 部分样例 import java.time.temporal.TemporalAdjusters; im ...
随机推荐
- python字典基本操作
字典是python中五中基本数据类型之一,虽然它的赋值稍微麻烦点,但用起来真的是很方便.它用键值对来存放数据,所谓键值对,就是一个键,对应一个值,如果后面对前面的键再次赋值,第一次的值就被覆盖掉.像是 ...
- Lodop打印表格带页头页尾 高度是否包含页头页尾 转载
通过设置TableHeightScope,可以实现对ADD_PRINT_TABLE,表格带页头页尾,查看本博客另一篇博文:Lodop打印表格带页头页尾 自动分页每页显示头尾 超文本超过打印项高度,会自 ...
- Junit框架使用(4)--JUnit常用断言及注解
从别人博客中抄过来一点东西 原文地址:http://blog.csdn.net/wangpeng047/article/details/9628449 断言是编写测试用例的核心实现方式,即期望值是多少 ...
- 【使用篇二】SpringBoot整合mybatis(7)
说明:使用SpringBoot+Mybatis+Jsp实现简单的用户增删查改 #用户表 DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `) NO ...
- USACO Grass Planting
洛谷 P3038 [USACO11DEC]牧草种植Grass Planting 洛谷传送门 JDOJ 2282: USACO 2011 Dec Gold 3.Grass Planting JDOJ传送 ...
- 8.19 NOIP模拟测试26(B) 嚎叫响彻在贪婪的厂房+主仆见证了 Hobo 的离别+征途堆积出友情的永恒
T1 嚎叫响彻在贪婪的厂房 以前做过一个等比数列的题「序列」,这个类似 是等差数列且公差不为1的条件就是各项差的绝对值的$gcd!=1$,每次拿出序列前两个数,求出差值,插入到set里,每次向后扩展, ...
- Linux性能优化实战学习笔记:第三十二讲
一.上节总结 专栏更新至今,四大基础模块的第三个模块——文件系统和磁盘 I/O 篇,我们就已经学完了.很开心你还没有掉队,仍然在积极学习思考和实践操作,并且热情地留言与讨论. 今天是性能优化的第四期. ...
- linux-根目录添加内存
01,添加磁盘到服务器 02, 查看添加的内容 这个是新添加的 03, 创建新分区 [root@oracle01 ~]# fdisk /dev/sdb --格式化分析 Welcome ). Chang ...
- golang中判断两个slice是否相等
在golang中我们可以轻松地通过==来判断两个数组(array)是否相等,但遗憾的是slice并没有相关的运算符,当需要判断两个slice是否相等时我们只能另寻捷径了. slice相等的定义 我们选 ...
- C# SqlServer Ado.net参数化查询插入null数据
DateTime? dt=null; if (dt.HasValue) { cmd.Parameters.AddWithValue("@CreateDateTime", dt); ...