增值税发票OCR
<h3>接口描述</h3>
<ul>
<li>支持对增值税普票、专票、全电发票(新版全国统一电子发票,专票/普票)、卷票、区块链发票的所有字段进行结构化识别,包括发票基本信息、销售方及购买方信息、商品信息、价税信息等字段信息的识别准确率超过 99.9%</li>
<li>支持对增值税卷票的 21 个关键字段进行识别,包括发票类型、发票代码、发票号码、机打号码、机器编号、收款人、销售方名称、销售方纳税人识别号、开票日期、购买方名称、购买方纳税人识别号、项目、单价、数量、金额、税额、合计金额(小写)、合计金额(大写)、校验码、省、市 等字段信息的识别准确率可达95%。</li>
</ul>
<h3>请求地址</h3>
<p><code>https://api.jumdata.com/ocr/invoice-v2</code></p>
<h3>请求方式</h3>
<ul>
<li>POST</li>
</ul>
<h3>请求格式</h3>
<ul>
<li>x-www-form-urlencoded</li>
</ul>
<h3>请求参数</h3>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>appId</td>
<td>String</td>
<td>是</td>
<td>服务商分配的唯一标识</td>
</tr>
<tr>
<td>timestamp</td>
<td>Long</td>
<td>是</td>
<td>当前时间的毫秒数</td>
</tr>
<tr>
<td>sign</td>
<td>String</td>
<td>是</td>
<td>签名,见签名算法说明</td>
</tr>
<tr>
<td>imageBase64</td>
<td>String</td>
<td>否</td>
<td>发票图片base64字符串</td>
</tr>
<tr>
<td>pdfBase64</td>
<td>String</td>
<td>否</td>
<td>发票pdf文件base64字符串</td>
</tr>
<tr>
<td>pdfFileNum</td>
<td>String</td>
<td>否</td>
<td>识别pdfBase64对应的文件页,默认1</td>
</tr>
<tr>
<td>ofdBase64</td>
<td>String</td>
<td>否</td>
<td>发票ofd文件base64字符串</td>
</tr>
<tr>
<td>ofdFileNum</td>
<td>String</td>
<td>否</td>
<td>识别ofd文件对应的文件页,默认1</td>
</tr>
<tr>
<td>url</td>
<td>String</td>
<td>否</td>
<td>发票图片、pdf文件、ofd文件的url</td>
</tr>
<tr>
<td>type</td>
<td>String</td>
<td>否</td>
<td>识别的发票类型,默认normal<br> normal - 可识别增值税普票、专票、电子发票 <br> roll - 可识别增值税卷票</td>
</tr>
</tbody>
</table>
<ul>
<li>imageBase64、pdfBase64、ofdBase64、url 必须提供一个,优先级 imageBase64 > pdfBase64 > ofdBase64 > url</li>
<li>发票图片、pdf或odf文件不超过4M,最短边至少15px,最长边最大4096px,</li>
<li>发票图片支持jpg/jpeg/png/bmp格式</li>
</ul>
<h3>签名算法说明</h3>
<pre><code>sign = sha256( appId + appSecret + timestamp)</code></pre>
<p>用服务商分配的 appId、服务商分配的 appSecret,当前时间毫秒数 timestamp,按上述顺序拼接成字符串,再进行 sha256 哈希得到。如下:</p>
<pre><code class="language-java">String appId = &quot;xyzxy2121zxyz&quot;;
String timestamp = &quot;1555378976238&quot;;
String appSecret = &quot;efcefcef1121cefcefc1212121&quot;;
String str = appId + appSecret + timestamp;
String sign = sha256(str);</code></pre>
<h3>返回样例</h3>
<pre><code class="language-json">{
&quot;code&quot;: 200, // 详见code返回码说明
&quot;msg&quot;: &quot;成功&quot;, // code 对应的描述
&quot;charge&quot;: true, // 计费标志
&quot;taskNo&quot;: &quot;30853523396532582768&quot;, // 本次请求号
&quot;data&quot;: {
&quot;amountInWords&quot;: &quot;壹拾圆整&quot;,//价税合计(大写)
&quot;invoiceTypeOrg&quot;: &quot;&quot;,//发票名称
&quot;machineNum&quot;:&quot;&quot;,//机打号码。仅增值税卷票含有此参数
&quot;agent&quot;: &quot;否&quot;,//是否代开
&quot;city&quot;: &quot;&quot;,//市
&quot;commodityNum&quot;: [//数量
{
&quot;row&quot;: &quot;&quot;,//行号
&quot;word&quot;:&quot;&quot;//内容
}
],
&quot;sellerBank&quot;: &quot;&quot;,//销售方开户行及账号
&quot;sellerName&quot;: &quot;&quot;,//销售方名称
&quot;sellerAddress&quot;: &quot;&quot;,//销售方地址及电话
&quot;checker&quot;: &quot;&quot;,//复核
&quot;purchaserAddress&quot;: &quot;&quot;,//购方地址及电话
&quot;totalTax&quot;: &quot;***&quot;,//合计税额
&quot;payee&quot;: &quot;&quot;,//收款人
&quot;password&quot;: &quot;&quot;,//密码区
&quot;province&quot;: &quot;浙江&quot;,//省
&quot;noteDrawer&quot;: &quot;&quot;,//开票人
&quot;invoiceType&quot;: &quot;电子普通发票&quot;,//发票种类。不同类型发票输出:普通发票、专用发票、电子普通发票、电子专用发票、通行费电子普票、区块链发票、通用机打电子发票、电子发票(专用发票)、电子发票(普通发票)
&quot;amountInFiguers&quot;: &quot;10.00&quot;,//价税合计(小写)
&quot;commodityPlateNum&quot;: [//车牌号。仅通行费增值税电子普通发票含有此参数
{
&quot;row&quot;: &quot;1&quot;,//行号
&quot;word&quot;: &quot;***&quot;//内容
}
],
&quot;commodityTax&quot;: [//税额
{
&quot;row&quot;: &quot;1&quot;,//行号
&quot;word&quot;: &quot;***&quot;//内容
}
],
&quot;purchaserBank&quot;: &quot;&quot;,//购方开户行及账号
&quot;machineCode&quot;: &quot;&quot;,//机器编号。仅增值税卷票含有此参数
&quot;invoiceNumConfirm&quot;: &quot;&quot;,//发票号码的辅助校验码
&quot;commodityStartDate&quot;: [//通行日期起。仅通行费增值税电子普通发票含有此参数
{
&quot;row&quot;: &quot;&quot;,//行号
&quot;word&quot;:&quot;&quot;//内容
}
],
&quot;sellerRegisterNum&quot;: &quot;&quot;,//销售方纳税人识别号
&quot;commodityEndDate&quot;: [//通行日期止。仅通行费增值税电子普通发票含有此参数
{
&quot;row&quot;: &quot;&quot;,//行号
&quot;word&quot;:&quot;&quot;//内容
}
],
&quot;sheetNum&quot;: &quot;&quot;,//联次信息。专票第一联到第三联分别输出:第一联:记账联、第二联:抵扣联、第三联:发票联;普通发票第一联到第二联分别输出:第一联:记账联、第二联:发票联
&quot;invoiceDate&quot;: &quot;2021年11月12日&quot;,//开票日期
&quot;commodityPrice&quot;: [//单价
{
&quot;row&quot;: &quot;&quot;,//行号
&quot;word&quot;:&quot;&quot;//内容
}
],
&quot;invoiceCode&quot;: &quot;&quot;,//发票代码
&quot;onlinePay&quot;: &quot;&quot;,//电子支付标识。仅区块链发票含有此参数
&quot;commodityType&quot;: [//规格型号
{
&quot;row&quot;: &quot;&quot;,//行号
&quot;word&quot;:&quot;&quot;//内容
}
],
&quot;invoiceNum&quot;: &quot;&quot;,//发票号码
&quot;purchaserName&quot;: &quot;&quot;,//购方名称
&quot;checkCode&quot;: &quot;&quot;,//校验码。增值税专票无此参数
&quot;totalAmount&quot;: &quot;10.00&quot;,//合计金额
&quot;commodityVehicleType&quot;: [//类型。仅通行费增值税电子普通发票含有此参数
{
&quot;row&quot;: &quot;1&quot;,//行号
&quot;word&quot;: &quot;***&quot;//内容
}
],
&quot;commodityAmount&quot;: [//金额
{
&quot;row&quot;: &quot;1&quot;,//行号
&quot;word&quot;: &quot;10.00&quot;//内容
}
],
&quot;purchaserRegisterNum&quot;: &quot;&quot;,//购方纳税人识别号
&quot;commodityTaxRate&quot;: [//税率
{
&quot;row&quot;: &quot;1&quot;,//行号
&quot;word&quot;: &quot;0%&quot;//内容
}
],
&quot;commodityUnit&quot;: [//单位
{
&quot;row&quot;: &quot;&quot;,//行号
&quot;word&quot;:&quot;&quot;//内容
}
],
&quot;invoiceCodeConfirm&quot;: &quot;033002100611&quot;,//发票代码的辅助校验码
&quot;remarks&quot;: &quot;&quot;,//备注
&quot;commodityName&quot;: [//货物名称
{
&quot;row&quot;: &quot;1&quot;,//行号
&quot;word&quot;: &quot;*餐饮服务*货物&quot;//内容
}
]
}
}</code></pre>
<h3>错误返回样例</h3>
<pre><code class="language-json">{
&quot;msg&quot;: &quot;图片格式不正确&quot;,
&quot;code&quot;: 400
}</code></pre>
<h3>返回字段说明</h3>
<table>
<thead>
<tr>
<th>字段名</th>
<th><div style="width:420px">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>code</td>
<td>返回码,详见code返回码说明</td>
</tr>
<tr>
<td>msg</td>
<td>code对应的描述</td>
</tr>
<tr>
<td>charge</td>
<td>是否计费</td>
</tr>
<tr>
<td>taskNo</td>
<td>本次请求号</td>
</tr>
<tr>
<td>data</td>
<td>返回具体结果,object类型,详见成功返回体</td>
</tr>
</tbody>
</table>
<h4>code返回码说明</h4>
<table>
<thead>
<tr>
<th>code</th>
<th><div style="width:420px">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>200</td>
<td>成功 (计费)</td>
</tr>
<tr>
<td>400</td>
<td>参数错误</td>
</tr>
<tr>
<td>404</td>
<td>接口地址不正确</td>
</tr>
<tr>
<td>500</td>
<td>系统维护,请稍候再试</td>
</tr>
<tr>
<td>601</td>
<td>接口未开通</td>
</tr>
<tr>
<td>602</td>
<td>账号停用</td>
</tr>
<tr>
<td>603</td>
<td>余额不足请充值</td>
</tr>
<tr>
<td>604</td>
<td>接口停用</td>
</tr>
<tr>
<td>606</td>
<td>调用超限,请稍候再试</td>
</tr>
<tr>
<td>607</td>
<td>ip不在白名单</td>
</tr>
<tr>
<td>609</td>
<td>请求过于频繁,请稍候再试</td>
</tr>
<tr>
<td>610</td>
<td>请求超时</td>
</tr>
<tr>
<td>999</td>
<td>其他,以实际返回为准</td>
</tr>
</tbody>
</table>