package com.jt;
import com.recognition.software.jdeskew.ImageDeskew;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import net.sourceforge.tess4j.util.ImageHelper;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class MyTest {
static final double MINIMUM_DESKEW_THRESHOLD = 0.05d;
static ITesseract instance;
public static void main(String[] args) {
File imageFile = new File("D://a.jpg");
BufferedImage image = null;
try {
image = ImageIO.read(imageFile);
} catch (IOException e) {
e.printStackTrace();
}
//对图片进行处理
// image = flipImage(image);
try {
image = convertImage(image);
} catch (Exception e) {
e.printStackTrace();
}
instance = new Tesseract();//JNA Interface Mapping
instance.setDatapath("D://tessdata");
instance.setLanguage("eng");
//划定区域
// x,y是以左上角为原点,width和height是以x,y为基础
//Rectangle rect = new Rectangle(20, 20, 1500, 200);
String result = null;
try {
result = instance.doOCR(image);
} catch (TesseractException e) {
e.printStackTrace();
}
System.out.println(result);
}
//对图片进行处理 - 提高识别度
public static BufferedImage convertImage(BufferedImage image) throws Exception {
//按指定宽高创建一个图像副本
image = ImageHelper.getSubImage(image, 0, 0, image.getWidth(), image.getHeight());
//图像转换成灰度的简单方法 - 黑白处理
image = ImageHelper.convertImageToGrayscale(image);
//图像缩放 - 放大n倍图像
image = ImageHelper.getScaledInstance(image, image.getWidth() * 3, image.getHeight() * 3);
return image;
}
//处理倾斜
public static BufferedImage flipImage(BufferedImage image) throws Exception {
//按指定宽高创建一个图像副本
image = ImageHelper.getSubImage(image, 0, 0, image.getWidth(), image.getHeight());
ImageDeskew id = new ImageDeskew(image);
double imageSkewAngle = id.getSkewAngle(); //获取倾斜角度
if ((imageSkewAngle > MINIMUM_DESKEW_THRESHOLD || imageSkewAngle < -(MINIMUM_DESKEW_THRESHOLD))) {
image = ImageHelper.rotateImage(image, -imageSkewAngle); //纠偏图像
}
return image;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>MyTest</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>4.5.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>2.0.0-alpha5</version>
</dependency>
<dependency>
<groupId>com.revelytix.logbacks</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>
<finalName>mainFile</finalName><!-- 导出jar的名字 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.jt.MyTest</mainClass>
<!-- 主类的位置,例如上图文件,主类配置应为: -->
<!-- <mainClass>{top.nihilwater.App}</mainClass> -->
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
命令行输入打包后的jar文件