卡证识别

最近更新时间:2025-09-10 19:02:01

我的收藏

简介

本文档提供关于卡证识别的相关 API 概览以及 SDK 示例代码。
API
操作描述
支持中国大陆居民二代身份证正反面所有字段的识别,包括姓名、性别、民族、出生日期、住址、公民身份证号、签发机关、有效期限;
具备身份证照片、人像照片的裁剪功能和翻拍、PS、复印件告警功能,以及边框和框内遮挡告警、临时身份证告警和身份证有效期不合法告警等扩展功能。
本接口支持中国大陆居民二代身份证正面(暂不支持背面)、驾驶证主页(暂不支持副页)所有字段的自动定位,暂不支持文本识别,用于对特定字段的抹除、屏蔽,以及进一步的文本识别。

身份证识别

功能说明

中国大陆居民二代身份证正反面所有字段的识别。

方法原型

func (s *CIService) IdCardOCRWhenCloud(ctx context.Context, key string, query *IdCardOCROptions) (*IdCardOCRResult, *Response, error) // 云上数据处理
func (s *CIService) IdCardOCRWhenUpload(ctx context.Context, key, filePath string, query *IdCardOCROptions, header *ObjectPutOptions) (*IdCardOCRResult, *Response, error) // 上传时处理

请求示例1:云上数据处理

key := "pic/idcard_1.png"
query := &cos.IdCardOCROptions{
Config: &cos.IdCardOCROptionsConfig{
CropPortrait: true,
CropIdCard: true,
CopyWarn: true,
BorderCheckWarn: true,
ReshootWarn: true,
DetectPsWarn: true,
TempIdWarn: true,
InvalidDateWarn: true,
Quality: true,
MultiCardDetect: true,
},
}
res, _, err := c.CI.IdCardOCRWhenCloud(context.Background(), key, query)

参数说明

type IdCardOCROptions struct {
CardSide string `url:"CardSide,omitempty"`
Config *IdCardOCROptionsConfig `url:"Config,omitempty"`
}

type IdCardOCROptionsConfig struct {
CropIdCard bool `json:"CropIdCard,omitempty"`
CropPortrait bool `json:"CropPortrait,omitempty"`
CopyWarn bool `json:"CopyWarn,omitempty"`
BorderCheckWarn bool `json:"BorderCheckWarn,omitempty"`
ReshootWarn bool `json:"ReshootWarn,omitempty"`
DetectPsWarn bool `json:"DetectPsWarn,omitempty"`
TempIdWarn bool `json:"TempIdWarn,omitempty"`
InvalidDateWarn bool `json:"InvalidDateWarn,omitempty"`
Quality bool `json:"Quality,omitempty"`
MultiCardDetect bool `json:"MultiCardDetect,omitempty"`
}
参数名称
参数描述
是否必填
key
对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/pic/pic.jpg中,对象键为 pic/pic.jpg
CardSide
FRONT:身份证有照片的一面(人像面)
BACK:身份证有国徽的一面(国徽面)
该参数如果不填,将为您自动判断身份证正反面
CropIdCard
身份证照片裁剪(去掉证件外多余的边缘、自动矫正拍摄角度)
CropPortrait
人像照片裁剪(自动抠取身份证头像区域
CopyWarn
复印件告警
BorderCheckWarn
边框和框内遮挡告警
ReshootWarn
翻拍告警
DetectPsWarn
PS 检测告警
TempIdWarn
临时身份证告警
InvalidDateWarn
身份证有效日期不合法告警
Quality
图片质量分数(评价图片的模糊程度)
MultiCardDetect
是否开启多卡证检测

请求示例2:上传时处理

key := "pic/idcard_0.png"
filePath := "./idcard_0.png"
query := &cos.IdCardOCROptions{
Config: &cos.IdCardOCROptionsConfig{
CropPortrait: true,
CropIdCard: true,
CopyWarn: true,
BorderCheckWarn: true,
ReshootWarn: true,
DetectPsWarn: true,
TempIdWarn: true,
InvalidDateWarn: true,
Quality: true,
MultiCardDetect: true,
},
}

res, _, err := c.CI.IdCardOCRWhenUpload(context.Background(), key, filePath, query, nil)

参数说明

参数名称
参数描述
key
对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/pic/pic.jpg中,对象键为 pic/pic.jpg
filePath
本地文件路径
query
身份证识别相关选项
header
对象上传参数,详见 上传对象

结果说明

type IdCardOCRResult struct {
XMLName xml.Name `xml:"Response"`
IdInfo *IdCardInfo `xml:"IdInfo,omitempty"`
AdvancedInfo *IdCardAdvancedInfo `xml:"AdvancedInfo,omitempty"`
}

type IdCardInfo struct {
Name string `xml:"Name,omitempty"`
Sex string `xml:"Sex,omitempty"`
Nation string `xml:"Nation,omitempty"`
Birth string `xml:"Birth,omitempty"`
Address string `xml:"Address,omitempty"`
IdNum string `xml:"IdNum,omitempty"`
Authority string `xml:"Authority,omitempty"`
ValidDate string `xml:"ValidDate,omitempty"`
}

type IdCardAdvancedInfo struct {
IdCard string `xml:"IdCard,omitempty"`
Portrait string `xml:"Portrait,omitempty"`
Quality string `xml:"Quality,omitempty"`
BorderCodeValue string `xml:"BorderCodeValue,omitempty"`
WarnInfos []string `xml:"WarnInfos,omitempty"`
}
参数名称
参数描述

Name
姓名(人像面)

Sex
性别(人像面)

Nation
民族(人像面)

Birth
出生日期(人像面)

Address
地址(人像面)

IdNum
身份证号(人像面)

Authority
发证机关(国徽面)

ValidDate
证件有效期(国徽面)

IdCard
裁剪后身份证照片的 Base64 编码,设置 Config.CropIdCard 为 true 时返回

Portrait
身份证头像照片的 Base64 编码,设置 Config.CropPortrait 为 true 时返回

Quality
图片质量分数,设置 Config.Quality 为 true 时返回(取值范围:0~100,分数越低越模糊,建议阈值 ≥ 50)

BorderCodeValue
身份证边框不完整告警阈值分数,设置 Config.BorderCheckWarn 为 true 时返回(取值范围:0~100,分数越低边框遮挡可能性越低,建议阈值≥50)

WarnInfos
告警信息,Code 告警码列表和释义:
9100 身份证有效日期不合法告警
9101 身份证边框不完整告警
9102 身份证复印件告警
9103 身份证翻拍告警
9104 临时身份证告警
9105 身份证框内遮挡告警
9106 身份证 PS 告警
可能存在多个 WarnInfos



卡证识别

本接口支持中国大陆居民二代身份证正面(暂不支持背面)、驾驶证主页(暂不支持副页)所有字段的自动定位,暂不支持文本识别,用于对特定字段的抹除、屏蔽,以及进一步的文本识别。

方法原型

func (s *CIService) AILicenseRec(ctx context.Context, obj string, opt *AILicenseRecOptions) (*AILicenseRecResult, *Response, error)

请求示例

// 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息
bu, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com")
b := &cos.BaseURL{BucketURL: bu}
c := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: os.Getenv("SECRETID"),
SecretKey: os.Getenv("SECRETKEY"),
}
})
obj := "pic/carCard.jpeg"
opt := &cos.AILicenseRecOptions{
CardType: "DriverLicense",
}
res, _, err := c.CI.AILicenseRec(context.Background(), obj, opt)
log_status(err)
fmt.Printf("%+v\\n", res)

参数说明

type AILicenseRecOptions struct {
DetectUrl string `url:"detect-url,omitempty"`
CardType string `url:"CardType,omitempty"`
}

参数名称
参数描述
类型
是否必填
DetectUrl
您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 obj,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 obj。
string
CardType
卡证识别类型,默认为 DriverLicense。有效值有:
IDCard:表示身份证。
DriverLicense:表示驾驶证。
string

结果说明

调用 AILicenseRec 函数,会解析 api 返回的 xml 内容到 AILicenseRecResult 结构,具体返回参数可查看 卡证识别 文档。