java——阿里云ORC户口簿识别
ORC户口簿识别
jfinal
服务商一般有代码
Controller层
package com.dy.ns.app;
import com.jfinal.aop.Inject;
import com.jfinal.core.Controller;
import com.jfinal.upload.UploadFile;
import com.util.*;
import java.util.Map;
public class SfIdController extends Controller {
@Inject
private SfIdService sfIdService;
/**
* 户口本图片接收返回数据
*/
public void uploadHkb(){
UploadFile upfile = getFile();//JFinal规定getFile()必须最先执行
//-----upfile.getUploadPath()获取文件目录经理,upfile.getFileName()获取文件名
ReturnData returnData = sfIdService.uploadHkbService(upfile.getUploadPath()+"/"+upfile.getFileName());
renderJson(returnData);
}
}
Service层
public class SfIdService {
/**
* 户口簿识别
*/
public String uploadHkbService(String hkbFilePath) {
ReturnData returnData = new ReturnData();
String HKBJson = HKBUtil.HKBOrcUtil(hkbFilePath,//路径
"http://familyid.market.alicloudapi.com",
"/ai_market/ai_ocr_universal/household/v1",
"POST",
"394892ad8e224c2b99b8b88ab9ba4912");
return HKBJson;
}
}
HKBUtil类
package com.util;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import static org.apache.commons.codec.binary.Base64.encodeBase64;
public class HKBUtil {
/**
* 户口簿识别
*
* @param hkbFilePath
* @return
*/
public static String HKBOrcUtil(String hkbFilePath,String host,String path,String method,String appcode) {
//API产品路径
// String host = "http://familyid.market.alicloudapi.com";
// String path = "/ai_market/ai_ocr_universal/household/v1";
// String method = "POST";
// //阿里云APPCODE
// String appcode = "394892ad8e224c2b99b8b88ab9ba4912";
Map<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", "APPCODE " + appcode);
//UUID采用当前程序运行时间,用于防止重放攻击,开发者可根据自己需求,自定义字符串
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String UUID = df.format(new Date());
headers.put("X-Ca-Nonce", UUID);
//根据API的要求,定义相对应的Content-Type
headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
Map<String, String> querys = new HashMap<String, String>();
Map<String, String> bodys = new HashMap<String, String>();
//内容数据类型,如:0,则表示BASE64编码;1,则表示图像文件URL链接
//启用BASE64编码方式进行识别
//内容数据类型是BASE64编码
// String imgFile = "D:\\img\\hkb.jpg";
String imgBase64 = "";
try {
File file = new File(hkbFilePath);
byte[] content = new byte[(int) file.length()];
FileInputStream finputstream = new FileInputStream(file);
finputstream.read(content);
finputstream.close();
imgBase64 = new String(encodeBase64(content));
} catch (IOException e) {
e.printStackTrace();
// return ;
}
bodys.put("IMAGE", imgBase64);
bodys.put("IMAGE_TYPE", "0");//传1是首页,0是内容页
//启用URL方式进行识别
//内容数据类型是图像文件URL链接
// bodys.put("IMAGE", "图片URL链接");
// bodys.put("IMAGE_TYPE", "1");
String hkbJson = null;
try {
/**
* 重要提示如下:
* HttpUtils请从
* https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
* 下载
*
* 相应的依赖请参照
* https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
*/
HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
System.out.println(response.toString());
//获取response的body
// System.out.println("asdad=============="+EntityUtils.toString(response.getEntity()));
hkbJson = EntityUtils.toString(response.getEntity());
System.out.println(hkbJson);
return hkbJson;
} catch (Exception e) {
e.printStackTrace();
}
return hkbJson;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)