tesseract-OCR在java中的应用
简介
Tesseract是一个开源的ocr引擎,可以开箱即用,支持java语言,可自定义样本训练。官网,gitee,github,语言训练库
安装
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);
}