#发票OCR #财务自动化 #API接入 #Python教程 #Java开发 #PHP编程 #NodeJS #ERP集成 #石榴智能
发票OCR识别API接入教程:从图像到结构化数据的完整实战(附Python/Java/PHP/JS代码)
财务人员每天要面对堆积如山的发票------手工录入效率低、容易出错、耗时耗力。想象一下:如果能把所有发票一键拍照上传,系统自动提取金额、发票号、税号等信息并录入财务系统,效率将提升多少?
这正是发票OCR(光学字符识别)技术的价值所在。2025年全球发票OCR API市场规模约951百万美元,预计到2032年将达到1388百万美元,年复合增长率为5.6%。这一需求的背后,是87%的中大型企业已将发票查验纳入财务自动化核心流程的现状。
本文将从零开始,用Python/Java/PHP/JS四种语言完整演示发票OCR API的接入方法,并提供可直接投入生产的实战代码。
一、发票OCR:解决财务自动化的核心痛点
传统的发票处理流程,财务人员需要逐张录入发票代码、号码、开票日期、购买方、销售方、金额、税额、价税合计等大量信息------效率低下、容易出错、耗时耗力,甚至有会计因连续录入而患上腱鞘炎。
发票OCR识别API的出现彻底改变了这一局面:用户上传一张发票图片或PDF,系统通过光学字符识别技术自动提取发票上的所有关键字段,并以结构化JSON格式返回,直接对接财务系统,实现发票处理的全自动化。
二、石榴智能发票OCR API核心能力
石榴智能API市场专注于提供高性价比的人工智能接口服务,在OCR识别领域积累了深厚的技术经验。其中发票OCR识别API支持增值税发票(专票/普票)、电子发票、卷式发票等多种票种,能返回数十个关键字段,包括:
-
发票基本信息:发票名称、发票代码、发票号码、开票日期
-
金额信息:金额、税额、价税合计(含大写/小写)
-
税务信息:密码区、购买方纳税人识别号、销售方纳税人识别号
-
双方信息:购买方/销售方的名称、地址、电话、开户行及账号
-
明细信息:项目名称、规格型号、单位、数量、单价、金额、税率、税额
-
票面附加信息:开票人、复核、收款人、备注

石榴智能API市场的定价极具竞争力,发票OCR识别API的单价为¥0.012/次,远低于主流云厂商的同类服务。
支持免费在线测试体验,注册即送免费调用额度,支持免费在线测试,并提供了Python/Java/PHP/JS等多种语言的代码示例,能够满足从初创团队到大型企业的不同需求。
三、接入前准备
3.1 获取API凭证
-
访问石榴智能API市场注册账
-
登录控制台,在"我的应用"中找到你的APPCODE
-
记下该APPCODE,后续所有接口调用都需要作为身份凭证
3.2 API基本信息
| 参数 | 值 |
|---|---|
| 请求地址 | https://ocr-api.shiliuai.com/api/invoice_ocr/v1 |
| 请求方式 | POST |
| Content-Type | application/json |
| Authorization | APPCODE {你的APPCODE}(APPCODE后有英文空格) |
3.3 请求参数说明
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
| file_base64 | 是 | string | Base64编码的发票图片文件或者URL,支持jpg/png/pdf格式,小于20MB |
3.4 返回数据结构
{
"code": 200,
"success": true,
"msg": "OK",
"msg_cn": "成功",
"data": {
"n": 1,
"content": [{
"标题": "浙江增值税电子普通发票",
"发票号码": "12345678",
"开票日期": "2023-05-18",
"购买方名称": "低价买入有限责任公司",
"销售方名称": "高价卖出有限责任公司",
"购买方纳税人识别号": "440123456789451",
"销售方纳税人识别号": "550123456789451",
"大写金额": "捌拾玖万肆仟伍佰陆拾壹",
"小写金额": "894561.00",
"项目": [...]
}]
}
}
四、多语言接入代码实战
统一说明:支持免费在线体验,API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)
API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/invoice-ocr

4.1 Python 接入代码
python
# ==============================================================================
# 免费在线体验:https://market.shiliuai.com/tools/invoice-ocr
# API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/invoice-ocr
# 支持免费在线体验
# API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)
# ==============================================================================
# -*- coding: utf-8 -*-
import requests
import base64
import json
# 请求接口
URL = "https://ocr-api.shiliuai.com/api/invoice_ocr/v1"
# 图片转base64
def get_base64(file_path):
with open(file_path, 'rb') as f:
data = f.read()
b64 = base64.b64encode(data).decode('utf8')
return b64
def demo(appcode, file_path):
# 请求头
headers = {
'Authorization': 'APPCODE %s' % appcode,
'Content-Type': 'application/json'
}
# 请求体
b64 = get_base64(file_path)
data = {"file_base64": b64}
# 请求
response = requests.post(url=URL, headers=headers, json=data)
content = json.loads(response.content)
print(content)
if __name__=="__main__":
appcode = "你的APPCODE"
file_path = "本地文件路径"
demo(appcode, file_path)
4.2 Java 接入代码
java
// ==============================================================================
// 免费在线体验:https://market.shiliuai.com/tools/invoice-ocr
// API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/invoice-ocr
// 支持免费在线体验
// API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)
// ==============================================================================
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Base64;
public class Main {
public static String get_base64(String path) {
String b64 = "";
try {
// 使用Commons IO简化文件读取
byte[] content = FileUtils.readFileToByteArray(new File(path));
// 使用JDK自带的Base64
b64 = Base64.getEncoder().encodeToString(content);
} catch (IOException e) {
e.printStackTrace();
}
return b64;
}
public static void main(String[] args) {
String url = "https://ocr-api.shiliuai.com/api/invoice_ocr/v1";// 请求接口
String appcode = "你的APPCODE";
String file_path = "本地文件路径";
Map headers = new HashMap<>();
headers.put("Authorization", "APPCODE " + appcode);
headers.put("Content-Type", "application/json");
// 请求体
requestObj = new JSONObject();
requestObj.put("file_base64", get_base64(file_path));
String bodys = requestObj.toString();
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpPost httpPost = new HttpPost(url);
for (Map.Entry entry : headers.entrySet()) {
httpPost.addHeader(entry.getKey(), entry.getValue());
}
StringEntity entity = new StringEntity(bodys, "UTF-8");
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost);
int stat = response.getStatusLine().getStatusCode();
if (stat != 200) {
System.out.println("Http code: " + stat);
return;
}
String res = EntityUtils.toString(response.getEntity());
JSONObject res_obj = JSON.parseObject(res);
System.out.println(res_obj.toJSONString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
4.3 PHP 接入代码
php
// ==============================================================================
// 免费在线体验:https://market.shiliuai.com/tools/invoice-ocr
// API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/invoice-ocr
// 支持免费在线体验
// API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)
// ==============================================================================
//图片转base64
function get_base64($path){
if($fp = fopen($path, "rb", 0)) {
$binary = fread($fp, filesize($path));// 文件读取
fclose($fp);
$b64 = base64_encode($binary);// 转base64
}else{
$b64="";
printf("%s 文件不存在", $path);
}
return $b64;
}
$url = "https://ocr-api.shiliuai.com/api/invoice_ocr/v1";
$appcode = "你的appcode";
$file_path = "文件路径";
$method = "POST";
// 请求头
$headers = array();
array_push($headers, "Authorization:APPCODE " . $appcode);
array_push($headers, "Content-Type:application/json");
// 请求体
$b64 = get_base64($file_path);
$data = array(
"file_base64" => $b64
);
$post_data = json_encode($data);
// 请求
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
$result = curl_exec($curl);
var_dump($result);
4.4 JavaScript 接入代码(Node.js)
javascript
// ==============================================================================
// 免费在线体验:https://market.shiliuai.com/tools/invoice-ocr
// API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/invoice-ocr
// 支持免费在线体验
// API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)
// ==============================================================================
// 需 Node.js 18+(内置 fetch)
const fs = require('fs');
const apiUrl = 'https://ocr-api.shiliuai.com/api/invoice_ocr/v1';
const appcode = '你的APPCODE';
const filePath = '本地文件路径';
async function main() {
const fileBase64 = fs.readFileSync(filePath).toString('base64');
const res = await fetch(apiUrl, {
method: 'POST',
headers: {
Authorization: 'APPCODE ' + appcode,
'Content-Type': 'application/json'
},
body: JSON.stringify({ file_base64: fileBase64 })
});
const text = await res.text();
if (!res.ok) {
console.error('Http code:', res.status, text);
return;
}
console.log(JSON.stringify(JSON.parse(text), null, 2));
}
main().catch(console.error);
五、企业级集成:发票识别 + 自动录入
单次识别只是第一步,真正的效率提升在于将发票数据自动对接到业务系统。典型的企业级系统架构如下:
javascript
用户上传发票 ↓
发票OCR识别API ↓
数据解析(提取金额/日期/发票号/购买方/销售方) ↓
业务系统(ERP/财务系统) ↓
数据库存储
以下是企业级集成架构图:
javascript
┌─────────────┐ ┌─────────────────────┐ ┌─────────────┐
│ 前端应用 │────▶│ 石榴智能发票OCR API │────▶│ 解析引擎 │
│ 上传发票 │ │ (自动提取关键字段) │ │ (数据校验) │
└─────────────┘ └─────────────────────┘ └─────────────┘
│
▼
┌─────────────┐ ┌─────────────────────┐ ┌─────────────┐
│ ERP/财务系统│◀────│ 自动入库/入账 │◀────│ 数据转换 │
│ (用友/金蝶) │ │ │ │ (格式适配) │
└─────────────┘ └─────────────────────┘ └─────────────┘
通过这套流程,企业可以实现:
-
员工提交报销单时,系统自动提取发票信息并填入表单
-
财务人员处理报销时,系统自动完成发票验真和数据入库
-
月末结账时,系统自动生成财务记录,实现票据归档与智能检索
六、常见问题与解决方案
Q1:支持哪些发票类型?
石榴智能发票OCR支持增值税专用发票、增值税普通发票、增值税电子普通发票、卷式发票、机动车销售统一发票等多种票种。
Q2:图片模糊或倾斜怎么办?
石榴智能API内置了图像预处理功能,会在识别前自动校正倾斜、去模糊、优化亮度和对比度,确保在各种复杂图片条件下都能获得稳定的识别效果。
Q3:多张发票在一张图片上怎么办?
石榴智能发票OCR会自动检测图片中的多张发票并逐一识别,返回的content数组中将包含所有识别到的发票信息,每张发票为一个独立元素,支持批量处理。
Q4:PDF格式是否支持?
支持。直接传入PDF文件的Base64编码即可,API会自动提取其中的发票页面进行识别。但请注意单次调用建议传入单份PDF,多页PDF可能无法完整识别全部票据。
Q5:识别准确率如何?
石榴智能采用深度学习算法和专项训练的发票识别模型,针对不同版式的发票进行优化,在复杂背景、低光照、倾斜等恶劣条件下仍能保持高准确率。
Q6:调用失败的可能原因?
-
APPCODE无效或已过期(检查控制台配置)
-
上传图片过大(建议不超过20MB)
-
网络超时或连接失败
-
请求头未正确设置Authorization字段
七、发票OCR API选型建议
| 需求场景 | 推荐方案 | 理由 |
|---|---|---|
| 初创团队/小规模测试 | 石榴智能 + 免费测试额度 | 注册送免费调用,单价¥0.012/次,性价比极高 |
| 中大型企业财务自动化 | 石榴智能 + 批量对接ERP | 支持全类型发票,识别字段完整,可直接对接财务系统 |
| 高并发/大流量场景 | 石榴智能 + 多并发架构 | API稳定性强,支持弹性扩展,5QPS内可稳定响应 |
| 多语言国际化需求 | 石榴智能 + 各语言SDK | 提供Python/Java/PHP/JS多语言示例,适配各类技术栈 |
从长期看,将发票识别API接入财务系统,每年可节省数千小时的手工录入工时,减少由人工差错导致的财务损失。87%的中大型企业已将该技术纳入核心流程,日均处理量突破50万张的企业占比达34%。在商业竞争中,谁先实现发票处理的自动化,谁就在成本控制和运营效率上占得先机。

八、总结
本文从市场背景到代码实现,完整介绍了发票OCR识别API的接入方法。通过Python/Java/PHP/JS四种主流语言的代码示例,任何人都能在几分钟内完成API的集成。无论是企业财务自动化的选型,还是个人项目的快速开发,石榴智能发票OCR API都是高性价比的选择。
核心收益:
-
发票信息录入从人工数分钟降至秒级完成
-
自动化程度高,杜绝手工输入中的数字漏填、错填
-
结构化数据输出,直接与ERP/财务系统无缝对接
立即体验石榴智能发票OCR
-
🆓 注册即送免费调用额度
-
📘 完整开发文档:API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)
-
🛠️ 在线免费工具:无需代码,上传即识别,支持免费在线体验

相关阅读