北京门诊发票OCR识别
一、接口描述
1. 功能描述
该 API 用于识别提取北京门诊和中央门诊样式发票上的字段信息。
2. 接口数据要求:
编码格式:UTF-8
图片要求:
- 格式为 JPG(JPEG), PNG
- 宽和高大于 128px,小于等于 6000px
- 小于等于 5 MB
3. 接口使用:
平台为每个API提供试用体验服务,您在AI市场选择“免费试用”规格下单后,即可开始体验业内领先的人工智能API服务。 免费试用服务具有调用量、QPS限制,如需更高性能的API服务,可以提交咨询工单,联系京东AI扩容购买。
在获得使用权限后,您可使用已经封装好的SDK/参照接口鉴权规则进行相应开发,整体流程详见 接入流程
用户需要使用图片base64编码去做请求,使用其他图片的base64编码请求成功时也会加入计费。
二、请求说明
1. 接口地址 :
https://aiapi.jd.com/deepfinch/ocr_medical_invoice_beijing
2. 请求方式:
post
3. 请求参数
(1)query请求参数
公共请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
appkey | String | 是 | 80d2b762ecb86593f9668526920f46c | 您的appkey,可在买家中心控制台中获取 |
timestamp | long | 是 | 1541491668060 | 请求的时间戳,精确到毫秒,timestamp有效期5分钟 |
sign | String | 是 | 2e148773a0337a8f2200ba90d445f083 | 签名,根据规则MD5(sectetkey+timestamp) |
(2)header请求参数
业务请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
Content-Type | String | 是 | application/json | 标准编码格式 |
(3)body请求参数
业务请求参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
image_base64 | String | 是 | 图片的base64格式数据 |
body输入示例:
{
"image_base64": "xxxxxx"
}
三、返回说明
1.返回参数
(1)公共返回参数
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
code | string | 1000 | 参见下方错误码-系统级错误码 |
charge | boolean | false 或 true | false:不扣费, true:扣费 |
remainTimes | long | 1305 | 剩余调用次数;免费api:每天剩余调用次数;收费api:剩余次数;无限制时为-1 |
remainSeconds | long | 1223456 | 剩余调用时间(s);免费api:-1;收费api:剩余调用时间;无限制时为-1 |
msg | string | 查询成功 | 参见下方错误码-系统级错误码 |
result | object | {...} | 查询结果 |
(2)业务返回参数
字段 | 类型 | 说明 |
---|---|---|
request_id | string | 本次请求的id |
status | string | 状态,正常为 OK |
degree | int | 图片旋转角度 |
medical_result | object | 票据信息提取结果 |
1.medical_result
字段的参数:
字段 | 类型 | 说明 |
---|---|---|
type | int | 票据类型: 0-未知, 1-门诊票据, 2-住院票据 |
note_no | string | 发票号 |
patient_name | string | 患者姓名 |
patient_gender | int | 患者性别: 0-未知,1-男, 2-女 |
billing_date | string | 开票日期 |
hospital_dates | array | 入出院日期,[入院日期, 出院日期],日期格式为YYYY-MM-DD |
hospital_days | float | 住院天数 |
cost_categories | array | 大类项目 |
cost_detail_list | array | 细类项目 |
hospital_name | string | 医院名称 |
total_cost | float | 发票总金额 |
medical_insurance_type | string | 医保类型;根据票面内容提取 |
medical_organization_type | string | 医疗机构类型 |
trade_serial_number | string | 交易流水号 |
service_serial_number | string | 业务流水号 |
social_security_card_number | string | 社会保障号码 |
payments_info | array | 支付信息项 |
checksum | object | 票据内字段校验结果:-1-无法校验,0-校验不通过,1-校验通过 |
charging_units | string | 收款单位 |
hospital_no | string | 住院号/门诊号 |
payee | string | 收款人 |
1.1 checksum
字段的参数:
字段 | 类型 | 说明 |
---|---|---|
total_cost | int | 总金额 |
cost_categories | int | 大类项目 |
note_no | int | 发票号 |
billing_date | int | 开票时间 |
payments_class_b | int | 乙类自付金额 |
payments_class_c | int | 丙类自付金额 |
1.2 cost_categories
字段的参数:
字段 | 类型 | 说明 |
---|---|---|
name | string | 大类单项名称 |
cost | float | 大类单项花费 |
1.3 cost_detail_list
字段的参数:
字段 | 类型 | 说明 |
---|---|---|
amount | string | 数量 |
medical_type | int | 项目类型: 0-未知,1-西药 2-中药 3-诊疗项目 |
name | string | 通过细目名称匹配的医保库名称 |
ocr_name | string | 结合医保库修正的细目名称 ;建议细目名称用此条 |
origin_ocr_name | string | 票面上原始打印的细目名称 |
price | float | 细目金额 |
selfpay | float | 自付金额;从票面提取或通过细目金额*自付比例 计算 |
selfpay_ratio | float | 自付比例,取值范围[0-1],从票面提取或通过细目名称查询医保库获取 |
spec | string | 规格 |
unit_price | float | 单价 |
level | string | 医保等级;根据票面内容提取 |
check_info | int | 整个条目(含细目名称、细目金额、规格、单价、数量、自付金额)校验是否通过: -1-无法校验,0-校验不通过,1-校验通过 |
check_info_price | int | 细目金额校验是否通过: -1-无法校验,0-校验不通过,1-校验通过 |
check_name_price | int | 细目名称和细目金额校验是否通过: -1-无法校验,0-校验不通过,1-校验通过 |
1.4 payments_info
的字段:
字段 | 类型 | 说明 |
---|---|---|
name | string | 名称 |
amount | float | 金额 |
check_info | int | 金额校验是否通过: -1-无法校验,0-校验不通过,1-校验通过 |
1.4.1 payments_info
中name
的取值:
以下字段如票面中不包含或未提取到,不做输出
字段 |
---|
自付一/门诊大额自付金额 |
自付二/个人自付2 |
自费/自费金额 |
个人支付金额/个人现金支付金额 |
个人账户支付/个人账户支付金额 |
本次医保范围内金额 |
累计医保内范围金额 |
年度门诊大额累计支付 |
年度累计医保范围内金额 |
年度居民基本医疗保险基金门诊累计支付 |
本次支付后个人账户余额 |
起付金额 |
超封顶金额 |
门诊大额支付/门诊大额支付金额 |
退休补充支付/退休补充金额 |
残军补充支付/残军补助支付金额/军残补助保险金额 |
单位补充险[原公疗]支付/补充保险支付金额 |
其他医保支付 |
基金支付/医保基金支付金额/医保统筹支付 |
2.返回示例
返回结果示例
{
"request_id": "TIDa0f74432e2134772a8974cb086e9ae6b",
"status": "OK",
"degree":0,
"medical_result": {
"average_prob": 0.7073246833276072,
"billing_date": "2018-03-28",
"checksum": {
"cost_categories": 1,
"total_cost": 1,
"note_no": 1,
"billing_date": 1
},
"cost_categories": [],
"fund_payments": [],
"payments_info": [{
"amount": 102376.98,
"check_info": -1,
"name": "个人支付金额"
}],
"hospital_name": "烟台市州台山医院",
"note_no": "401238134315",
"patient_gender": 2,
"patient_name": "曲多多",
"total_cost": 855.32,
"type": 1
}
}
四、错误码信息
状态码 | status 字段 |
说明 |
---|---|---|
400 |
INVALID_ARGUMENT | 请求参数错误 |
400 |
DETETION_FAILED | 图片检测失败 |
400 |
DOWNLOAD_ERROR | 网络地址图片获取失败 |
401 |
UNAUTHORIZED | 未授权或授权失败 |
401 |
KEY_EXPIRED | 账号过期 |
403 |
NO_PERMISSION | 无调用权限 |
403 |
OUT_OF_QUOTA | 调用次数超出限额 |
403 |
RATE_LIMIT_EXCEEDED | 调用频率超出限额 |
404 |
NOT_FOUND | 请求路径错误 |
500 |
INTERNAL_ERROR | 服务器内部错误 |
备注: 以上40X系列错误描述请参考reason
字段
输出样例
{
"status": "INVALID_ARGUMENT",
"reason": "must specify 'file' or 'url' argument",
"request_id": "TID8bf47ab6eda64476973cc5f5b6ebf57e"
}