<!-- 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 -->

# 机动车发票识别

> 结构化识别机动车销售发票，提取发票代码、号码、开票日期、购买方/销售方信息、车辆信息及价税明细等 20 个字段。

适用场景：二手车交易核验、购车报销录入、增值税抵扣材料整理等。支持 jpg/png 格式，文件大小不超过 10MB，建议发票平整、拍摄清晰以提高识别准确率。

## 1. 基本信息

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

## 2. 认证

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

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

## 3. 请求参数

| 参数 | 类型 | 必填 | 说明 | 示例 |
| --- | --- | --- | --- | --- |
| `input_type` | `string` | 是 | 图片传输方式，支持 url（公网图片地址）或 base64（图片的 base64 编码） | `url` |
| `input_data` | `string` | 是 | 图片内容：input_type=url 时填 http/https 图片链接；input_type=base64 时填 base64 字符串（可含 data:image/xxx;base64, 前缀），文件大小不超过 10MB | `https://example.com/vehicle-invoice.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-vehicle-invoice" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "input_type": "url",
  "input_data": "https://example.com/vehicle-invoice.jpg"
}'
```

### Python

```python
import requests

resp = requests.request(
    "POST",
    "https://v1.apizero.cn/api/ocr-vehicle-invoice",
    headers={"X-Api-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
    json={
    "input_type": "url",
    "input_data": "https://example.com/vehicle-invoice.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-vehicle-invoice", {
  method: "POST",
  headers: {
    "X-Api-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "input_type": "url",
    "input_data": "https://example.com/vehicle-invoice.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/vehicle-invoice.jpg"}`)
	req, _ := http.NewRequest("POST", "https://v1.apizero.cn/api/ocr-vehicle-invoice", 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/vehicle-invoice.jpg",
], JSON_UNESCAPED_UNICODE);

$ch = curl_init("https://v1.apizero.cn/api/ocr-vehicle-invoice");
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. 响应字段

| 字段 | 类型 | 说明 | 示例 |
| --- | --- | --- | --- |
| `invoice_code` | `string` | 发票代码 | — |
| `invoice_num` | `string` | 发票号码 | — |
| `date` | `string` | 开票日期（如 "2024年01月15日"） | — |
| `print_code` | `string` | 机打代码 | — |
| `print_num` | `string` | 机打号码 | — |
| `machine_num` | `string` | 机器编码 | — |
| `buyer_name` | `string` | 购买方名称（个人或企业） | — |
| `buyer_id` | `string` | 购买方纳税人识别号 | — |
| `vehicle_type` | `string` | 车辆类型（如 "小型轿车"） | — |
| `product_model` | `string` | 厂牌型号（如 "丰田/CAMRY"） | — |
| `certificate_num` | `string` | 合格证号 | — |
| `vin` | `string` | 发动机号码 / VIN | — |
| `total_price` | `string` | 价税合计（大写，如 "壹拾柒万元整"） | — |
| `total_price_little` | `string` | 价税合计（小写，如 "170000.00"） | — |
| `tax_rate` | `string` | 税率（如 "9%"） | — |
| `tax` | `string` | 税额（如 "13944.95"） | — |
| `price` | `string` | 不含税价格（如 "156055.05"） | — |
| `saler_name` | `string` | 销售方名称 | — |
| `saler_id` | `string` | 销售方纳税人识别号 | — |
| `saler_addr` | `string` | 销售方地址及电话 | — |

## 7. 响应示例

```json
{
  "code": 0,
  "msg": "成功",
  "data": {
    "invoice_code": "31100000000",
    "invoice_num": "12345678",
    "date": "2024年01月15日",
    "print_code": "",
    "print_num": "",
    "machine_num": "499098765432",
    "buyer_name": "张三",
    "buyer_id": "",
    "vehicle_type": "小型轿车",
    "product_model": "丰田/CAMRY",
    "certificate_num": "LSXXXXXXXXXXXXX",
    "vin": "4A123456",
    "total_price": "壹拾柒万元整",
    "total_price_little": "170000.00",
    "tax_rate": "9%",
    "tax": "13944.95",
    "price": "156055.05",
    "saler_name": "XX汽车销售有限公司",
    "saler_id": "91310000XXXXXXXXXX",
    "saler_addr": "上海市XX路XX号 021-XXXXXXXX"
  },
  "request_id": "req_abc123"
}
```

## 8. 错误码

| code | status | 说明 |
| --- | --- | --- |
| `4000` | `VALIDATION_ERROR` | 缺少必填参数 input_type / input_data，或参数格式不合法 |
| `5020` | `UPSTREAM_ERROR` | 上游服务 HTTP 异常，请稍后重试 |
| `5021` | `UPSTREAM_INVALID` | 图片无法识别，请确认为机动车销售发票且图片清晰完整 |
| `5030` | `UPSTREAM_MISSING` | 机动车发票识别服务未开通，请联系管理员 |

## 9. 变更日志

- **v1.0** (2026-06-04)
  - 首次上线，返回 20 个结构化字段，支持 URL / base64 输入。

---

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

Source: `https://apizero.cn/aidocs/ocr-vehicle-invoice/raw.md`
Last updated: 2026-06-04T17:31:46+08:00
