tesseract-OCR在java中的应用

  |   1,963 浏览

简介

Tesseract是一个开源的ocr引擎,可以开箱即用,支持java语言,可自定义样本训练。官网giteegithub语言训练库

安装

1、windows环境
可直接下载windows安装包,双击安装。安装过程中如果选择下载中文语言训练库会提示失败,需要上动从上面的语言训练库仓库手动下载解压到安装目录下的tessdata。配置完环境变量后可在doc下使用命令进行ocr图片识别,命令语法:

tesseract imagename outputbase [-l lang] [--oem ocrenginemode] [--psm pagesegmode] [configfiles...]

例如:在cmd中执行:tesseract d:/test.jpg d:/result.txt –l chi_sim
解示:使用中文语言训练库识别D盘下的test.jpg图片,将识别结果保存在D盘下的result.txt文件中

2、linux环境
可使用yum install -y tesseract 直接在线云安装。安装完成后使用方法和windows下一致,使用命令进行识别。

3、docker环境
由于大部份docker容器使用的是最小化的linux系统:alpine linux。所以导致安装完tesseract后缺少许多第三方库的so文件。则需要安装一个兼容包,命令如下:

apk add tesseract-ocr
apk add libc6-compat

java语言接入

在pom.xml中添加以下依赖:

<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>5.0.0</veron>
</dependency>

编写测试类:

public static void main(String[] args) throws Exception{
    ITesseract instance = new Tesseract();
    instance.setDatapath("D:/tesseractdata"); // 设置语言识别训练库目录
    instance.setLanguage("chi_sim"); // 设置当前使用简体中文语言
    File imageFile = new File("D:/test.png"); // 创建待识别的图片文件对象
    BufferedImage bi = ImageIO.read(imageFile); // 读取图片到缓存
    bi = ImageHelper.convertImageToGrayscale(bi); // 图片二值化以增加识别准确率
    bi = ImageHelper.getScaledInstance(bi, bi.getWidth() * 5, bi.getHeight() * 5); // 图片放大5倍以增加识别准确率
    String result = instance.doOCR(bi); // 识别
    System.out.println("识别结果:" + result);
}