财务发票混合识别接口
接口描述
用户通过发送HTTP Post请求方式提交数据至公有云服务器,服务器识别并返回json格式的识别结果。
接口说明
请求URL:http://api.exocr.com/ocr/v2/fapiao
请求方式:HTTP Post
返回格式:json
Header
参数 | 值 |
---|---|
Content-Type | 使用二进制方式时,为multipart/form-data;使用url方式时,为application/x-www-form-urlencoded |
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
app_key | 是 | string | 请在控制台->我的应用中获取 |
app_secret | 是 | string | 请在控制台->我的应用中获取 |
image_base64 | 否 | string | 图像base64串。image_base64、image_url、image_binary三个参数中至少选择一个,读取优先级从前到后依次降低。如:同时选择了以上三个参数,则以image_base64图像为准。 |
image_url | 否 | string | 图像url地址。image_base64、image_url、image_binary三个参数中至少选择一个,读取优先级从前到后依次降低。如:同时选择了以上三个参数,则以image_base64图像为准。 |
image_binary | 否 | data | 图像二进制。image_base64、image_url、image_binary三个参数中至少选择一个,读取优先级从前到后依次降低。如:同时选择了以上三个参数,则以image_base64图像为准。 |
crop_image | 否 | string | 是否切小图0:不切小图(默认)1:切小图 |
do_query | 否 | int | 是否对增值税发票进行验证 ,0或不传:不验证,1:验证 |
调用示例
java(相关依赖库下载)
package com.exocr.httpclient;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import com.exocr.common.utils.HttpClientUtils;
public class Test {
public static void main(String[] args) throws FileNotFoundException {
/**
* base64
*/
//识别url
String url = " http://api.exocr.com/ocr/v2/fapiao";
//设置请求参数
Map<String, String> params = new HashMap<String, String>();
params.put("app_key", "#####");
params.put("app_secret", "#####");
params.put("crop_image", "1");
//设置识别图像base64编码
params.put("image_base64", "base64ImageStr");
//发送请求,得到识别结果
String result = HttpClientUtils.doPost(url, params);
System.out.println(result);
/**
* url
*/
//设置请求参数、识别图像url
params.put("app_key", "#####");
params.put("app_secret", "#####");
params.put("image_url", "imageUrl");
params.put("crop_image", "1");
//发送请求,得到识别结果
result = HttpClientUtils.doPost(url, params);
System.out.println(result);
/**
* 二进制
*/
//设置请求参数
params.put("app_key", "#####");
params.put("app_secret", "#####");
params.put("crop_image", "1");
//拿到本地图像,写入数据流
File file = new File("/Users/mac/logs/idcard.png");
InputStream in = new FileInputStream(file);
//设置数据流
Map<String, InputStream> streamMap = new HashMap<String, InputStream>();
streamMap.put("image_binary", in);
//发送请求,得到识别结果
result = HttpClientUtils.doPostStream(url, params, streamMap);
//关闭io流
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(result);
}
}
返回示例
{
"result": [{
"image": null,
"expense_type": "2",
"quad": [
580,
122,
1780,
122,
1780,
886,
580,
886
],
"error_msg": "识别成功",
"expense_type_msg": "交通",
"recognize_result": {
"seat_class": {
"item_words": "二等座",
"chinese_key": "座位类型",
"item_score": 1,
"item_image": null,
"item_quad": [
841,
304,
979,
304,
979,
352,
841,
352
]
}
},
"rotation": "0.000000",
"type_msg": "火车票",
"error_code": 0,
"page_no": 1,
"type": "10200"
},
],
"error_code": 0,
"description": "识别成功",
"request_id": "A028410FE3464763A6D72B8321AFF105",
"recognize_time": 15833,
"available_count": 9908
}
返回说明
通用参数
参数 | 类型 | 说明 |
---|---|---|
result | array | 返回结果数组,包括所有识别信息 |
error_code | int | 错误码,返回0为正确,其他为错误 |
description | string | 识别结果描述 |
request_id | string | 请求唯一标识符 |
recognize_time | int | 识别所用时间,单位为毫秒 |
available_count | int | 识别剩余可用次数,次数不足时无法继续识别,可在控制台进行充值次数 |
发票通用识别特有参数
参数 | 类型 | 说明 |
---|---|---|
expense_type | int | 发票用途 |
error_msg | string | 单张小图的错误码描述,无错则返回OK。 |
type | string | 发票类型 |
expense_type_msg | string | 发票用途码对应的中文名 |
type_msg | int | 发票类型码对应的中文名 |
recognize_result | string | 每个子图的识别结果 |
quad | array | 发票的位置,依次为左上,右上,右下,左下顺时针四个点的x,y值 |
error_code | int | 错误码。 |
page_no | int | 返回多页pdf或者tiff的情况下所在页码,若是单页返回1 |
image | 根据post方式传入的参数决定是否返回子图,格式是base64。 | |
query_result | string | 如果设置do_query参数为1,将返回发票验证详细信息 |
pass_fee | int | 发票特殊标记 |
invoice_no_warning | int | 增值税发票号码不一致告警 |
score | float | 发票置信度 |
page_name | string | 增值税普 |
qrcode_warning | int | 二维码不一致告警 |
recognize_result特有参数
参数 | 类型 | 说明 |
---|---|---|
item_words | int | 识别结果 |
chinese_key | string | 该字段的中文名称 |
item_score | string | 得分 |
item_image | string | 返回调整过的base64图像编码(切边、校正) |
item_quad | int | 每个字段的坐标,格式同上 |
date | string | 开票日期 |
tax_amount | string | 合计税额(增值税专用发票,增值税电子普通(专用),区块链发票,电子发票,全电发票)/ 增值税税额(机动车销售统一发票) |
sheet_type | object | 联次 |
seller_bank_info | object | 销方开户行及账号 |
notes | string | 备注 |
qrcode | object | 二维码 |
seal | object | 发票印章 |
buyer_name | string | 购方名称 |
checker | object | 复核 |
amount_big | object | 价税合计(大写) |
issuer | object | 开票人 |
invoice_name | object | 发票名称 |
buyer_tax_id | object | 购方纳税人识别号 |
seller_tax_id | object | 销方纳税人识别号 |
amount_little | object | 价税合计小写 |
seller_name | object | 销方名称 |
check_code | object | 校验码 |
pretax_amount | object | 合计金额(增值税专用发票,增值税电子普通(专用),区块链发票,电子发票,全电发票)/ 不含税价小写(机动车销售统一发票) |
details | object | 明细 |
buyer_address | object | 购方地址电话(增值税专用发票,增值税电子普通(专用),区块链发票)/ 买方单位或个人住址(二手车销售统一发票) |
invoice_no | object | 发票号码 |
buyer_bank_info | object | 购方开户行及账号 |
cipher_text | object | 密码区(增值税专用发票,增值税电子普通(专用),区块链发票)/ 税控码(机动车销售统一发票,二手车销售统一发票) |
seller_address | object | 销方地址电话(增值税专用发票,增值税电子普通(专用),区块链发票)/ 卖方单位或个人住址(机动车销售统一发票,二手车销售统一发票) |
machine_code | object | 机器编号 |
invoice_code | object | 发票代码 |
receiptor | object | 收款人 |
price_tax_correction | object | 价税互纠 |