Tess4j 的简单使用

Tesseract 目前是由 Google 进行维护,它是一个开源的 ORC 识别引擎。它最早诞生于 HP实验室。目前我看到的版本是 4.1.1 。他的官网在 https://tesseract-ocr.github.io 。虽然目前为止业内有很多值得令人称赞的 OCR 识别接口,但是这个开源免费还是很不错的一个引擎,它能通过训练丰富自己的文字识别。不过我们主要讲的不是这个东西,而且讲了这一堆估计也没有几个人看下去。还是直接进入主题,让我们看看 Java 怎么结合 Tesseract 进行识别文字的。

掏出我们的大宝贝(Eclipse),创建一个 Maven 工具区。当然了你可以使用 IDEA 毕竟这个很好用,我只是用 Eclipse 习惯了。在 pom.xml 中加入 Tess4j 的 dependency 区块。

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

然后先把 IEDA 这种东西放一放,因为我们还没有装 Tesseract 这个识别引擎。下面我们来装一下 Tesseract 这个应用,这里我用的是 MAC 实现 Tesseract 的安装。所以用其他系统的小伙伴请出门左转先看下官网或者百度 Tesseract 是怎么安装的。好下面开始说我的 MAC 是怎么安装这玩意的。

brew install tesseract

就是上面这一个命令就实现了,是不是很简单。当然了有的小伙伴没有安装 brew 的那怎么办呢?那你就安装一个呗。诺这是官网 https://brew.sh 。如果不想看可以看我下面的命令。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

然后就是。。。。

好了开始代码层面的编辑了,因为我在测试中没有遇到什么 BUG 所以。。。大家出现了问题请自行百度。

    // 设置 Tess 的语言库文件夹路径
		String tessDataPathString = "文字识别路径,如果你不知道或者没有请去官网,这个我下面会给放出来地址。";
    // 设置图片路径
		File imageUrlString = new File("这个是图片的路径。或者你可以弄 TIF 和 PDF");
    // 实例化 ITesseract
		Tesseract tesseract = new Tesseract();
		// 设置训练库的位置
		tesseract.setDatapath(tessDataPathString);
		// 设置语言库为中文简体
		// 这里有很多种识别库可以选择的,识别库 github 上面有很多。
		// 如果没有想要的就只能自己创建了
		tesseract.setLanguage("chi_sim");
		// 读取图片上的文字
		try {
			String ocr = tesseract.doOCR(imageUrlString);
			System.out.println(ocr);
		} catch (TesseractException e) {
			e.printStackTrace();
		}

上面的代码基本就能简单的识别了,如果像验证码很复杂的那种需要自己去扩充识别库。这里我就不在讲解怎么实现扩充识别库了。

比如下面这张。识别之后就

你 要 记 得 那 些 大 雨 中 为 你 撑 伞 的 人 , 帮
你 挡 住 外 来 之 物 的 人 , 黑 暗 中 默 默 抱 紧
你 的 人 , 逗 你 笑 的 人 , 陪 你 彻 夜 聊 天 的
人 , 坐 车 来 看 望 你 的 人 , 陪 你 哭 过 的 人 ,
在 医 院 陪 你 的 人 , 总 是 以 你 为 重 的 人 , 带
着 你 四 处 游 荡 的 人 , 说 想 念 你 的 人 . 是 这
些 人 组 成 你 生 命 中 一 点 一 滴 的 温 暖 , 是
这 些 温 暖 使 你 远 离 阴 震 , 是 这 些 温 暖 使
你 成 为 善 良 的 人 .

一 一 村 上 春 树

总体来说还算挺准的。不过还是有一些比较难得图片没有很精准的识别出来。比如下面这张我从百度上找来的一个身份证图片,就不能识别出来。

栾 都 东
~“.。 龟
氖 1968 年 月 命 了
伯 河 广 东 质 深 朗 市 福 园 区 劣 岩 孙
西 踹 3002 号 鹭蠹\` 【 /筵 、
公 & 伟 史 370102196 「

这都是什么乱七八糟的的东西,所以这个还是需要自己去扩充识别库的。下面给出的是一些关于 Tess4j 和 Tesseract 的资料。

tess4j 的官网 http://tess4j.sourceforge.net

jTessBoxEditor官网 http://vietocr.sourceforge.net/training.html

VietOCR 官网 http://vietocr.sourceforge.net

*识别库地址 https://github.com/tesseract-ocr/tessdata

识别库中的文件名称不要更改,因为这个是有一定要求的。例如: chi_sim.traineddata 就是中文简体的 traineddata 。