本人之前在网上寻找OCR软件实现图片中的表格识别,结果不如人意,效果很差,接着在网上寻找调用百度OCR接口的例子,发现大多数冗余复杂,要么是模拟连接,其中主要首先获取token,然后将图片进行base64编码,最后发送请求,合起来代码有上百行,甚至有的例子中还用了网络爬虫的技术,模拟浏览器客户端行为,然而本人在百度api接口寻找,发现百度在jar中早已经写好方法,调用非常简单!
[Java] 纯文本查看 复制代码 package baiduocr;
import java.util.HashMap;
import org.json.JSONObject;
import com.baidu.aip.ocr.AipOcr;
public class ExcelHandler2 {
//百度申请的APP_ID,API_KEY,SECRET_KEY
public static final String APP_ID = "";
public static final String API_KEY = "";
public static final String SECRET_KEY = "";
public static void main(String[] args) throws InterruptedException {
//生成一个百度OCR Client
AipOcr client = new AipOcr(APP_ID,API_KEY,SECRET_KEY);
//设置请求的请求参数(此处为空)
HashMap<String , String > options = new HashMap<String, String>();
String image = "test.jpg";
//放入请求解析的图片和map集合
JSONObject res = client.tableRecognitionAsync(image, options);
System.out.println(res.toString(2));
//从返回的json结果中解析出requestId用于后面获取结果
String requestId = (String)new JSONObject(res.toString(2)).getJSONArray("result").getJSONObject(0).get("request_id");
System.out.println(requestId);
int percent = 0;
while(percent!=100){
//获取json格式的结果,请求的参数为空
JSONObject res2 = client.tableResultGet(requestId, new HashMap<String, String>());
JSONObject object = res2.getJSONObject("result");
percent = object.getInt("percent");
System.out.println("percent:"+percent+"%");
Thread.sleep(500);
if(percent==100){
//解析出结果中的地址,复制到浏览器下载即可
System.out.println(object.getString("result_data"));
}
}
}
}
具体使用方法可以在baidu官网中开发资源-SDK下载-使用说明中查看,以上是表格识别解决方案,json格式数据的解析自己了解! |