文档首页 > > API参考> API> 增值税发票识别

增值税发票识别

分享
更新时间:2020/09/11 GMT+08:00

功能介绍

识别增值税发票图片中的文字内容,并以json格式返回识别的结构化结果。该接口的使用限制请参见约束与限制,详细使用指导请参见OCR服务使用简介章节。

增值税发票仅限于中华人民共和国境内使用的增值税发票

支持的增值税发票包括:增值税专用发票、增值税普通发票、增值税电子普通发票(含通行费发票)、增值税普通发票(卷票)。

如果图片中包含多张卡证票据,请调用智能分类识别服务。

前提条件

在使用增值税发票识别之前,需要您完成服务申请和认证鉴权,具体操作流程请参见申请服务认证鉴权章节。

URL

POST https://{endpoint}/v1.0/ocr/vat-invoice

表1 参数说明

参数

是否必选

说明

endpoint

指定承载REST服务端点的服务器域名或IP,不同服务不同区域的endpoint不同,您可以从终端节点中获取。

例如,OCR服务在“华北-北京四”区域的“endpoint”“ocr.cn-north-4.myhuaweicloud.com”

请求消息

增值税发票识别请求参数请参见表2

表2 请求参数说明

参数

是否必选

参数类型

说明

image

否,该参数与url二选一

String

图像数据,base64编码,要求base64编码后大小不超过10MB。图片最小边不小于100px,最长边不超过8192px,支持JPEG、JPG、PNG、BMP、TIFF格式。

url

否,该参数与image二选一

String

图片的url路径,目前支持:

  • 公网http/https url
  • OBS提供的url,使用OBS数据需要进行授权。包括对服务授权、临时授权、匿名公开授权,详情参见配置OBS访问权限
说明:
  • 接口响应时间依赖于图片的下载时间,如果图片下载时间过长,会返回接口调用失败。
  • 请保证被检测图片所在的存储服务稳定可靠,推荐使用OBS服务存储图片数据。

advanced_mode

Boolean

默认为false,如果传参为true,则返回更多字段,具体请参见表3

响应消息

增值税发票识别响应参数请参见表3
表3 响应参数说明

参数

参数类型

说明

result

Object

调用成功时表示调用结果。

调用失败时无此字段。

type

String

增值税发票类型,可选值如下所示。

  • special:增值税专用发票
  • normal:增值税普通发票
  • electronic:增值税电子普通发票(含通行费发票)
  • roll:增值税普通发票(卷票)

serial_number

String

发票联次。

“advanced_mode”设置为“true”时才返回。

attribution

String

发票归属地。

“advanced_mode”设置为“true”时才返回。

supervision_seal

List

发票监制章。

“advanced_mode”设置为“true”时才返回。

code

String

发票代码。

check_code

String

发票校验码,特定类型增值税发票内不存在该信息时返回空字符串。

machine_number

String

机器编号。

“advanced_mode”设置为“true”时才返回。

print_number

String

机打号码。

“advanced_mode”设置为“true”时才返回。

number

String

发票号码。

issue_date

String

开票日期。

encryption_block

String

密码区。

buyer_name

String

购买方名称。

buyer_id

String

购买方纳税人识别号。

buyer_address

String

购买方地址、电话。

buyer_bank

String

购买方开户行及帐号。

seller_name

String

销售方名称。

seller_id

String

销售方纳税人识别号。

seller_address

String

销售方地址、电话。

seller_bank

String

销售方开户行及帐号。

subtotal_amount

String

合计金额。

subtotal_tax

String

合计税额。

total

String

价税合计(小写)。

total_in_words

String

价税合计(大写)。

“advanced_mode”设置为“true”时才返回。

remarks

String

备注。

“advanced_mode”设置为“true”时才返回。

receiver

String

收款人。

“advanced_mode”设置为“true”时才返回。

reviewer

String

复核。

“advanced_mode”设置为“true”时才返回。

issuer

String

开票人。

“advanced_mode”设置为“true”时才返回。

seller_seal

List

销售方发票专用章。

“advanced_mode”设置为“true”时才返回。

item_list

Array of objects

货物或应税劳务列表。

name

String

货物或应税劳务、服务名称。

specification

String

规格型号。

unit

String

单位。

quantity

String

数量。

unit_price

String

单价。

license_plate_number

String

车牌号码。

“advanced_mode”设置为“true”时才返回。

vehicle_type

String

车辆类型。

“advanced_mode”设置为“true”时才返回。

start_date

String

通行日期起。

“advanced_mode”设置为“true”时才返回。

end_date

String

通行日期止。

“advanced_mode”设置为“true”时才返回。

amount

String

金额。

tax_rate

String

税率。

tax

String

税额。

confidence

JSON

各个字段的置信度。

“advanced_mode”设置为“true”时才返回。

error_code

String

调用失败时的错误码,具体请参见错误码

当出现错误码“ModelArts.4204”时,请参考为什么调用API时提示“ModelArts.4204”?章节。

调用成功时无此字段。

error_msg

String

调用失败时的错误信息。

调用成功时无此字段。

示例

“endpoint”即调用API的请求地址,不同服务不同区域的“endpoint”不同,具体请参见终端节点

例如增值税发票识别服务部署在“华北-北京四”区域的“endpoint”“ocr.cn-north-4.myhuaweicloud.com”,请求URL为“https://ocr.cn-north-4.myhuaweicloud.com/v1.0/ocr/vat-invoice”

  • 请求示例(方式一:使用图片的base64编码)
    POST https://{endpoint}/v1.0/ocr/vat-invoice 
        
     Request Header:   
     Content-Type: application/json   
     X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG...      
     Request Body:
     {   
        "image":"/9j/4AAQSkZJRgABAgEASABIAAD/4RFZRXhpZgAATU0AKgAAAAj...",
        "advanced_mode": true
      }
  • 请求示例(方式二:使用图片URL)
    POST https://{endpoint}/v1.0/ocr/vat-invoice 
        
     Request Header:   
     Content-Type: application/json   
     X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG...     
     Request Body:
     {
         "url":"https://BucketName.obs.xxxx.com/ObjectName",
         "advanced_mode": true
      }
  • Python语言请求代码示例(其他语言参照下列示例编写或使用OCR SDK)
    # encoding:utf-8
    
    import requests
    import base64
    
    url = "https://{endpoint}/v1.0/ocr/vat-invoice"
    token = "用户获取得到的实际token值"
    headers = {'Content-Type': 'application/json', 'X-Auth-Token': token}
    
    imagepath = r'./data/vat-invoice-demo.png'
    with open(imagepath, "rb") as bin_data:
        image_data = bin_data.read()
    image_base64 = base64.b64encode(image_data).decode("utf-8")  # 使用图片的base64编码
    payload = {"image": image_base64}  # url与image参数二选一
    response = requests.post(url, headers=headers, json=payload)
    print(response.text)
  • 成功响应示例
    {
        "result": {
            "type": "special", 
            "serial_number": "第二联:发票联",
            "attribution": "深圳", 
            "supervision_seal": [
                "全国统一发票监制章", 
                "深圳", 
                "国家税务总局监制"
            ], 
            "code": "310316XXXX", 
            "check_code": "", 
            "machine_number": "310316XXXX", 
            "print_number": "", 
            "number": "60543XXX", 
            "issue_date": "2017年08月30日", 
            "encryption_block": "6/+1+733<672085+063>82>30<1872/1<>*312671<9<1-11208-746599*6/>+7>2163+141-8737*4932+7970*11892126>0*-+7+78>1", 
            "buyer_name": "XX有限公司", 
            "buyer_id": "917107277650880665", 
            "buyer_address": "XXXX", 
            "buyer_bank": "XX银行20384543252XXXX", 
            "seller_name": "餐饮有限公司", 
            "seller_id": "9351099411892126", 
            "seller_address": "XXXX", 
            "seller_bank": "XX银行991101526087XXXX", 
            "subtotal_amount": "¥8850.00", 
            "subtotal_tax": "¥1504.50", 
            "total": "¥10354.50", 
            "total_in_words": "肆仟肆佰玖拾圆整", 
            "remarks": "校验码11XXXXXXXXXXX", 
            "receiver": "XX", 
            "reviewer": "XX", 
            "issuer": "XX", 
            "seller_seal": [
                "深圳市XXX有限公司", 
                "91440300736259277E", 
                "发票专用章"
            ], 
            "item_list": [
                {
                    "name": "食品A", 
                    "specification": "200g/盒", 
                    "unit": "盒", 
                    "quantity": "300", 
                    "unit_price": "28.00", 
                    "license_plate_number": "", 
                    "vehicle_type": "", 
                    "start_date": "", 
                    "end_date": "", 
                    "amount": "8400.00", 
                    "tax_rate": "17%", 
                    "tax": "1428.00"
                }
            ]
            "confidence": {
                "type": 0.9960, 
                "serial_number": 0.9652, 
                "attribution": 0.9960, 
                "supervision_seal": [
                    0.9970, 
                    0.9945, 
                    0.9960
                ], 
                "code": 0.99999, 
                "check_code": 0.8430, 
                "machine_number": 0.9070, 
                "print_number": 0.0000, 
                "number": 1.9856, 
                "issue_date": 0.9848, 
                "encryption_block": 0.9922, 
                "buyer_name": 0.9854, 
                "buyer_id": 0.9869, 
                "buyer_address": 0.0000, 
                "buyer_bank": 0. 0000, 
                "seller_name": 0.9883, 
                "seller_id": 0.9914, 
                "seller_address": 0.9952, 
                "seller_bank": 0.9829, 
                "subtotal_amount": 0.9533, 
                "subtotal_tax": 0.9167, 
                "total": 0.9444, 
                "total_in_words": 0.9854, 
                "remarks": 0.8762, 
                "receiver": 0.9850, 
                "reviewer": 0.9759, 
                "issuer": 0.9872, 
                "seller_seal": [
                    0.9883, 
                    0.9914, 
                    0.9999
                ], 
                "item_list": [
                    {
                        "name": 0.9779, 
                        "specification": 0.0000, 
                        "unit": 0.0000, 
                        "quantity": 0. 0000, 
                        "unit_price": 0. 0000, 
                        "license_plate_number": 0. 0000, 
                        "vehicle_type": 0. 0000, 
                        "start_date": 0. 0000, 
                        "end_date": 0. 0000, 
                        "amount": 0.8227, 
                        "tax_rate": 0.5183, 
                        "tax": 0.8394
                    }
                ]
            }
        }
    }
  • 失败响应示例
    {
        "error_code": "AIS.0103",
        "error_msg": "The image size does not meet the requirements."
    }

状态码

状态码请参见状态码

错误码

错误码请参见错误码

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问