云启智联AI服务 API 文档
欢迎使用云启智联AI服务。本文档提供了完整的 API 接口说明,帮助您快速集成银行回单识别、对账单识别、发票识别等智能解析能力。
文档概述
云启智联AI服务提供以下核心能力:
能力
接口路径
说明
银行回单解析
/AIService/bank_receipt_parsing
识别银行回单图片/PDF,支持每页多张回单自动裁剪,提取交易信息
银行对账单解析
/AIService/bank_statement_parsing
识别银行对账单,提取交易明细
发票解析
/AIService/invoice_parsing
全票面发票解析,覆盖5大分类,提取38个关键字段
通用文件解析
/AIService/file_parsing
通用文件识别解析
异步结果查询
/AIService/async_result
查询已提交任务的执行结果
计费说明
所有识别类接口均采用按文件页数 计费模式,调用失败的任务不产生费用。标准单价为 0.05 元 / 页 ,当月累计调用量达到阶梯门槛后自动享受更低单价。
接口名称
接口路径
计费模式
标准单价
银行回单解析
/AIService/bank_receipt_parsing
按文件页数
0.05 元 / 页
银行对账单解析
/AIService/bank_statement_parsing
按文件页数
0.05 元 / 页
发票解析
/AIService/invoice_parsing
按文件页数
0.05 元 / 页
通用文件解析
/AIService/file_parsing
按文件页数
0.05 元 / 页
阶梯优惠(自动生效)
当月累计页数
单价
说明
0 - 10,000 页
0.05 元 / 页
标准价,无门槛
10,001 - 100,000 页
0.04 元 / 页
月调用量超过 1 万页后自动适用
100,001 页以上
0.03 元 / 页
大客户价,月调用量超过 10 万页后自动适用
计费规则
页数按实际解析的文件页数计算(单张图片算 1 页,PDF 按实际页数计算)。任务执行失败(code 非 1000)时不扣费。费用按天汇总,次日从账户余额中统一结算扣除,结算时按当月累计页数所处阶梯计算当日费用。新用户注册即送 10 元体验金,按标准价约可解析 200 页。
认证鉴权
所有业务接口均需要在请求头中携带 Authorization 进行身份认证。
获取 API Key
登录云启智联AI服务管理面板,在「API Key管理」页面创建并获取您的 API Key。API Key 格式示例:
as-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456
请求头格式
Authorization: as-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
安全提示
API Key 是调用接口的唯一凭证,请妥善保管,不要将其暴露在客户端代码或公共仓库中。如怀疑泄露,请立即在管理面板中禁用并重新创建。
回调机制
所有识别类接口均为异步执行模式。您可以通过以下两种方式获取任务结果:
主动查询 :提交任务后获取 task_id,通过 async_result 接口主动轮询查询结果。
被动回调 :提交任务时在 callback_url 参数中指定回调地址,任务完成后系统自动以 POST 方式推送结果。
回调请求格式
POST {您提供的callback_url}
Content-Type: application/json
{
"code": 1000,
"msg": "success",
"data": [
{
"page_index": 1,
"page_data": [...]
}
]
}
回调说明
回调请求体中的数据结构,与通过 async_result 接口主动查询返回的数据结构完全一致。建议在回调接口中实现幂等处理,避免重复处理同一任务结果。
银行回单解析
识别银行回单图片或 PDF 文件,支持每页多张回单自动裁剪为单张回单,自动提取交易日期、交易金额、收付款方信息、摘要等关键字段。
POST
/AIService/bank_receipt_parsing
请求头参数
参数名
类型
是否必填
描述
Authorization
string
必填
API Key,用于身份认证
Content-Type
string
选填
上传文件时设置为 multipart/form-data
请求体参数
参数名
类型
是否必填
描述
file
file
选填
上传的回单文件,支持格式:pdf、png、jpeg、jpg、bmp、gif;与 file_url 二选一
file_url
string
选填
文件 URL 地址,与 file 参数二选一
callback_url
string
选填
回调地址,任务完成后以 POST 方式推送结果
请求示例
CURL
PYTHON
JAVA
C#
NODE.JS
curl -X POST "https://your-domain.com/AIService/bank_receipt_parsing" \
-H "Authorization: as-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-F "file=@receipt.pdf" \
-F "callback_url=https://your-app.com/callback"
import requests
url = "https://your-domain.com/AIService/bank_receipt_parsing"
headers = {"Authorization": "as-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}
files = {"file": open("receipt.pdf", "rb")}
data = {"callback_url": "https://your-app.com/callback"}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
import java.io.File;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Files;
import java.nio.file.Path;
HttpClient client = HttpClient.newHttpClient();
String boundary = "----FormBoundary" + System.currentTimeMillis();
File file = new File("receipt.pdf");
String body = "--" + boundary + "\r\n"
+ "Content-Disposition: form-data; name=\"callback_url\"\r\n\r\n"
+ "https://your-app.com/callback\r\n"
+ "--" + boundary + "\r\n"
+ "Content-Disposition: form-data; name=\"file\"; filename=\"receipt.pdf\"\r\n"
+ "Content-Type: application/pdf\r\n\r\n";
byte[] fileBytes = Files.readAllBytes(file.toPath());
byte[] bodyEnd = ("\r\n--" + boundary + "--\r\n").getBytes();
byte[] bodyBytes = new byte[body.getBytes().length + fileBytes.length + bodyEnd.length];
System.arraycopy(body.getBytes(), 0, bodyBytes, 0, body.getBytes().length);
System.arraycopy(fileBytes, 0, bodyBytes, body.getBytes().length, fileBytes.length);
System.arraycopy(bodyEnd, 0, bodyBytes, body.getBytes().length + fileBytes.length, bodyEnd.length);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-domain.com/AIService/bank_receipt_parsing"))
.header("Authorization", "as-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
.header("Content-Type", "multipart/form-data; boundary=" + boundary)
.POST(HttpRequest.BodyPublishers.ofByteArray(bodyBytes))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
using var client = new HttpClient();
using var form = new MultipartFormDataContent();
form.Add(new ByteArrayContent(File.ReadAllBytes("receipt.pdf")), "file", "receipt.pdf");
form.Add(new StringContent("https://your-app.com/callback"), "callback_url");
client.DefaultRequestHeaders.Add("Authorization", "as-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
var response = await client.PostAsync("https://your-domain.com/AIService/bank_receipt_parsing", form);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
const form = new FormData();
form.append('file', fs.createReadStream('receipt.pdf'));
form.append('callback_url', 'https://your-app.com/callback');
const response = await axios.post(
'https://your-domain.com/AIService/bank_receipt_parsing',
form,
{
headers: {
...form.getHeaders(),
'Authorization': 'as-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
}
}
);
console.log(response.data);
响应示例
提交成功
{
"code": 1000,
"msg": "success",
"data": "任务已经提交,请稍候通过 async_result 接口查询任务结果...",
"task_id": "d339b5e4-0c72-46bd-a17b-f23c5a3500cd"
}
查询结果成功
{
"code": 1000,
"msg": "success",
"data": [
{
"page_index": 1,
"companyName": "杭州气米科技有限公司",
"companyAccount": "3301040160002492166",
"page_data": [
{
"bankName": "杭州银行",
"createDate": "2025-04-25",
"expendCustomer": "杭州气米科技有限公司",
"expendAccount": "3301040160002492166",
"incomeCustomer": "浙江顺丰速运有限公司",
"incomeAccount": "1202022329900002018",
"amount": 178.0,
"abstract": "汇兑",
"remark": "快递费",
"transNo": "20250425U0547466",
"curName": "人民币",
"image_url": "https://ks3-cn-beijing.ksyun.com/...",
"balanceDirection": "贷"
}
]
}
]
}
银行对账单解析
识别银行对账单文件,自动提取账户信息、交易明细等字段,支持按页分组返回结构化数据。
POST
/AIService/bank_statement_parsing
请求头参数
参数名
类型
是否必填
描述
Authorization
string
必填
API Key,用于身份认证
请求体参数
参数名
类型
是否必填
描述
file
file
选填
上传的对账单文件,支持格式:pdf、png、jpeg、jpg、bmp、gif;与 file_url 二选一
file_url
string
选填
文件 URL 地址,与 file 参数二选一
callback_url
string
选填
回调地址,任务完成后以 POST 方式推送结果
请求示例
CURL
PYTHON
JAVA
C#
NODE.JS
curl -X POST "https://your-domain.com/AIService/bank_statement_parsing" \
-H "Authorization: as-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-F "file=@statement.pdf" \
-F "callback_url=https://your-app.com/callback"
import requests
url = "https://your-domain.com/AIService/bank_statement_parsing"
headers = {"Authorization": "as-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}
files = {"file": open("statement.pdf", "rb")}
data = {"callback_url": "https://your-app.com/callback"}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
import java.io.File;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Files;
HttpClient client = HttpClient.newHttpClient();
String boundary = "----FormBoundary" + System.currentTimeMillis();
File file = new File("statement.pdf");
String body = "--" + boundary + "\r\n"
+ "Content-Disposition: form-data; name=\"callback_url\"\r\n\r\n"
+ "https://your-app.com/callback\r\n"
+ "--" + boundary + "\r\n"
+ "Content-Disposition: form-data; name=\"file\"; filename=\"statement.pdf\"\r\n"
+ "Content-Type: application/pdf\r\n\r\n";
byte[] fileBytes = Files.readAllBytes(file.toPath());
byte[] bodyEnd = ("\r\n--" + boundary + "--\r\n").getBytes();
byte[] bodyBytes = new byte[body.getBytes().length + fileBytes.length + bodyEnd.length];
System.arraycopy(body.getBytes(), 0, bodyBytes, 0, body.getBytes().length);
System.arraycopy(fileBytes, 0, bodyBytes, body.getBytes().length, fileBytes.length);
System.arraycopy(bodyEnd, 0, bodyBytes, body.getBytes().length + fileBytes.length, bodyEnd.length);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-domain.com/AIService/bank_statement_parsing"))
.header("Authorization", "as-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
.header("Content-Type", "multipart/form-data; boundary=" + boundary)
.POST(HttpRequest.BodyPublishers.ofByteArray(bodyBytes))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
using var client = new HttpClient();
using var form = new MultipartFormDataContent();
form.Add(new ByteArrayContent(File.ReadAllBytes("statement.pdf")), "file", "statement.pdf");
form.Add(new StringContent("https://your-app.com/callback"), "callback_url");
client.DefaultRequestHeaders.Add("Authorization", "as-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
var response = await client.PostAsync("https://your-domain.com/AIService/bank_statement_parsing", form);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
const form = new FormData();
form.append('file', fs.createReadStream('statement.pdf'));
form.append('callback_url', 'https://your-app.com/callback');
const response = await axios.post(
'https://your-domain.com/AIService/bank_statement_parsing',
form,
{
headers: {
...form.getHeaders(),
'Authorization': 'as-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
}
}
);
console.log(response.data);
响应示例
{
"code": 1000,
"msg": "success",
"data": [
{
"page_index": 1,
"page_data": {
"global_fields": {
"accountName": "广州浩龙餐饮管理有限公司",
"bankName": "中国建设银行"
},
"detail_fields_list": [
{
"transAccount": "44050149110400002477",
"tradeDate": "2025-10-03",
"transNo": "578-440491104L0W06XW5IE",
"abstract": "电子转账",
"remark": "货款",
"counterpartyAccount": "01501271000000087",
"counterpartyName": "广州市白云区江高艳婷猪肉档",
"amountCredited": 0.0,
"amountDebited": 18900.0,
"balance": 6341.47,
"curName": "人民币元"
}
]
}
}
]
}
发票解析
全票面发票解析接口,覆盖5大分类:电子发票、定额发票、收据、费用票、增值税普通发票 。自动识别发票类型并提取发票代码、发票号码、开票日期、购销方信息、金额税额、车船机票详情等38个关键字段,支持后处理自动分类。
POST
/AIService/invoice_parsing
请求头参数
参数名
类型
是否必填
描述
Authorization
string
必填
API Key,用于身份认证
请求体参数
参数名
类型
是否必填
描述
file
file
选填
上传的发票文件,支持格式:pdf、png、jpeg、jpg、bmp、gif;与 file_url 二选一
file_url
string
选填
文件 URL 地址,与 file 参数二选一
callback_url
string
选填
回调地址,任务完成后以 POST 方式推送结果
响应示例
{
"code": 1000,
"msg": "success",
"data": [
{
"page_index": 1,
"page_data": [
{
"fpdm": "044002200111",
"fphm": "25957000000004052544",
"kprq": "2025-11-06",
"gmfmc": "深圳市云启智联网络科技有限公司",
"gmfsbh": "91440300MAKGJY5R7G",
"xfmc": "某某科技有限公司",
"xfsbh": "91440300XXXXXXXXXX",
"je": "1000.00",
"sl": "6%",
"se": "60.00",
"jshj": "1060.00",
"je_dx": "壹仟零陆拾元整",
"kpr": "张三",
"bz": "",
"fpzl": "电子发票",
"category": "电子发票",
"sub_type": "增值税电子普通发票"
}
]
}
]
}
通用文件解析
提供通用文件识别解析能力,支持多种文档类型的内容提取。
POST
/AIService/file_parsing
请求头参数
参数名
类型
是否必填
描述
Authorization
string
必填
API Key,用于身份认证
请求体参数
参数名
类型
是否必填
描述
file
file
选填
上传的文件,支持格式:pdf、png、jpeg、jpg、bmp、gif;与 file_url 二选一
file_url
string
选填
文件 URL 地址,与 file 参数二选一
callback_url
string
选填
回调地址,任务完成后以 POST 方式推送结果
异步结果查询
通过任务 ID 查询已提交识别任务的执行结果。建议在提交任务后间隔 5-10 秒开始轮询查询,直至获取结果或任务超时。
POST
/AIService/async_result
请求头参数
参数名
类型
是否必填
描述
Authorization
string
必填
API Key,用于身份认证
请求体参数
参数名
类型
是否必填
描述
task_id
string
必填
提交任务时返回的任务唯一标识
请求示例
CURL
PYTHON
JAVA
C#
NODE.JS
curl -X POST "https://your-domain.com/AIService/async_result" \
-H "Authorization: as-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-d "task_id=d339b5e4-0c72-46bd-a17b-f23c5a3500cd"
import requests
url = "https://your-domain.com/AIService/async_result"
headers = {"Authorization": "as-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}
data = {"task_id": "d339b5e4-0c72-46bd-a17b-f23c5a3500cd"}
response = requests.post(url, headers=headers, data=data)
print(response.json())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-domain.com/AIService/async_result"))
.header("Authorization", "as-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
.header("Content-Type", "application/x-www-form-urlencoded")
.POST(HttpRequest.BodyPublishers.ofString("task_id=d339b5e4-0c72-46bd-a17b-f23c5a3500cd"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "as-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("task_id", "d339b5e4-0c72-46bd-a17b-f23c5a3500cd")
});
var response = await client.PostAsync("https://your-domain.com/AIService/async_result", content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
const axios = require('axios');
const response = await axios.post(
'https://your-domain.com/AIService/async_result',
{ task_id: 'd339b5e4-0c72-46bd-a17b-f23c5a3500cd' },
{
headers: {
'Authorization': 'as-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
响应示例
{
"code": 1000,
"msg": "success",
"data": [
{
"page_index": 1,
"page_data": [...]
}
]
}
错误码列表
以下为云启智联AI服务返回的错误码及对应说明:
错误码
说明
处理建议
1000
处理成功
请求已成功处理
3000
未知的异常
请联系技术支持排查
3001
请求参数错误
请检查请求参数是否符合接口要求
3002
请求方式错误
请使用接口要求的 HTTP 方法
3003
请求异常
请检查网络连接或服务状态
3004
文件不存在
请确认 file 或 file_url 参数已正确传入
3005
不支持的文件格式
请上传支持的文件格式(pdf/png/jpeg/jpg/bmp/gif)
3006
接口未找到
请检查接口路径是否正确
3007
任务尚未完成
任务正在处理中,请稍后重试查询
3008
任务执行异常
任务执行过程中发生异常,请重新提交
3009
不支持的单据类型
请确认上传的文件类型与调用接口匹配
3010
调用大模型接口时出现异常
模型服务暂不可用,请稍后重试
3011
自动切割时出现异常
文件切割失败,请检查文件质量后重试
3012
强制切换到自研模型
系统已自动切换识别模型
3013
自研模型超时
识别耗时过长,请稍后重试
3014
自研模型切割异常
文件处理异常,请检查文件格式后重试
3015
URL 无效
请使用白名单内的 URL 地址
3016
请求频率太高
触发限流,请降低请求频率
3017
认证失败
Authorization 无效或缺失,请检查 API Key
3018
数据未找到
请求的数据不存在,请检查参数
3019
任务超时
任务超过最大处理时间,请重新提交
3020
回调失败
回调地址不可达,请检查回调服务状态
返回字段说明
回单识别字段
字段名
类型
是否可为空
描述
bankName
string
否
单据所属银行名称
createDate
string
否
交易或记账日期
expendCustomer
string
是
付款方名称
expendAccount
string
是
付款方账号
incomeCustomer
string
是
收款方名称
incomeAccount
string
是
收款方账号
abstract
string
是
摘要
amount
float
否
交易金额
remark
string
是
附言或备注
transNo
string
个别银行无
流水号、回单编号或校验码
curName
string
否
币种
image_url
string
否
回单图片 URL 地址
companyName
string
是
主体公司名称。系统根据回单中收、付款方名称出现频次自动推断;若多个公司名称并列第一导致无法唯一判断,则不返回该字段
companyAccount
string
是
主体公司账号。系统根据与主体公司同时出现的账号频次自动推断;若多个账号并列第一导致无法唯一判断,则不返回该字段
balanceDirection
string
是
借贷方向。主体公司及主体公司账号均作为收款方时为"借",均作为付款方时为"贷";无法判断主体公司/账号时不返回该字段
对账单全局字段
字段名
类型
是否可为空
描述
accountName
string
否
账户名称
bankName
string
否
对账单所属银行名称
totalCreditAmount
float
否
贷方总发生额
totalDebitAmount
float
否
借方总发生额
对账单明细字段
字段名
类型
是否可为空
描述
transAccount
string
是
交易账号
tradeDate
string
否
交易日期
transNo
string
是
交易流水号
abstract
string
是
摘要
counterpartyAccount
string
是
对方账号
counterpartyName
string
是
对方名称
amountCredited
float
是
贷方金额(转入金额)
amountDebited
float
是
借方金额(转出金额)
balance
float
是
余额
remark
string
是
备注
发票识别字段
覆盖5大分类:电子发票、定额发票、收据、费用票、增值税普通发票。各字段适用范围见下表,未命中的字段返回空字符串。
基础字段
字段名
类型
描述
适用范围
fphm
string
发票号码
电子发票、定额发票、费用票
fpdm
string
发票代码
电子发票、定额发票、费用票
kprq
string
开票日期(格式 YYYY-MM-DD)
电子发票、定额发票、费用票
fpzl
string
发票种类(后处理自动填入,非正则提取)
全部分类
category
string
文档分类(后处理自动填入:电子发票/定额发票/收据/费用票)
全部分类
sub_type
string
子类型(后处理自动填入:具体发票子类型名称)
全部分类
购买方信息
字段名
类型
描述
适用范围
gmfmc
string
购买方名称
电子发票
gmfsbh
string
购买方纳税人识别号(统一社会信用代码/纳税人识别号)
电子发票
gmfaddr
string
购买方地址
电子发票(增值税专用发票常见)
gmfbank
string
购买方开户行
电子发票(增值税专用发票常见)
销售方信息
字段名
类型
描述
适用范围
xfmc
string
销售方名称
电子发票
xfsbh
string
销售方纳税人识别号(统一社会信用代码/纳税人识别号)
电子发票
xfaddr
string
销售方地址
电子发票(增值税专用发票常见)
xfbank
string
销售方开户行
电子发票(增值税专用发票常见)
金额与税额
字段名
类型
描述
适用范围
je
string
金额(不含税)
电子发票、收据、费用票
sl
string
税率(如 6%、13%,或免税/不征税)
电子发票
se
string
税额
电子发票、费用票(通行费)
jshj
string
价税合计
电子发票、费用票(通行费)
je_dx
string
金额大写(中文大写金额)
电子发票、收据
de_amount
string
定额金额(中文大写转阿拉伯数字)
定额发票
人员与备注
字段名
类型
描述
适用范围
kpr
string
开票人
电子发票
fkrs
string
收款人
电子发票
fhr
string
复核人
电子发票
bz
string
备注
电子发票、收据
收据字段
字段名
类型
描述
适用范围
sjhm
string
收据编号
收据
rqrq
string
收据日期(格式 YYYY-MM-DD)
收据
sfdf
string
交款方/付款方
收据
定额发票字段
字段名
类型
描述
适用范围
sfss
string
所属省市
定额发票、费用票(出租车)
费用票 — 出租车
字段名
类型
描述
适用范围
ch
string
车号
费用票(出租车)
dj
string
单价(如 2.60 元/公里)
费用票(出租车)
lc
string
里程(公里数)
费用票(出租车)
费用票 — 车辆通行费
字段名
类型
描述
适用范围
cph
string
车牌号码
费用票(车辆通行费)
rksite
string
入口站
费用票(车辆通行费)
chksite
string
出口站
费用票(车辆通行费)
费用票 — 火车票
字段名
类型
描述
适用范围
sfz
string
出发站/始发地
费用票(火车票、机票)
ddz
string
到达站/目的地
费用票(火车票、机票)
crrq
string
乘车日期(格式 YYYY-MM-DD)
费用票(火车票)
xw
string
席别/座位(如二等座、硬卧)
费用票(火车票)
费用票 — 机票行程单
字段名
类型
描述
适用范围
hkgs
string
航空公司
费用票(机票行程单)
hbh
string
航班号(如 CA1234)
费用票(机票行程单)
SDK 工具包
为帮助开发者快速集成云启智联 AI 文档解析服务,我们提供了 Python、Java、Node.js、C# 四种语言的官方 SDK。SDK 封装了所有 API 接口调用、异步任务轮询、错误处理和类型定义,让您只需几行代码即可完成文档解析。
SDK 特性
完整封装所有文档解析接口(银行回单、对账单、发票、通用文件)
内置 wait_for_result 自动轮询等待任务完成,无需手动实现
完善的异常类型层次,支持细粒度错误处理
完整类型提示 / 类型定义,IDE 智能补全友好
支持文件上传和 URL 两种提交方式
支持回调 URL 配置,解析完成自动通知
Pythonic 设计,遵循 PEP 8 规范,基于 dataclass 的数据模型,完整类型提示。
$ pip install ./yqzl-ai-sdk-python
线程安全,基于 Java 11 HttpClient,Builder 模式配置,支持 Maven 集成。
> 下载源码后引入 Maven 项目
TypeScript 编写,完整类型定义导出,Promise/async-await 风格,零回调地狱。
$ npm install ./yqzl-ai-sdk-nodejs
零外部依赖,基于 HttpClient 原生实现,支持 IDisposable 资源管理,async/await 异步调用。
> 下载源码后添加项目引用
Python SDK
Python SDK 提供了最简洁的集成方式,支持 Python 3.8 及以上版本。安装后即可通过几行代码完成文档解析。
安装
点击上方「下载源码」按钮获取 SDK 源码包,解压后执行:
复制
# 解压源码包
unzip yqzl-ai-sdk-python.zip
# 进入目录安装(会自动安装 requests 依赖)
cd yqzl-ai-sdk-python
pip install .
快速开始
复制
from yqzl_sdk import YunQiZhiLian
client = YunQiZhiLian(api_key="as-xxxxxxxxxxxx")
# 提交银行回单解析任务
resp = client.parse_bank_receipt(file="path/to/receipt.pdf")
print(f"任务已提交: {resp.task_id}")
# 自动轮询等待结果
result = client.wait_for_result(resp.task_id)
for page in result.pages:
for receipt in page.get_receipts():
print(f"付款方: {receipt.expend_customer}, 金额: {receipt.amount}")
支持的方法
方法 说明
parse_bank_receipt(file=..., file_url=...)银行回单解析
parse_bank_statement(file=..., file_url=...)银行对账单解析
parse_invoice(file=..., file_url=...)发票解析
parse_file(file=..., file_url=...)通用文件解析
get_result(task_id)查询任务结果
wait_for_result(task_id)轮询等待任务完成并返回结果
ping()测试连通性
Java SDK
Java SDK 基于 Java 11 HttpClient 构建,线程安全,支持 Maven/Gradle 集成。
安装
点击上方「下载源码」按钮获取 SDK 源码包,解压后在 Maven 项目中引入:
复制
# 解压源码包
unzip yqzl-ai-sdk-java.zip
# 安装到本地 Maven 仓库
cd yqzl-ai-sdk-java
mvn install
然后在你的项目 pom.xml 中添加依赖:
复制
<dependency>
<groupId>com.yunqizhilian</groupId>
<artifactId>yqzl-ai-sdk</artifactId>
<version>1.0.0</version>
</dependency>
快速开始
复制
import com.yunqizhilian.sdk.YunQiZhiLianClient;
import com.yunqizhilian.sdk.YunQiZhiLianConfig;
import com.yunqizhilian.sdk.ParseResult;
import com.yunqizhilian.sdk.PageData;
import com.yunqizhilian.sdk.TaskResponse;
import java.io.File;
import java.util.List;
// 初始化客户端
YunQiZhiLianConfig config = YunQiZhiLianConfig.builder()
.apiKey("as-xxxxxxxxxxxx")
.build();
YunQiZhiLianClient client = new YunQiZhiLianClient(config);
// 提交解析任务(本地文件)
TaskResponse resp = client.parseBankReceipt(new File("receipt.pdf"));
System.out.println("任务已提交: " + resp.getTaskId());
// 等待结果并解析为结构化对象
TaskResponse result = client.waitForResult(resp.getTaskId());
var mapper = client.getObjectMapper();
List<ParseResult> pages = result.getParseResults(mapper);
for (ParseResult page : pages) {
for (PageData field : page.getPageData()) {
System.out.println("付款方: " + field.getAsString("expendCustomer")
+ ", 金额: " + field.getAsString("amount"));
}
}
Node.js SDK
Node.js SDK 使用 TypeScript 编写,提供完整的类型定义,支持 async/await 风格的异步调用。
安装
点击上方「下载源码」按钮获取 SDK 源码包,解压后安装:
复制
# 解压源码包
unzip yqzl-ai-sdk-nodejs.zip
# 在你的项目目录中引入本地包
cd your-project
npm install ../yqzl-ai-sdk-nodejs
快速开始
复制
import { YunQiZhiLianClient } from 'yqzl-ai-sdk';
const client = new YunQiZhiLianClient({ apiKey: 'as-xxxxxxxxxxxx' });
// 提交解析任务
const resp = await client.parseBankReceipt({ file: './receipt.pdf' });
console.log(`任务已提交: ${resp.taskId}`);
// 等待结果
const result = await client.waitForResult(resp.taskId);
result.data.forEach(page => {
page.pageData.forEach(r => {
console.log(`付款方: ${r.expendCustomer}, 金额: ${r.amount}`);
});
});
C# SDK
C# SDK 基于 .NET 6.0 HttpClient 实现,零外部依赖,支持 async/await 异步调用和 IDisposable 资源管理。
安装
点击上方「下载源码」按钮获取 SDK 源码包,解压后在项目中添加引用:
复制
# 解压源码包
unzip yqzl-ai-sdk-csharp.zip
# 在你的项目中添加引用
dotnet add reference ../yqzl-ai-sdk-csharp/YunQiZhiLian.SDK.csproj
快速开始
复制
using YunQiZhiLian.SDK;
using YunQiZhiLian.SDK.Models;
using var client = new YunQiZhiLianClient("as-xxxxxxxxxxxx");
// 提交解析任务
var resp = await client.ParseBankReceiptAsync("./receipt.pdf");
Console.WriteLine($"任务已提交: {resp.TaskId}");
// 等待结果
var result = await client.WaitForResultAsync(resp.TaskId);
foreach (var page in result.Data)
{
foreach (var field in page.PageDataItems)
{
field.TryGetValue("expendCustomer", out var payer);
field.TryGetValue("amount", out var amount);
Console.WriteLine($"付款方: {payer}, 金额: {amount}");
}
}