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

}

posted @   渝思  阅读(290)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 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)
点击右上角即可分享
微信分享提示