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

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

  1. <dependency>
  2. <groupId>net.sourceforge.tess4j</groupId>
  3. <artifactId>tess4j</artifactId>
  4. <version>4.3.1</version>
  5. </dependency>

2、实现代码

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

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

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

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

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

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

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

识别的图片:

识别后的文字:

  1. .
  2.  


  3. . , ,
  4. Intemet .
  5. Intemet , .
  6.  
  7. , ,
  8. 仿 使
  9. 访
 

java 使用tess4j实现OCR的最简单样例的更多相关文章

  1. java 不可变对象 final Collections guava 简单样例

    本地环境 jdk1.8 连接 Google Guava官方教程(中文版) journaldev 说明 java的final关键字大家都了解,但是final修饰的如果是引用类型,那么不可修改的其实只是重 ...

  2. velocity简单样例

    velocity简单样例整体实现须要三个步骤,详细例如以下: 1.创建一个Javaproject 2.导入须要的jar包 3.创建须要的文件 ============================= ...

  3. extern外部方法使用C#简单样例

    外部方法使用C#简单样例 1.添加引用using System.Runtime.InteropServices; 2.声明和实现的连接[DllImport("kernel32", ...

  4. java 线程、线程池基本应用演示样例代码回想

    java 线程.线程池基本应用演示样例代码回想 package org.rui.thread; /** * 定义任务 * * @author lenovo * */ public class Lift ...

  5. spring事务详解(二)简单样例

    系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 ...

  6. java I/O进程控制,重定向 演示样例代码

    java I/O进程控制,重定向 演示样例代码 package org.rui.io.util; import java.io.*; /** * 标准I/O重定向 */ public class Re ...

  7. Java 序列化Serializable具体解释(附具体样例)

    Java 序列化Serializable具体解释(附具体样例) 1.什么是序列化和反序列化 Serialization(序列化)是一种将对象以一连串的字节描写叙述的过程:反序列化deserializa ...

  8. 自己定义隐式转换和显式转换c#简单样例

    自己定义隐式转换和显式转换c#简单样例 (出自朱朱家园http://blog.csdn.net/zhgl7688) 样例:对用户user中,usernamefirst name和last name进行 ...

  9. java 8 date time 简单样例

    参考 Java 8 Time Api 使用指南-珍藏限量版 Java 8 中处理日期和时间示例 部分样例 import java.time.temporal.TemporalAdjusters; im ...

随机推荐

  1. Ubuntu16.04安装deb包

    在Ubuntu下安装deb包需要使用dpkg命令.Dpkg 的普通用法: 1.sudo dpkg -i <package.deb> 安装一个 Debian 软件包,如你手动下载的文件. 2 ...

  2. SQL基础知识整理

    建议:关键字和函数名全部大写:数据库名称.表名称.字段名称全部小写:分号结尾.但是大小写语句不区分,本人讨厌大写(英语菜,不能一眼看出内容),所以全部小写.[]看情况可有可无,{}花括号的内容必须要有 ...

  3. 2.第一个Vue程序

    1.IDEA中安装Vue.js插件 2.建立项目以及html文件 1.创建一个 HTML 文件 2.引入 Vue.js <script src="https://cdn.jsdeliv ...

  4. 数据呈现到 ASP.NET Core MVC 中展示

    终于要将数据呈现到 ASP.NET Core MVC 中的 视图 上了 将数据从控制器传递到视图的三种方法 在 ASP.NET Core MVC 中,有 3 种方法可以将数据从控制器传递到视图: 使用 ...

  5. [LeetCode] 899. Orderly Queue 有序队列

    A string S of lowercase letters is given.  Then, we may make any number of moves. In each move, we c ...

  6. [LeetCode] 58. Length of Last Word 求末尾单词的长度

    Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the l ...

  7. C++ 版本ORM访问数据库之ODB访问oracle的Demo(三)

    ODB的组成部分: 1: 操作系统的ODB编译器 2: odb核心库libodb 3: 各种数据库的相关链接库 使用ODB访问数据需要的库和头文件(不懂, 请看https://www.cnblogs. ...

  8. 《转载》仅需3分钟,你就能明白Kafka的工作原理

    仅需3分钟,你就能明白Kafka的工作原理 周末无聊刷着手机,某宝网 App 突然蹦出来一条消息“为了回馈老客户,女朋友买一送一,活动仅限今天!”. 买一送一还有这种好事,那我可不能错过!忍不住立马点 ...

  9. Kubernetes 学习(九)Kubernetes 源码阅读之正式篇------核心组件之 Scheduler

    0. 前言 继续上一篇博客阅读 Kubernetes 源码,参照<k8s 源码阅读>首先学习 Kubernetes 的一些核心组件,首先是 kube-scheduler 本文严重参考原文: ...

  10. java对接微软认证,用oauth2.0实现

    由于官网所说所写的demo比较官方,比较难理解,而且只能到获取到token阶段,没有用户到用户信息.就算理解官网所写的,但是还是不能获取到用户信息,这对于业务系统做单点对接,增加很大的难度,附件代码是 ...