增值税发票识别
京东万象 官方文档
基于业界领先的基于业界领先的深度学习技术,识别发票代码,发票号码,购方名称,购方税号等多个关键字段,准确可靠
基本说明:
接口地址:https://way.jd.com/JDAI/ocr_invoice
返回格式:json
请求方式:get/post
请求示例:https://way.jd.com/JDAI/ocr_invoice?appkey=appkey&body=image
请求参数说明:
名称 类型 必填 说明
body image 必填 图片
返回参数说明:
名称 类型 说明
charge boolean 扣费
msg string 信息提示
result object 数据查询结果
JSON返回示例:
{
	"code": 0,
	"charge": false,
	"remainTimes": 4998,
	"remainSeconds": -1,
	"msg": "查询成功",
	"result": {
		"code": 0,
		"message": "success",
		"request_id": "815774d6ed6ca43e5d0cce316d36d822",
		"result": {
			"checker": "盛霞",
			"drawer": "张立辉",
			"buyer_address": "德徽长丰双凤经济开发区淮南北路与双凤路交叉口950618",
			"buyer_bank": "开户行及账事国银行长丰支行182745058998",
			"buyer_name": "安徽省京邦达供应链科技有限公司",
			"buyer_tax_no": "91340121MA2NXC8K97",
			"code": "3100191130",
			"invoice_amount": "183.50",
			"invoice_date": "20190722",
			"invoice_no": "35659539",
			"invoice_type": "01",
			"payee": "赵圆容",
			"saler_address": "上海市嘉定区永盛路2739-2731号(单号)二层、永盛路2763号二层18001982788",
			"saler_bank": "我们农业银行股份有限公司上海新成分理处03832710040006850",
			"saler_name": "葡萄商务酒店(上海)有限公司",
			"saler_tax_no": "91310114MA1GUE1L3N",
			"tax_amount": "5.50",
			"total_amount": "189.00",
			"verify_code": "44095028783173850994"
		}
	}
}
服务级错误码参照
错误码 说明
10000 查询成功
10001 错误的请求appkey
11010 商家接口调用异常,请稍后再试
11030 商家接口返回格式有误
10003 不存在相应的数据信息
10004 URL上appkey参数不能为空
10010 接口需要付费,请充值
10020 万象系统繁忙,请稍后再试
10030 调用万象网关失败, 请与万象联系
10040 超过每天限量,请明天继续
10050 用户已被禁用
10060 提供方设置调用权限,请联系提供方
10070 该数据只允许企业用户调用
10090 文件大小超限,请上传小于1M的文件
完整教学代码示例
<?php
/**
 * Created by PhpStorm.
 * User: FZS
 * Time: 2021/05/01 15:26
 */
class freeApi
{
    private $apiUrl;

    public function __construct()
    {
        $this->apiUrl = 'https://way.jd.com/JDAI/ocr_invoice?appkey=appkey&body=image';
    }

    /**
     * 获取结果
     * @return array
     */
    public function getResult()
    {
        return file_get_contents($this->apiUrl);
    }
}
package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

const (
	APIURL   = "https://way.jd.com/JDAI/ocr_invoice?appkey=appkey&body=image"
)

func main() {
	queryUrl := fmt.Sprintf("%s",APIURL)
	resp, err := http.Get(queryUrl)
	if err != nil {
		log.Println(err)
		return
	}

	defer resp.Body.Close()

	body, err := ioutil.ReadAll(resp.Body)

	if err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(string(body))
}