专栏首页品茗ITSpring和Ocr整合详解

Spring和Ocr整合详解

Spring和Ocr整合详解

官方主页

Spring

Ocr tess4j

概述

Tess4J是对Tesseract OCR API.的Java JNA 封装。使java能够通过调用Tess4J的API来使用Tesseract OCR。支持的格式:TIFF,JPEG,GIF,PNG,BMP,JPEG,and PDF.

这里说整合Spring和Ocr有点勉强,因为Tess4J是脱离spring环境运行的。不过为方便适配到spring环境,这里就强行把它俩弄一块儿了。

tess4j的识别度一般。然而开源易用。

**如果大家正在寻找一个java的学习环境,或者在开发中遇到困难,可以<a

href="https://jq.qq.com/?_wv=1027&k=52sgH1J"

target="_blank">

加入我们的java学习圈,点击即可加入

</a>

,共同学习,节约学习时间,减少很多在学习中遇到的难题。**

开始搭建

依赖Jar包

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

Spring-ocr配置

在spring的xml中,按照spring的规范,定义tesseractService,方便调用。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xmlns:aop="http://www.springframework.org/schema/aop"
	   xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="
                     http://www.springframework.org/schema/beans
                     http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
                     http://www.springframework.org/schema/aop
                     http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
                     http://www.springframework.org/schema/context
                     http://www.springframework.org/schema/context/spring-context-4.0.xsd ">

	<bean id="annotationPropertyConfigurerOcr"
		  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="order" value="1" />
		<property name="ignoreUnresolvablePlaceholders" value="true" />
		<property name="locations">
			<list>
				<value>classpath:ocr.properties</value>
			</list>
		</property>
	</bean>

	<bean id="tesseractService" class="com.cff.springwork.ocr.service.TesseractService">
		<property name="tessdataPath" value="${tessdata.path}" />
		<property name="tessdataLang" value="${tessdata.language}" />
	</bean>
	
</beans>

这里的xml文件引入配置文件。

ocr.properties:

tessdata.path=/tessdata
tessdata.language=eng

tessdata.path指定了训练数据的路径,训练库比较大,https://github.com/tesseract-ocr/tessdata这里可以下载

调用的service

我们可以编写一个完整的service,方便以后使用。

TesseractService:

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.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import net.sourceforge.tess4j.util.ImageHelper;

public class TesseractService {
	private String tessdataPath;
	private String tessdataLang;

	public String ocr(String filePath) {
		try {
			File imageFile = new File(filePath);
			Tesseract instance = new Tesseract();
			// 使用classpath目录下的训练库
			String path = tessdataPath;
			instance.setLanguage(tessdataLang);// 英文库识别数字比较准确

			instance.setDatapath(path);
			String result = instance.doOCR(imageFile);
			return result;
		} catch (TesseractException e) {
			e.printStackTrace();
			return null;
		}
	}

	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;
	}
}

快速构建项目

Spring组件化构建

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring和Spring Mvc整合详解

    SpringMvc 5,可以参考这一篇《Spring和Spring Mvc 5整合详解》

    品茗IT
  • SpringCloud技术指南系列(十一)API网关之Zuul使用

    API网关是一个更为智能的应用服务器,它的定义类似于面向对象设计模式中的Facade模式,它的存在就像是整个微服务架构系统的门面一样,所有的外部客户端访问都需要...

    品茗IT
  • SpringBoot入门建站全系列(十七)整合ActiveMq(JMS类消息队列)

    消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间...

    品茗IT
  • Dubbo的使用及原理浅析.

    一枝花算不算浪漫
  • Spring AOP与IOC

    Before Advice会在目标方法执行之前被调用,可以通过实现org.springframework.aop.MethodBeforeAdvice接口实现。

    Java架构师必看
  • SpringMVC自定义视图(11)

    桑鱼
  • SSM整合

    爱撒谎的男孩
  • SpringSecurity超详细入门介绍

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    用户4919348
  • Spring框架相关XML配置注解约束汇总

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    多凡
  • springMVC系列(四)——springMVC拦截器

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    逝兮诚

扫码关注云+社区

领取腾讯云代金券