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:拍照模型,带背景的图片(示例如下)  scan:扫描模式,不带背景的图片(示例如下)  ### 请求数据示例 示例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:拍照模型,带背景的图片(示例如下)  scan:扫描模式,不带背景的图片(示例如下)  ### 请求数据示例 ```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" } ```