OCR /idcard

# ocr.idcard

> 本接口应在服务器端调用,详细说明参见[服务端API](https://developers.weixin.qq.com/miniprogram/dev/framework/server-ability/backend-api.html)。

> 本接口支持[云调用](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/openapi/openapi.html)。需开发者工具版本 >= `1.02.1904090`(最新[稳定版下载](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)),`wx-server-sdk` >= `0.4.0`

本接口提供基于小程序的身份证 OCR 识别

调用方式:

- [HTTPS 调用](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/ocr/ocr.idcard.html#method-http)
- [云调用](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/ocr/ocr.idcard.html#method-cloud)
- [增量调用(加强版)](https://developers.weixin.qq.com/community/servicemarket/detail/000ce4cec24ca026d37900ed551415)



## HTTPS 调用

### 请求地址

```text
POST https://api.weixin.qq.com/cv/ocr/idcard?type=MODE&img_url=ENCODE_URL&access_token=ACCESS_TOCKEN
```

### 请求参数

| 属性                                  | 类型     | 默认值 | 必填 | 说明                                                         |
| :------------------------------------ | :------- | :----- | :--- | :----------------------------------------------------------- |
| access_token / cloudbase_access_token | string   |        | 是   | [接口调用凭证](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/access-token/auth.getAccessToken.html) |
| img_url                               | string   |        | 是   | 要检测的图片 url,传这个则不用传 img 参数。                  |
| img                                   | FormData |        | 是   | form-data 中媒体文件标识,有filename、filelength、content-type等信息,传这个则不用传 img_url。 |

### 返回值

### Object

返回的 JSON 数据包

| 属性       | 类型   | 说明                     |
| :--------- | :----- | :----------------------- |
| errcode    | string | 错误码                   |
| errmsg     | string | 错误信息                 |
| type       | string | 正面或背面,Front / Back |
| valid_date | string | 有效期                   |

### 使用说明

**接口限制** 微信 OCR 能力已全面接入服务平台计费系统。除服务平台接入方式外,原内测API,插件接入方式也均已接入计费系统。2020.4.1起,已接入内测的开发者,免费额度会统一调整为100次/天。更强的能力需求,可以走[服务市场调用](https://developers.weixin.qq.com/community/servicemarket/detail/000ce4cec24ca026d37900ed551415)。

**使用 Tips** 此接口为后台接口,可基于自有业务承载情况,搭配小程序的拍照、相册选照等一起使用,即可完成身份证照片的采集、上传、识别、信息返回等流程,用于需要基于身份证、银行卡等实体卡或证,采集照片或文字信息等的业务场景。

**图片说明** 文件大小限制:小于2M

图片支持使用 img 参数实时上传,也支持使用img_url参数传送图片地址,由微信后台下载图片进行识别。type 有两种类型

**拍摄图片样例**

photo:拍照模型,带背景的图片(示例如下)

![img](https://res.wx.qq.com/op_res/E_oqdHqP4ETOJsT46sQnXz1HbeHOpqDQTuhkYeaLaJTf-JKld7de3091dwxCQwa6)

scan:扫描模式,不带背景的图片(示例如下)

![img](https://res.wx.qq.com/op_res/3AVlOAQaIknzKxk3C1ZOhgOVuaWsduYrCKI0P8r3DoB2CDJOgS9LBovlbpn-s40a)

### 请求数据示例

示例1:

```text
curl https://api.weixin.qq.com/cv/ocr/idcard?type=photo&img_url= ENCODE_URL&access_token=ACCESS_TOCKEN
```

示例2:

```text
curl -F ‘img=@test.jpg’“https://api.weixin.qq.com/cv/ocr/idcard?type=photo&access_token=ACCESS_TOCKEN”
```

### 返回数据示例

正面返回

```json
{
  "errcode": "0",
  "errmsg": "ok",
  "type": "Front",
  "name": "张三",
  "id": "123456789012345678",
  "addr": "广东省广州市",
  "gender": "男",
  "nationality": "汉"
}
```

背面返回

```json
{
 "errcode": 0,
 "errmsg": "ok",
 "type": "Back",
 "valid_date": "20070105-20270105"
}
```

### 常见错误码

| 错误码 | errmsg                | 说明                             |
| :----- | :-------------------- | :------------------------------- |
| -1     | system error          | 系统错误,请稍后重试             |
| 101000 | invalid image url     | 图片 URL 错误或拉取 URL 图像错误 |
| 101001 | certificate not found | 图片中无法找到证件               |
| 101002 | invalid image data    | 图片数据无效                     |



## 云调用

> [云调用](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/openapi/openapi.html)是微信云开发提供的在云函数中调用微信开放接口的能力,需要在云函数中通过 `wx-server-sdk` 使用。

### 接口方法

```js
openapi.ocr.idcard
```

> 需在 `config.json` 中配置 `ocr.idcard` API 的权限,[详情](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/openapi/openapi.html#usage-3)

### 请求参数

| 属性   | 类型     | 默认值 | 必填 | 说明                                                         |
| :----- | :------- | :----- | :--- | :----------------------------------------------------------- |
| imgUrl | string   |        | 是   | 要检测的图片 url,传这个则不用传 img 参数。                  |
| img    | FormData |        | 是   | form-data 中媒体文件标识,有filename、filelength、content-type等信息,传这个则不用传 img_url。 |

**img 的结构**

| 属性        | 类型   | 默认值 | 必填 | 说明                     |
| :---------- | :----- | :----- | :--- | :----------------------- |
| contentType | string |        | 是   | 数据类型,传入 MIME Type |
| value       | Buffer |        | 是   | 文件 Buffer              |

### 返回值

### Object

返回的 JSON 数据包

| 属性      | 类型   | 说明                     |
| :-------- | :----- | :----------------------- |
| errCode   | string | 错误码                   |
| errMsg    | string | 错误信息                 |
| type      | string | 正面或背面,Front / Back |
| validDate | string | 有效期                   |

### 异常

### Object

抛出的异常

| 属性    | 类型   | 说明     |
| :------ | :----- | :------- |
| errCode | string | 错误码   |
| errMsg  | string | 错误信息 |

**errCode 的合法值**

| 值   | 说明 | 最低版本 |
| :--- | :--- | :------- |
|      |      |          |

### 使用说明

**接口限制** 微信 OCR 能力已全面接入服务平台计费系统。除服务平台接入方式外,原内测API,插件接入方式也均已接入计费系统。2020.4.1起,已接入内测的开发者,免费额度会统一调整为100次/天。更强的能力需求,可以走[服务市场调用](https://developers.weixin.qq.com/community/servicemarket/detail/000ce4cec24ca026d37900ed551415)。

**使用 Tips** 此接口为后台接口,可基于自有业务承载情况,搭配小程序的拍照、相册选照等一起使用,即可完成身份证照片的采集、上传、识别、信息返回等流程,用于需要基于身份证、银行卡等实体卡或证,采集照片或文字信息等的业务场景。

**图片说明** 文件大小限制:小于2M

图片支持使用 img 参数实时上传,也支持使用img_url参数传送图片地址,由微信后台下载图片进行识别。type 有两种类型

**拍摄图片样例**

photo:拍照模型,带背景的图片(示例如下)

![img](https://res.wx.qq.com/op_res/E_oqdHqP4ETOJsT46sQnXz1HbeHOpqDQTuhkYeaLaJTf-JKld7de3091dwxCQwa6)

scan:扫描模式,不带背景的图片(示例如下)

![img](https://res.wx.qq.com/op_res/3AVlOAQaIknzKxk3C1ZOhgOVuaWsduYrCKI0P8r3DoB2CDJOgS9LBovlbpn-s40a)

### 请求数据示例

```js
const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,
})
exports.main = async (event, context) => {
  try {
    const result = await cloud.openapi.ocr.idcard({
        "type": 'photo',
        "imgUrl": 'ENCODE_URL'
      })
    return result
  } catch (err) {
    return err
  }
}
```

或

```js
// cloud = require('wx-server-sdk')
// ...
// 方法返回 Promise
cloud.openapi.ocr.idcard({
  type: 'photo',
  img: {
    contentType: 'image/png',
    value: Buffer
  }
})
```

### 返回数据示例

正面返回

```json
{
  "errCode": 0,
  "errMsg": "openapi.ocr.idcard:ok",
  "type": "Front",
  "name": "张三",
  "id": "123456789012345678",
  "addr": "广东省广州市",
  "gender": "男",
  "nationality": "汉"
}
```

背面返回

```json
{
  "errCode": 0,
  "errMsg": "openapi.ocr.idcard:ok",
  "type": "Back",
  "validDate": "20070105-20270105"
}
```