diff --git a/api-third/src/main/java/com/heyu/api/baidu/response/certificate/BBouseholdRegisterResp.java b/api-third/src/main/java/com/heyu/api/baidu/response/certificate/BBouseholdRegisterResp.java
index a63083b..8dc8bd0 100644
--- a/api-third/src/main/java/com/heyu/api/baidu/response/certificate/BBouseholdRegisterResp.java
+++ b/api-third/src/main/java/com/heyu/api/baidu/response/certificate/BBouseholdRegisterResp.java
@@ -1,8 +1,10 @@
package com.heyu.api.baidu.response.certificate;
+import com.fasterxml.jackson.annotation.JsonProperty;
import com.heyu.api.baidu.response.BBaseResp;
import lombok.Data;
+import lombok.NoArgsConstructor;
/**
@@ -83,10 +85,218 @@ import lombok.Data;
* "words_result_num": 22
* }
*/
+@NoArgsConstructor
@Data
public class BBouseholdRegisterResp extends BBaseResp {
+ @JsonProperty("words_result")
+ private WordsResultDTO wordsResult;
+ @JsonProperty("log_id")
+ private String logId;
+ @JsonProperty("words_result_num")
+ private Integer wordsResultNum;
+ @NoArgsConstructor
+ @Data
+ public static class WordsResultDTO {
+ @JsonProperty("Nation")
+ private NationDTO nation;
+ @JsonProperty("Sex")
+ private SexDTO sex;
+ @JsonProperty("Birthday")
+ private BirthdayDTO birthday;
+ @JsonProperty("Date")
+ private DateDTO date;
+ @JsonProperty("BirthAddress")
+ private BirthAddressDTO birthAddress;
+ @JsonProperty("Name")
+ private NameDTO name;
+ @JsonProperty("FormerName")
+ private FormerNameDTO formerName;
+ @JsonProperty("HouseholdNum")
+ private HouseholdNumDTO householdNum;
+ @JsonProperty("WWToCity")
+ private WWToCityDTO wWToCity;
+ @JsonProperty("WWHere")
+ private WWHereDTO wWHere;
+ @JsonProperty("CardNo")
+ private CardNoDTO cardNo;
+ @JsonProperty("Education")
+ private EducationDTO education;
+ @JsonProperty("Relationship")
+ private RelationshipDTO relationship;
+ @JsonProperty("Height")
+ private HeightDTO height;
+ @JsonProperty("Career")
+ private CareerDTO career;
+ @JsonProperty("WorkAddress")
+ private WorkAddressDTO workAddress;
+ @JsonProperty("Hometown")
+ private HometownDTO hometown;
+ @JsonProperty("OtherAddress")
+ private OtherAddressDTO otherAddress;
+ @JsonProperty("Belief")
+ private BeliefDTO belief;
+ @JsonProperty("BloodType")
+ private BloodTypeDTO bloodType;
+ @JsonProperty("MaritalStatus")
+ private MaritalStatusDTO maritalStatus;
+ @JsonProperty("VeteranStatus")
+ private VeteranStatusDTO veteranStatus;
+ @NoArgsConstructor
+ @Data
+ public static class NationDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class SexDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class BirthdayDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class DateDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class BirthAddressDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class NameDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class FormerNameDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class HouseholdNumDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class WWToCityDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class WWHereDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class CardNoDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class EducationDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class RelationshipDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class HeightDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class CareerDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class WorkAddressDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class HometownDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class OtherAddressDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class BeliefDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class BloodTypeDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class MaritalStatusDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class VeteranStatusDTO {
+ @JsonProperty("words")
+ private String words;
+ }
+ }
}
diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/BirthCertificateController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/BirthCertificateController.java
new file mode 100644
index 0000000..265d633
--- /dev/null
+++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/BirthCertificateController.java
@@ -0,0 +1,84 @@
+package com.heyu.api.controller.certificate;
+
+
+import com.heyu.api.baidu.handle.certificate.BBirthCertificateHandle;
+import com.heyu.api.baidu.request.certificate.BBirthCertificateRequest;
+import com.heyu.api.baidu.response.certificate.BBirthCertificateResp;
+import com.heyu.api.controller.BaseController;
+import com.heyu.api.data.annotation.CacheResult;
+import com.heyu.api.data.annotation.NotIntercept;
+import com.heyu.api.data.utils.ApiR;
+import com.heyu.api.data.utils.R;
+import com.heyu.api.request.certificate.BirthCertificateReq;
+import com.heyu.api.resp.certificate.BirthCertificateResp;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * https://console.bce.baidu.com/support/?_=1740219852952×tamp=1740309618781#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8D%A1%E8%AF%81OCR&api=rest%2F2.0%2Focr%2Fv1%2Fbirth_certificate&method=post
+ *
+ *
+ * 出生医学证明识别
+ *
+ *接口描述
+ * 支持对出生医学证明的23个关键字段进行结构化识别,包括新生儿姓名、性别、出生时间、父亲姓名、母亲姓名、出生证编号等。
+ *
+ */
+@Slf4j
+@RestController
+@RequestMapping("/birth")
+@NotIntercept
+public class BirthCertificateController extends BaseController {
+
+
+
+
+ @Autowired
+ private BBirthCertificateHandle birthCertificateHandle;
+
+ @RequestMapping("/certificate")
+ @CacheResult
+ public R recognize(BirthCertificateReq request) {
+ BirthCertificateResp resp = new BirthCertificateResp();
+
+ BBirthCertificateRequest birthCertificateRequest = new BBirthCertificateRequest();
+ birthCertificateRequest.setImageBase64(request.getImageBase64());
+ birthCertificateRequest.setImageUrl(request.getImageUrl());
+
+ ApiR bR = birthCertificateHandle.handle(birthCertificateRequest);
+ if(bR.isSuccess()){
+ BBirthCertificateResp bBirthCertificateResp = bR.getData();
+ BBirthCertificateResp.WordsResultDTO wordsResultDTO = bBirthCertificateResp.getWordsResult();
+ resp.setBirthProvince(wordsResultDTO.getBirthProvince().getWords());
+ resp.setBirthWeight(wordsResultDTO.getBirthWeight().getWords());
+ resp.setMotherNationality(wordsResultDTO.getMotherNationality().getWords());
+ resp.setFatherAddress(wordsResultDTO.getFatherAddress().getWords());
+ resp.setMotherEthnic(wordsResultDTO.getMotherEthnic().getWords());
+ resp.setMotherAddress(wordsResultDTO.getMotherAddress().getWords());
+ resp.setCode(wordsResultDTO.getCode().getWords());
+ resp.setBabySex(wordsResultDTO.getBabySex().getWords());
+ resp.setBirthCity(wordsResultDTO.getBirthCity().getWords());
+ resp.setBabyBirthday(wordsResultDTO.getBabyBirthday().getWords());
+ resp.setBabyName(wordsResultDTO.getBabyName().getWords());
+ resp.setFatherAge(wordsResultDTO.getFatherAge().getWords());
+ resp.setFatherEthnic(wordsResultDTO.getFatherEthnic().getWords());
+ resp.setMotherName(wordsResultDTO.getMotherName().getWords());
+ resp.setMotherIdNumber(wordsResultDTO.getMotherID().getWords());
+ resp.setBirthLength(wordsResultDTO.getBirthLength().getWords());
+ resp.setGestationalAge(wordsResultDTO.getGestationalAge().getWords());
+ resp.setBirthCity(wordsResultDTO.getBirthCity().getWords());
+ resp.setMotherAge(wordsResultDTO.getMotherAge().getWords());
+ resp.setHospital(wordsResultDTO.getHospital().getWords());
+ resp.setFatherNationality(wordsResultDTO.getFatherNationality().getWords());
+ resp.setFatherIdNumber(wordsResultDTO.getFatherID().getWords());
+ resp.setFatherName(wordsResultDTO.getFatherName().getWords());
+ return R.ok().setData(resp);
+ }
+ return R.error(bR.getErrorMsg());
+
+ }
+
+
+}
diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/BouseholdRegisterController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/BouseholdRegisterController.java
new file mode 100644
index 0000000..0ae7c8d
--- /dev/null
+++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/BouseholdRegisterController.java
@@ -0,0 +1,87 @@
+package com.heyu.api.controller.certificate;
+
+
+import com.heyu.api.baidu.handle.certificate.BBouseholdRegisterHandle;
+import com.heyu.api.baidu.request.certificate.BBouseholdRegisterRequest;
+import com.heyu.api.baidu.response.certificate.BBouseholdRegisterResp;
+import com.heyu.api.data.annotation.CacheResult;
+import com.heyu.api.data.annotation.NotIntercept;
+import com.heyu.api.data.utils.ApiR;
+import com.heyu.api.data.utils.R;
+import com.heyu.api.request.certificate.BouseholdRegisterReq;
+import com.heyu.api.resp.certificate.BouseholdRegisterResp;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * https://console.bce.baidu.com/support/?_=1740219852952×tamp=1740309163756#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8D%A1%E8%AF%81OCR&api=rest%2F2.0%2Focr%2Fv1%2Fhousehold_register&method=post
+ *
+ *
+ * 户口本识别
+ *
+ * 接口描述
+ * 支持对户口本内常住人口登记卡的全部 22 个字段,包括户号、姓名、与户主关系、性别、出生地、民族、出生日期、身份证号、本市县其他住址、曾用名、籍贯、宗教信仰、身高、血型、文化程度、婚姻状况、兵役状况、服务处所、职业、何时由何地迁往本市、何时由何地迁往本址、登记日期。
+ *
+ * 支持对户口本内户主页的5个字段进行结构化识别,包括户别、户主姓名、户号、住址、户主页时间。
+ */
+@Slf4j
+@RestController
+@RequestMapping("/bousehold")
+@NotIntercept
+public class BouseholdRegisterController {
+
+
+ @Autowired
+ private BBouseholdRegisterHandle bBouseholdRegisterHandle;
+
+
+ @RequestMapping("/recognize")
+ @CacheResult
+ public R recognize(BouseholdRegisterReq request) {
+
+ BouseholdRegisterResp resp = new BouseholdRegisterResp();
+ BBouseholdRegisterRequest bBouseholdRegisterRequest = new BBouseholdRegisterRequest();
+ bBouseholdRegisterRequest.setHouseholdRegisterSide(request.getHouseholdRegisterSide());
+ bBouseholdRegisterRequest.setImageBase64(request.getImageBase64());
+ bBouseholdRegisterRequest.setImageUrl(request.getImageUrl());
+
+ ApiR bR = bBouseholdRegisterHandle.handle(bBouseholdRegisterRequest);
+ if (bR.isSuccess()) {
+
+ BBouseholdRegisterResp bBouseholdRegisterResp = bR.getData();
+
+ BBouseholdRegisterResp.WordsResultDTO wordsResultDTO = bBouseholdRegisterResp.getWordsResult();
+
+ resp.setNation(wordsResultDTO.getNation().getWords());
+ resp.setSex(wordsResultDTO.getSex().getWords());
+ resp.setBirthday(wordsResultDTO.getBirthday().getWords());
+ resp.setDate(wordsResultDTO.getDate().getWords());
+ resp.setBirthAddress(wordsResultDTO.getBirthAddress().getWords());
+ resp.setName(wordsResultDTO.getName().getWords());
+ resp.setFormerName(wordsResultDTO.getFormerName().getWords());
+ resp.setHouseholdNum(wordsResultDTO.getHouseholdNum().getWords());
+ resp.setWWToCity(wordsResultDTO.getWWToCity().getWords());
+ resp.setWWHere(wordsResultDTO.getWWHere().getWords());
+ resp.setCardNo(wordsResultDTO.getCardNo().getWords());
+ resp.setEducation(wordsResultDTO.getEducation().getWords());
+ resp.setRelationship(wordsResultDTO.getRelationship().getWords());
+ resp.setHeight(wordsResultDTO.getHeight().getWords());
+ resp.setCareer(wordsResultDTO.getCareer().getWords());
+ resp.setWorkAddress(wordsResultDTO.getWorkAddress().getWords());
+ resp.setHometown(wordsResultDTO.getHometown().getWords());
+ resp.setOtherAddress(wordsResultDTO.getOtherAddress().getWords());
+ resp.setOtherAddress(wordsResultDTO.getOtherAddress().getWords());
+ resp.setBelief(wordsResultDTO.getBelief().getWords());
+ resp.setBloodType(wordsResultDTO.getBloodType().getWords());
+ resp.setMaritalStatus(wordsResultDTO.getMaritalStatus().getWords());
+ resp.setVeteranStatus(wordsResultDTO.getVeteranStatus().getWords());
+
+ return R.ok().setData(resp);
+
+ }
+
+ return R.error(bR.getErrorMsg());
+ }
+}
diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/BirthCertificateReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/BirthCertificateReq.java
new file mode 100644
index 0000000..c151dec
--- /dev/null
+++ b/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/BirthCertificateReq.java
@@ -0,0 +1,9 @@
+package com.heyu.api.request.certificate;
+
+import com.heyu.api.request.CommonReq;
+import lombok.Data;
+
+
+@Data
+public class BirthCertificateReq extends CommonReq {
+}
diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/BouseholdRegisterReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/BouseholdRegisterReq.java
new file mode 100644
index 0000000..80c419f
--- /dev/null
+++ b/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/BouseholdRegisterReq.java
@@ -0,0 +1,19 @@
+package com.heyu.api.request.certificate;
+
+import com.heyu.api.request.CommonReq;
+import lombok.Data;
+
+
+@Data
+public class BouseholdRegisterReq extends CommonReq {
+
+
+ /**
+ * -subpage:默认值,常住人口登记卡(成员页)
+ * -homepage:户主页
+ */
+ private String householdRegisterSide = "subpage";
+
+
+
+}
diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BirthCertificateResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BirthCertificateResp.java
new file mode 100644
index 0000000..427cc55
--- /dev/null
+++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BirthCertificateResp.java
@@ -0,0 +1,105 @@
+package com.heyu.api.resp.certificate;
+
+import com.heyu.api.data.dto.BaseResp;
+import lombok.Data;
+
+
+@Data
+public class BirthCertificateResp extends BaseResp {
+
+
+ /***
+ * 出生地点_省
+ */
+ private String birthProvince;
+ /***
+ *出生体重
+ */
+ private String birthWeight;
+ /**
+ * 母亲国籍
+ */
+ private String motherNationality;
+ /**
+ * 父亲住址
+ */
+ private String fatherAddress;
+ /***
+ * 母亲民族
+ */
+ private String motherEthnic;
+ /***
+ * 母亲地址
+ */
+ private String motherAddress;
+ /**
+ * 出生证编号
+ */
+ private String code;
+ /***
+ * 性别
+ */
+ private String babySex;
+ /***
+ * 出生地点_县(区)
+ */
+ private String birthCounty;
+ /***
+ * 出生时间
+ */
+ private String babyBirthday;
+ /***
+ * 姓名
+ */
+ private String babyName;
+ /**
+ * 父亲年龄
+ */
+ private String fatherAge;
+ /**
+ * 父亲民族
+ */
+ private String fatherEthnic;
+ /**
+ * 母亲姓名
+ */
+ private String motherName;
+ /**
+ * 母亲身份证号
+ */
+ private String motherIdNumber;
+ /**
+ * 出生身长
+ */
+ private String birthLength;
+ /**
+ * 出生孕周
+ */
+ private String gestationalAge;
+ /**
+ * 出生地点_市
+ */
+ private String birthCity;
+ /**
+ * 母亲年龄
+ */
+ private String motherAge;
+ /**
+ * 出生医院/医疗机构名称
+ */
+ private String hospital;
+ /**
+ * 父亲国籍
+ */
+ private String fatherNationality;
+ /**
+ * 父亲身份证号
+ */
+ private String fatherIdNumber;
+ /**
+ * 父亲姓名
+ */
+ private String fatherName;
+
+
+}
diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BouseholdRegisterResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BouseholdRegisterResp.java
new file mode 100644
index 0000000..aa77ece
--- /dev/null
+++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BouseholdRegisterResp.java
@@ -0,0 +1,101 @@
+package com.heyu.api.resp.certificate;
+
+import com.heyu.api.data.dto.BaseResp;
+import lombok.Data;
+
+
+@Data
+public class BouseholdRegisterResp extends BaseResp {
+
+ /**
+ * 民族
+ */
+ private String nation;
+
+ /**
+ *性别
+ */
+ private String sex;
+ /**
+ * 生日
+ */
+ private String birthday;
+ /**
+ * 登记日期
+ */
+ private String date;
+ /**
+ * 出生地
+ */
+ private String birthAddress;
+ /**
+ * 姓名
+ */
+ private String name;
+ /**
+ * 曾用名
+ */
+ private String formerName;
+ /**
+ * 户号
+ */
+ private String householdNum;
+ /**
+ * 何时由何地迁来本市(县)
+ */
+ private String wWToCity;
+ /**
+ * 何时由何地迁往本址
+ */
+ private String wWHere;
+ /**
+ * 身份证号
+ */
+ private String cardNo;
+ /**
+ * 文化程度
+ */
+ private String education;
+ /**
+ * 户主或与户主关系
+ */
+ private String relationship;
+ /**
+ * 身高
+ */
+ private String height;
+ /**
+ * 职业
+ */
+ private String career;
+ /**
+ * 服务处所
+ */
+ private String workAddress;
+ /**
+ * 籍贯
+ */
+ private String hometown;
+ /**
+ * 本市(县)其他住址
+ */
+ private String otherAddress;
+ /**
+ * 宗教信仰
+ */
+ private String belief;
+ /**
+ * 血型
+ */
+ private String bloodType;
+ /**
+ * 婚姻状况
+ */
+ private String maritalStatus;
+ /**
+ * 兵役状况
+ */
+ private String veteranStatus;
+
+
+}