跳到正文

【java进阶】Java中使用Tess4J实现图片中文字的识别功能

1.首先进入Tess4J官网去下载最新的Ocr识别包,下载地址:https://sourceforge.net/projects/tess4j/files/tess4j/ 405 2.下载完毕之后开始解压到你的本地,解压后的目录如下。 406 3.把/dist路径下面的tess4j-3.4.6.jar以及lib目录下面的所有jar包导入到你新建的项目里面去。 407 4. 开始编写代码,识别测试,源码如下。 package test; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import javax.imageio.ImageIO; import net.sourceforge.tess4j.ITesseract; import net.sourceforge.tess4j.Tesseract; import net.sourceforge.tess4j.TesseractException; import net.sourceforge.tess4j.util.ImageHelper; public class CheckNodeTest { public static void main(String args) { try { File imageFile = new File("D:\\Tesseract-OCR\\doc\\2.jpg");// 图片位置 ITesseract instance = new Tesseract(); // JNA Interface Mapping instance.setDatapath("D:\\Tesseract-OCR\\Tess4J\\tessdata");// 设置tessdata位置 instance.setLanguage("eng");// 选择字库文件(只需要文件名,不需要后缀名) String result = instance.doOCR(imageFile);// 开始识别 BufferedImage img = change(new File("D:\\Tesseract-OCR\\doc\\2.jpg")); String rs = instance.doOCR(img); System.out.println("图片实际为:xxxx" + "\t图片识别结果为:" + result);// 打印图片内容 System.out.println("图片实际为:xxxx" + "\t图片识别结果为:" + rs);// 打印图片内容 } catch (TesseractException e) { e.printStackTrace(); } } public static BufferedImage change(File file) { // 读取图片字节数组 BufferedImage textImage = null; try { InputStream in = new FileInputStream(file); BufferedImage image = ImageIO.read(in); textImage = ImageHelper .convertImageToGrayscale(ImageHelper.getSubImage(image, 0, 0, image.getWidth(), image.getHeight())); // 对图片进行处理 textImage = ImageHelper.getScaledInstance(image, image.getWidth() * 5, image.getHeight() * 5); // 将图片扩大5倍 } catch (IOException e) { e.printStackTrace(); } return textImage; } } 测试效果如下: 408 图片实际为:xxxx 图片识别结果为:ASDFESA. DA54 图片实际为:xxxx 图片识别结果为:ASDF E 5A . DA54 409 图片实际为:xxxx 图片识别结果为:Mt 图片实际为:xxxx 图片识别结果为:mm这种方式识别对于普通的文字识别是有效的,但是对于一些网站的比较模糊一点的验证码识别基本上就失效了哈,大家可以看下有没有更好的方法去改进一下。 注意事项: 1.上面的测试实例中我写了一个将图片放大一定比例的函数,用于比对识别效果; 2.本项目我是使用Maven工具搭建的,但是这里直接将下载的jar包文件导入到了我的工程中去,因此没有必要再去pom.xml文件中去配置这个插件的版本信息。

评论

填写昵称与邮箱即可评论,无需登录。

推荐阅读