文档首页> 文字识别 OCR> API参考> API> 泰文身份证识别
更新时间:2023-11-10 GMT+08:00

泰文身份证识别

功能介绍

识别泰国身份证中的文字信息,并以JSON格式返回识别的结构化结果。该接口的使用限制请参见约束与限制,详细使用指导请参见OCR服务使用简介章节。

图1 泰文身份证示例图

约束与限制

  • 只支持泰国身份证的识别。
  • 只支持识别PNG、JPG、JPEG、BMP、TIFF格式图片。
  • 泰国身份证识别图像各边的像素大小在15px到8192px之间。
  • 图像中身份证区域有效占比超过25%,保证整张身份证内容及其边缘包含在图像内。
  • 支持图像中身份证任意角度的水平旋转。
  • 支持少量扭曲,扭曲后图像中的身份证长宽比与实际身份证相差不超过10%。
  • 能处理反光、暗光等干扰的图片但影响识别精度。
  • 目前只支持识别单张身份证的正面或者反面。

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

前提条件

在使用泰文身份证识别之前,需要您完成服务申请和认证鉴权,具体操作流程请参见开通服务认证鉴权章节。

用户首次使用需要先申请开通。服务只需要开通一次即可,后面使用时无需再次申请。如未开通服务,调用服务时会提示ModelArts.4204报错,请在调用服务前先进入控制台开通服务,并注意开通服务区域与调用服务的区域保持一致。

URI

POST /v2/{project_id}/ocr/thailand-id-card

表1 路径参数

参数

是否必选

说明

endpoint

终端节点,即调用API的请求地址。

不同服务不同区域的endpoint不同,您可以从终端节点中获取。

project_id

项目ID,您可以从获取项目ID中获取。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。

用于获取操作API的权限。获取Token接口响应消息头中X-Subject-Token的值即为Token。

Content-Type

String

发送的实体的MIME类型,参数值为“application/json”。

Enterprise-Project-Id

String

企业项目ID。OCR支持通过企业项目管理(EPS)对不同用户组和用户的资源使用,进行分账。

获取方法:进入“企业项目管理”页面,单击企业项目名称,在企业项目详情页获取Enterprise-Project-Id(企业项目ID)。

企业项目创建步骤请参见用户指南。

说明:

创建企业项目后,在传参时,有以下三类场景。

  • 携带正确的ID,正常使用OCR服务,账单归到企业ID对应的企业项目中。
  • 携带错误的ID,正常使用OCR服务,账单的企业项目会被分类为“未归集”。
  • 不携带ID,正常使用OCR服务,账单的企业项目会被分类为“未归集”。
表3 请求Body参数

参数

是否必选

参数类型

说明

image

String

与url二选一。

图片的Base64编码,要求Base64编码后大小不超过10MB。

图片最短边不小于15px,最长边不超过8192px,支持JPEG、JPG、PNG、BMP、TIFF格式。

图片Base64编码示例如/9j/4AAQSkZJRgABAg...,带有多余前缀会产生The image format is not supported报错。

url

String

与image二选一。

图片的url路径,目前支持:

  • 公网http/https url
  • OBS提供的url,使用OBS数据需要进行授权。包括对服务授权、临时授权、匿名公开授权,详情参见配置OBS访问权限
说明:
  • 接口响应时间依赖于图片的下载时间,如果图片下载时间过长,会返回接口调用失败。
  • 请保证被检测图片所在的存储服务稳定可靠,推荐使用OBS服务存储图片数据。

side

String

标示身份证正面或背面。可选值如下:

  • front:身份证正面
  • back:身份证背面

如果参数值为空或无该参数,系统自动识别,建议填写,准确率更高。

return_portrait_image

Boolean

是否返回身份证头像照片的 Base64 编码,可选值如下:

  • true:返回身份证头像照片的 Base64 编码
  • false:不返回身份证头像照片的 Base64 编码

未传入该参数时默认为false,即不返回身份证头像照片的 Base64 编码。

return_portrait_location

Boolean

是否返回头像位置坐标,可选值如下:

  • true :返回身份证头像的位置坐标
  • false:不返回身份证头像的位置坐标

return_idcard_type

Boolean

是否返回身份证类型,可选值如下:

  • true: 返回身份证类型,类型包括身份证原件和身份证复印件
  • false:不返回身份证类型

return_text_location

Boolean

识别到的文字块的区域位置信息。可选值包括:

true:返回各个文字块区域

false:不返回各个文字块区域

如果无该参数,系统默认不返回文字块区域。如果输入参数不是Boolean类型,则会报非法参数错误。

响应参数

状态码: 200

表4 响应Body参数

参数

参数类型

描述

result

ThailandIdcardResult object

识别结果。

调用失败时不返回此字段。

表5 ThailandIdcardResult

参数

参数类型

描述

type

String

返回证件类型,"normal"表示普通泰文证件,"pink"表示外国人身份证件

name_en

String

英文名。

ref_number

String

参考编码。

side

String

标示正面还是反面,取值为front或back。

id_number

String

身份证号。

name_th

String

泰文名字。

first_name_en

String

英文名字。

last_name_en

String

英文姓氏。

date_of_birth_th

String

泰文出生日期。

date_of_birth_en

String

英文出生日期。

religion_th

String

宗教。

address_th

String

地址。

date_of_issue_th

String

泰文签发日期。

date_of_issue_en

String

英文签发日期。

date_of_expiry_th

String

泰文有效期。

date_of_expiry_en

String

英文有效期。

serial_number

String

序列号。

card_number

String

身份证反面卡号。

laser_number

String

激光码。

confidence

ThailandIdcardConfidence object

字段的置信度,取值范围0~1。

置信度越大,本次识别的字段的可靠性越高,在统计意义上,置信度越大,准确率越高。 置信度由算法给出,不直接等价于字段的准确率。

portrait_image

String

头像的Base64编码。 当输入参数“return_portrait_image”为“true”时,才返回该参数。

portrait_location

Array<Array<Integer>>

头像在原图上的位置。 当输入参数“return_portrait_location”为“true”时,才返回该参数。以列表形式显示,包含头像区域四个顶点的二维坐标(x,y),坐标原点为图片左上角,x轴沿水平方向,y轴沿竖直方向

idcard_type

String

身份证的类型。当输入参数“return_idcard_type”为“true”时,才返回该参数。取值如下所示:

  • normal:身份证原件
  • copy:复印的身份证

text_location

Object

对应所有在原图上识别到的字段位置信息,包含所有文字区域四个顶点的二维坐标(x,y)。采用图像坐标系,坐标原点为图片左上角,x轴沿水平方向,y轴沿竖直方向。

表6 ThailandIdcardConfidence

参数

参数类型

描述

id_number

Float

身份证号置信度。

name_th

Float

泰文名字置信度。

name_en

Float

英文名置信度。

ref_number

Float

参考编码置信度。

first_name_en

Float

英文名字置信度。

last_name_en

Float

英文姓氏置信度。

date_of_birth_th

Float

泰文出生日期置信度。返回值例如,5 ก.พ. 2493。

date_of_birth_en

Float

英文出生日期置信度。返回值例如,5 Feb. 1950。

religion_th

Float

宗教置信度。

address_th

Float

地址置信度。

date_of_issue_th

Float

泰文签发日期置信度。

date_of_issue_en

Float

英文签发日期置信度。

date_of_expiry_th

Float

泰文有效期置信度。

date_of_expiry_en

Float

英文有效期置信度。

serial_number

Float

序列号置信度。

card_number

Float

身份证反面卡号置信度。

laser_number

Float

激光码置信度。

状态码: 200

表7 响应Body参数

参数

参数类型

描述

error_code

String

调用失败时的错误码,具体请参见错误码

当出现错误码“ModelArts.4204”时,请参考为什么调用API时提示“ModelArts.4204”?章节。

调用成功时不返回此字段。

error_msg

String

调用失败时返回的错误信息。

调用成功时不返回此字段。

请求示例

  • “endpoint”即调用API的请求地址,不同服务不同区域的“endpoint”不同,具体请参见终端节点

    例如,泰文身份证识别服务部署在“亚太-曼谷”区域的“endpoint”“ocr.ap-southeast-2.myhuaweicloud.com”“ocr.ap-southeast-2.myhuaweicloud.cn”,请求URL为“https://ocr.ap-southeast-2.myhuaweicloud.com/v2/{project_id}/thailand-id-card”“project_id”为项目ID,获取方法请参见获取项目ID

  • 如何获取Token请参见构造请求
  • 请求示例(方式一:使用图片的Base64编码)
    POST  https://{endpoint}/v2/{project_id}/ocr/thailand-id-card
    
    Request Header:
    Content-Type: application/json
    X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG...
    Request Body: 
    
    {
      "image" : "/9j/4AAQSkZJRgABAgEASABIAAD/4RFZRXhpZgAATU0AKgAAAA...",
      "side" : "front",
      "return_portrait_image" : true,
      "return_portrait_location" : true,
      "return_idcard_type" : true
    }
  • 请求示例(方式二:使用图片URL)
    POST  https://{endpoint}/v2/{project_id}/ocr/thailand-id-card
    
    Request Header:
    Content-Type: application/json
    X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG...
    Request Body: 
    {
        "url":"https://BucketName.obs.xxxx.com/ObjectName"
    }
  • Python3语言请求代码示例(其他语言参照下列示例编写或使用OCR SDK)
    # encoding:utf-8
    
    import requests
    import base64
    
    url = "https://{endpoint}/v2/{project_id}/ocr/thailand-id-card"
    token = "用户获取得到的实际token值"
    headers = {'Content-Type': 'application/json', 'X-Auth-Token': token}
    
    imagepath = r'./data/thailand-id-card-demo.png' # 读取本地图片
    with open(imagepath, "rb") as bin_data:
        image_data = bin_data.read()
    image_base64 = base64.b64encode(image_data).decode("utf-8")  # 使用图片的Base64编码
    payload = {"image": image_base64}
    response = requests.post(url, headers=headers, json=payload)
    print(response.text)

响应示例

状态码:200

成功响应示例(正面)

{
  "result" : {
    "side" : "front",
    "id_number" : "X XXXX XXXXX XX X",
    "name_th" : "XXX",
    "first_name_en" : "XX",
    "last_name_en" : "XX",
    "date_of_birth_th" : "5 ก.พ. 2493",
    "date_of_birth_en" : "5 Feb. 1950",
    "religion_th" : "XX",
    "address_th" : "XXXXX",
    "date_of_issue_th" : "XX",
    "date_of_issue_en" : "4 Mar. 2011",
    "date_of_expiry_th" : "22 ก.พ. 2561",
    "date_of_expiry_en" : "22 Feb. 2018",
    "serial_number" : "XXXX-XX-XXXXX",
    "confidence" : {
      "id_number" : 0.9999,
      "name_th" : 0.9994,
      "first_name_en" : 0.998,
      "last_name_en" : 0.9997,
      "date_of_birth_th" : 0.9996,
      "date_of_birth_en" : 0.9997,
      "religion_th" : 0.686,
      "address_th" : 0.624,
      "date_of_issue_th" : 1,
      "date_of_issue_en" : 1,
      "date_of_expiry_th" : 0.9969,
      "date_of_expiry_en" : 0.61,
      "serial_number" : 0.9887
    },
    "portrait_image" : "/9j/4AA... ",
    "portrait_location" : [ [ 576, 237 ], [ 741, 237 ], [ 739, 430 ], [ 574, 431 ] ],
    "idcard_type" : "normal"
  }
}

成功响应示例(背面)

{
    "result": {
        "side": "back",
        "card_number": "XXXX-XXX-XX", 
        "laser_number": "XXXX-XXXXXXX-XX", 
        "confidence": {
            "id_number": 0.9999, 
            "laser_number": 0.9994
        }
    }
}

状态码:400

失败响应示例

{
    "error_code": "AIS.0103", 
    "error_msg": "The image size does not meet the requirements." 
}

状态码

状态码

描述

200

成功响应样例

400

失败响应样例

状态码请参见状态码

错误码

错误码请参见错误码