Java使用OCR技术识别图形图像文本信息

OCR技术

OCR技术是光学字符识别的缩写(Optical Character Recognition),利用文字识别技术将图像信息转化为文本信息。应用于银行票据、大量文字资料、档案卷宗、文案的录入和处理领域,例如:自动识别身份证号码,将AI引入审核场景,与风控规则相结合,减少人为对图片的审核,大大提高审核效率。

OCR开发包

由于图像技术门槛较高,特别是中文语言库需要大量的训练才能达到较高的识别率。目前很多OCR软件,一般都是借用大公司的API接口实现的,如百度OCR接口。在线接口识别率比较高,但受限于网络和调用次数,有些场景须考虑离线使用。

开源的OCR识别框架 Tesseract-OCR (https://github.com/tesseract-ocr ),由HP实验室开发,后由Google维护的开源OCR引擎,可以不断的训练语言库,使图像转换文本的能力不断增强。 SDK包含libtesseract、命令行程序,支持跨平台开发,支持Java,Python等语言调用,建议选择4.0以后版本,准确率有较大提升,需要识别中文信息可单独添加中文词库。

Tess4J是Java对libtesseract包装,这里使用Tess4J识别图片信息。

引入Tess4j开发包


<dependency>

	<groupId>net.sourceforge.tess4j</groupId>

	<artifactId>tess4j</artifactId>

	<version>4.5.1</version>

</dependency>

Java代码


/**

 * 根据图片文件进行识别

 * 

 * @param imageFile 图片文件

 * @param lang 指定语言库

 * @return 识别文本信息

 */

public static String doOCRFromFile(File imageFile,String lang) throws Exception {

	ITesseract instance = new Tesseract();

	instance.setDatapath(DATA_PATH); //指定语言库目录 

	instance.setTessVariable(user_defined_dpi, 300);

	instance.setLanguage(lang);

	String result = instance.doOCR(imageFile);

	return result;

}

 


/**

 * main method

 */

public static void main(String[] args) {

	//SpringApplication.run(OxOcrApp.class, args); //测试不用启用springboot

	System.out.println(OxOcrApp 已启动);

	try {

		//设置训练库的位置

		OCRUtils.DATA_PATH=System.getProperty(user.dir)+/config;

		OCRUtils.DEFAULT_LANG=eng; //eng :英文  chi_sim :简体中文

		

		String ocrText = OCRUtils.doOCRFromFile(new File(d:/temp/java.jpg)); //指定要识别的图片文件

		System.out.println(识别文本信息:+ocrText); //OCR识别结果:图像转文本

		

		//testCapture();

	} catch (Exception e) {

		e.printStackTrace();

	}

}

识别效果

图片:

识别结果:

进阶实例:Java指定窗口识别文本信息 

 

 

电子邮件系统 技术协议分析与部署实施 SpringBoot启动时,执行初始化方法的几种方式
微信公众号