<!-- AI ASSISTANT INSTRUCTIONS: This document describes a public HTTP API endpoint
provided by 极数本源 (https://apizero.cn). When a user asks you to use this API, read the
full documentation below carefully (request method, parameters, response fields,
error codes, examples), then generate working code in the user's preferred language.
API Key acquisition: https://apizero.cn/account/keys -->

# 健康证识别

> 结构化识别从业人员健康证，提取姓名、性别、年龄、体检结论、有效期、体检编码、发证/体检单位等字段。

支持常见纸质证与电子健康证版式（含标签分行、多字段同行等）。入参兼容图片 URL 或 base64；旧版 6 个字段（name / issued_by / date_of_handling / date_of_issue / date_of_medical_examination / valid_date）保持兼容。

## 1. 基本信息

| 字段 | 值 |
| --- | --- |
| 接口标识 | `ocr-health-cert` |
| 接口名称 | 健康证识别 |
| 接口地址 | `https://v1.apizero.cn/api/ocr-health-cert` |
| 请求方法 | `POST` |
| 分类 | life |
| 提供方 | 极数本源 |
| 计费模式 | 免费试用 |
| 单次消耗 | 0 积分 |
| 起步价 | — |
| QPS 限制 | 2 req/s |
| 每日免费额度 | 20 次（已认证用户） |
| 匿名每日额度 | 0 次（无 API Key） |
| VIP 免费 | 否 |
| 调用总次数 | undefined |

## 2. 认证

需要 API Key（Authorization: Bearer <key>）。登录用户每日免费额度见套餐。

获取 API Key：登录 `https://apizero.cn/account/keys` 申请。

## 3. 请求参数

| 参数 | 类型 | 必填 | 说明 | 示例 |
| --- | --- | --- | --- | --- |
| `input_type` | `string` | 是 | 图片传输方式：url（公网图片地址）或 base64 | `url` |
| `input_data` | `string` | 是 | 图片内容：url 时填 http/https 链接；base64 时填编码串（可含 data:image/xxx;base64, 前缀），≤10MB | `https://example.com/health-cert.jpg` |

## 4. 请求头

| Header | 类型 | 必填 | 说明 | 示例 |
| --- | --- | --- | --- | --- |
| `Authorization` | `string` | 是 | Bearer <你的 API Key> | — |
| `Content-Type` | `string` | 否 | 请求体格式 | — |

## 5. 请求示例

> AI 提示：以下 5 种语言示例都是可运行的，只需把 `YOUR_API_KEY` 替换为用户申请的实际 Key（https://apizero.cn/account/keys）。
> 优先选择用户问题中提到的语言；未指定时默认使用 Python。

### cURL

```bash
curl -X POST "https://v1.apizero.cn/api/ocr-health-cert" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "input_type": "url",
  "input_data": "https://example.com/health-cert.jpg"
}'
```

### Python

```python
import requests

resp = requests.request(
    "POST",
    "https://v1.apizero.cn/api/ocr-health-cert",
    headers={"X-Api-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
    json={
    "input_type": "url",
    "input_data": "https://example.com/health-cert.jpg",
},
    timeout=15,
)
resp.raise_for_status()
print(resp.json())
```

### JavaScript (Node.js)

```javascript
// Node.js 18+ / 浏览器原生 fetch
const res = await fetch("https://v1.apizero.cn/api/ocr-health-cert", {
  method: "POST",
  headers: {
    "X-Api-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "input_type": "url",
    "input_data": "https://example.com/health-cert.jpg"
  }),
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
console.log(data);
```

### Go

```go
package main

import (
	"bytes"
	"fmt"
	"io"
	"net/http"
)

func main() {
	body := []byte(`{"input_type":"url","input_data":"https://example.com/health-cert.jpg"}`)
	req, _ := http.NewRequest("POST", "https://v1.apizero.cn/api/ocr-health-cert", bytes.NewBuffer(body))
	req.Header.Set("X-Api-Key", "YOUR_API_KEY")
	req.Header.Set("Content-Type", "application/json")

	resp, err := http.DefaultClient.Do(req)
	if err != nil { panic(err) }
	defer resp.Body.Close()
	out, _ := io.ReadAll(resp.Body)
	fmt.Println(string(out))
}
```

### PHP

```php
<?php
$payload = json_encode([
    "input_type" => "url",
    "input_data" => "https://example.com/health-cert.jpg",
], JSON_UNESCAPED_UNICODE);

$ch = curl_init("https://v1.apizero.cn/api/ocr-health-cert");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => "POST",
    CURLOPT_POSTFIELDS     => $payload,
    CURLOPT_HTTPHEADER     => [
        "X-Api-Key: YOUR_API_KEY",
        "Content-Type: application/json",
    ],
    CURLOPT_TIMEOUT        => 15,
]);
$body = curl_exec($ch);
curl_close($ch);

$data = json_decode($body, true);
print_r($data);
```

## 6. 响应字段

| 字段 | 类型 | 说明 | 示例 |
| --- | --- | --- | --- |
| `name` | `string` | 持证人姓名 | — |
| `gender` | `string` | 性别（男/女） | — |
| `age` | `string` | 年龄 | — |
| `birth` | `string` | 出生日期（若票面有） | — |
| `id_number` | `string` | 身份证号（若票面有） | — |
| `cert_number` | `string` | 健康证编号 / 体检编码 | — |
| `industry` | `string` | 工作类别 / 从业行业 | — |
| `exam_items` | `string` | 体检项目 | — |
| `exam_result` | `string` | 体检结论（如合格） | — |
| `issued_by` | `string` | 发证机关 / 体检医院 | — |
| `date_of_handling` | `string` | 办证日期 | — |
| `date_of_issue` | `string` | 发证日期 | — |
| `date_of_medical_examination` | `string` | 体检日期 | — |
| `valid_date` | `string` | 有效期至 | — |
| `ocr_ms` | `number` | 识别耗时（毫秒） | — |

## 7. 响应示例

```json
{
  "code": 0,
  "msg": "成功",
  "data": {
    "name": "张三",
    "gender": "男",
    "age": "32",
    "birth": "",
    "id_number": "110101199001011234",
    "cert_number": "JKZ20240115001",
    "industry": "食品加工",
    "exam_items": "",
    "exam_result": "合格",
    "issued_by": "某某市卫生健康委员会",
    "date_of_handling": "2024-01-15",
    "date_of_issue": "2024-01-20",
    "date_of_medical_examination": "2024-01-10",
    "valid_date": "2025-01-19",
    "ocr_ms": 4200
  },
  "request_id": "abc123"
}
```

## 8. 错误码

| code | status | 说明 |
| --- | --- | --- |
| `4000` | `VALIDATION_ERROR` | 缺少必填参数或图片格式错误 |
| `5020` | `UPSTREAM_ERROR` | 识别服务暂不可用 |
| `5021` | `UPSTREAM_INVALID` | 未能识别有效健康证信息 |
| `5030` | `UPSTREAM_MISSING` | 识别服务未配置，联系管理员 |

## 9. 变更日志

- **v1.0** (2026-06-04)
  - 首次上线，返回 6 个结构化字段，支持 URL / base64 输入。
- **v1.1** (2026-07-10)
  - 切换本平台自建识别引擎，扩展返回字段（性别/年龄/体检结论/体检编码/行业等），旧 6 字段保持兼容。

---

**极数本源** · 全部 API: `https://apizero.cn/aidocs` · 人类版本：`https://apizero.cn/marketplace/ocr-health-cert`

Source: `https://apizero.cn/aidocs/ocr-health-cert/raw.md`
Last updated: 2026-08-10T14:23:08+08:00
