OCR图片识别

相对比较成熟的技术了,能识别图片中的简单文本或者表格,甚至更复杂的格式。
以下都是JAVA实现。

一 Tess4J
引入JAR包,下载字库,开撸
1. 引包


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

2. 下载字库
		https://github.com/tesseract-ocr/tessdata
		每个语言的字库包都在几十M左右,全部下载太慢,可以选中自己需要的字库单独下载
3. 设置环境变量
	系统变量中增加  TESSDATA_PREFIX= 字库所在目录
	path 中增加%TESSDATA_PREFIX%
4. 代码例子
		import java.io.File;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
public class TesseractExample1 {
	public static void main(String[] args) {
		File imageFile = new File("D:\\Tess4J\\2222.png");
		ITesseract instance = new Tesseract(); // JNA Interface Mapping
		instance.setLanguage("chi_sim");
		try {
			String result = instance.doOCR(imageFile);
			System.out.println(result);
		} catch (TesseractException e) {
			System.err.println(e.getMessage());
		}
	}
}

二 百度在线OCR
第一种方案解析图片中表格搞不定,市面上也有解决方案,但是有点麻烦。看了下,可以直接用百度的API,功能强大丰富,唯一的缺点就是收费。
每天有一定得免费次数,对于个人开发者或者小系统足够用了
功能丰富:
在这里插入图片描述

不多说,直接撸码

  1. 注册百度账号
    https://login.bce.baidu.com
  2. 登录进去,创建应用,获得AppID,API Key,Secret Key
  3. 官方帮助文档 https://cloud.baidu.com/doc/OCR/s/8jwvxzg8t
  4. 引入依赖
<dependency>
	<groupId>com.baidu.aip</groupId>
	<artifactId>java-sdk</artifactId>
	<version>4.12.0</version>
</dependency>
  1. 代码实现
	
import java.util.HashMap;

import org.json.JSONObject;

import com.baidu.aip.ocr.AipOcr;

public class Sample {
	// 设置APPID/AK/SK
	public static final String APP_ID = "17925589";
	public static final String API_KEY = "2kah8nUVqj58EtLrN1GqOUGL";
	public static final String SECRET_KEY = "3ucaGScgtelzghBtdWfZVTZPD3Y99jfN";

	public static void main(String[] args) {
		// 初始化一个AipOcr
		AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);
		// 可选:设置网络连接参数
		client.setConnectionTimeoutInMillis(2000);
		client.setSocketTimeoutInMillis(60000);

		sampleSyncRes(client);
	}

	//简单文本解析
	public static void simpleWZ(AipOcr client) {
		// 调用接口
		String path = "D:\\Tess4J\\1575425834.png";
		JSONObject res = client.basicGeneral(path, new HashMap<String, String>());
		System.out.println(res.toString(2));

	}

	//同步方式解析包含表格的图片
	public static void sample(AipOcr client) {
		// 传入可选参数调用接口
		HashMap<String, String> options = new HashMap<String, String>();
		// 参数为本地图片路径
		String image = "D:\\Tess4J\\2222.png";
		JSONObject res = client.form(image, options);
		System.out.println(res.toString(2));
	}
	
	//异步方式解析包含表格的图片,请求
	public static void sampleSync(AipOcr client) {
		// 传入可选参数调用接口
		HashMap<String, String> options = new HashMap<String, String>();
		// 参数为本地图片路径
		String image = "D:\\Tess4J\\2222.png";
		JSONObject res = client.tableRecognitionAsync(image, options);
		System.out.println(res.toString(2));
	}
	//异步方式解析包含表格的图片,获取结果
	public static void sampleSyncRes(AipOcr client) {
	    // 传入可选参数调用接口
	    HashMap<String, String> options = new HashMap<String, String>();
	    options.put("result_type", "json");
	    String requestId = "17925589_1236567";
	    // 表格识别结果
	    JSONObject res = client.tableResultGet(requestId, options);
	    System.out.println(res.toString(2));
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值