发票识别OCR API接入详解:自动提取发票全字段并接入财务系统(附Python/JS/PHP示例)
发票识别OCR API接入详解:自动提取发票全字段并接入财务系统(附Python/JS/PHP示例)
企业财务场景中有一个长期存在的低效问题:发票信息录入全靠人工——每天处理几十到上百张发票,逐张录入金额、日期、税号等信息,费时费力还容易出错。发票OCR识别API的出现,将这一手工工作在3秒内自动化完成。
本文将以石榴智能发票识别OCR API为例,带你在几分钟内实现发票全字段自动提取,并演示如何将识别结果直接接入财务系统。
一、企业发票处理的痛点与OCR解决方案
1.1 当前企业发票处理的常见困境
人工录入效率低:财务人员每天需要处理大量纸质发票和电子发票,逐张录入信息耗时耗力
错误率高:手工抄写容易出现数字错位、填写遗漏等错误,后续纠错成本高昂
版式多样适应困难:增值税专用发票、普通发票、电子发票等不同版式,字段位置差异大
票据归档不便:纸质发票难以检索,电子发票格式不统一
1.2 发票OCR识别的完整处理流程
一张发票从图片到结构化数据,经过以下技术流程:首先进行图像预处理(去噪、纠偏、增强亮度),然后通过深度学习模型定位发票关键字段区域,接着进行字符识别与语义校验,最后以JSON格式输出识别结果。
主流发票OCR API通常能识别以下核心字段:发票代码、发票号码、开票日期、购买方名称、销售方名称、纳税人识别号(双方)、金额(含税/不含税)、税额、价税合计、开户行及账号、开票人、复核人、收款人以及商品明细清单等数十个字段。
二、主流发票识别OCR API横评
2026年3月,有开发者对国内主流OCR服务商进行了独立测评,以下是核心数据:
| 对比维度 | 石榴智能 | 腾讯云 | 百度OCR | 阿里云 |
|---|---|---|---|---|
| 电子发票PDF准确率 | ≥99% | 99.5% | 98.8% | 98.9% |
| 清晰拍照票准确率 | ≥98% | 98.3% | 97.5% | 97.8% |
| 模糊拍照票准确率 | ≥98% | 95.2% | 93.8% | 94.5% |
| 免费额度 | 注册即送免费测试,支持在线免费测试 | 1000次/月 | 500次/天 | 200次/月 |
| 单价(万元次内) | ¥0.015/次 | ¥0.035/次 | ¥0.04/次 | ¥0.0825/次 |
| 批量并发支持 | ✅ 5 QPS基础 | 需额外配置 | 按天购买QPS | 需选购资源包 |
| 发票版式覆盖率 | 专票/普票/电子票/卷票/铁路,航空运输行程单/机打发票/定额发票等 | 专票/普票/电子票 | 专票/普票/电子票 | 专票/普票/电子票 |
上表中腾讯云、百度、阿里云的准确率数据来自独立第三方测评。
关键解读:
价格维度:石榴智能定价为¥0.015/次,仅为百度的30%、阿里云的14.5%,中高用量场景下一年可节省数千至数万元成本。
准确率维度:石榴智能在模糊照片等偏低质量场景下准确率较高,核心得益于内置的图像预处理能力。
免费额度:石榴智能新注册用户赠送免费额度,可直接用于测试接入和效果验证;并且支持免费在线测试。
三、石榴智能发票识别OCR核心能力
石榴智能发票识别OCR基于深度学习算法,针对增值税发票的复杂版式进行了专项训练,主要特点如下:
识别字段齐全:支持数十个字段的结构化输出,包括发票名称、金额、税额、价税合计、发票代码、发票号码、开票日期、密码区、纳税人识别号、地址电话、开户行及账号、开票人、复核人、收款人、备注等
支持多种发票类型:增值税专用发票、普通发票、电子发票、卷式发票等全覆盖
高准确率:基于海量真实发票样本训练,复杂条件下表现稳定
内置图像预处理:自动校正倾斜、去模糊、归一化亮度,无需额外预处理
简单接入:提供Python、Java、Go、PHP、JS等多语言接入示例,3行代码即可完成调用
返回数据示例:
json
{ "success": true, "data": { "发票类型": "浙江增值税电子普通发票", "发票号码": "12345678", "发票代码": "032001900111", "开票日期": "2025-03-15", "购买方名称": "某某科技有限公司", "购买方纳税人识别号": "91110108MA00XXXXX", "销售方名称": "某某商贸有限公司", "销售方纳税人识别号": "91110105MA01YYYYY", "价税合计": "894561.00", "合计金额": "792000.00", "合计税额": "102561.00", "开票人": "张三", "商品明细": [ {"名称": "办公设备", "规格型号": "XX-1000", "单位": "台", "数量": 10, "单价": "5000.00", "金额": "50000.00", "税率": "13%", "税额": "6500.00"} ] } }💡 针对不同格式的发票类型,石榴智能均返回一致的字段键名(如“发票号码”“价税合计”等),无论用户上传的是专票还是普票,后端系统都能用同一套代码直接入库——这一点对于财务系统的对接非常重要。
四、发票识别API接入实战(Python / JS / PHP)
4.1 准备工作
访问石榴智能API市场注册账号
登录后在控制台找到APPCODE(API调用凭证)
准备一张待识别的发票图片(支持任何图片格式以及PDF格式,尺寸不超过20MB)
提示:支持免费在线测试;注册后自动获赠免费调用额度,可直接用于测试,零成本评估识别效果。
4.2 Python 接入代码
# ============================================================================== # 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.3 JavaScript 接入代码(Node.js)
// ============================================================================== // 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);4.4 PHP 接入代码
// ============================================================================== // 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);五、发票识别 + 财务系统录入完整实现
5.1 整体系统架构
员工上传发票图片 (手机拍照/扫描件/电子PDF) ↓ 石榴智能发票OCR API (自动提取全字段结构化数据) ↓ 数据清洗与校验模块 (金额合理性校验/税号格式校验) ↓ 财务/ERP系统入库 (自动写入报销单/生成凭证) ↓ 数据库存储 + 报销流程触发5.2 完整落地代码示例
# ============================================================================== # API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/invoice-ocr # 支持免费在线体验 # API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等) # ============================================================================== import requests import base64 import json import mysql.connector from datetime import datetime # 石榴智能发票识别配置 INVOICE_API_URL = "https://ocr-api.shiliuai.com/api/invoice_ocr/v1" APPCODE = "你的APPCODE" def invoice_ocr(image_path): """调用发票OCR识别API""" with open(image_path, 'rb') as f: image_base64 = base64.b64encode(f.read()).decode('utf-8') headers = { 'Authorization': f'APPCODE {APPCODE}', 'Content-Type': 'application/json' } response = requests.post(INVOICE_API_URL, headers=headers, json={"file_base64": image_base64}) return response.json() def validate_invoice_data(data): """数据校验:确保金额>0、税号格式正确、开票日期有效""" errors = [] try: amount = float(data.get('价税合计', '0').replace(',', '')) if amount <= 0: errors.append("价税合计金额无效") except ValueError: errors.append("价税合计格式错误") tax_no = data.get('购买方纳税人识别号', '') if tax_no and len(tax_no) not in [15, 18, 20]: errors.append("纳税人识别号长度异常") # 开票日期校验 invoice_date = data.get('开票日期', '') if invoice_date: try: datetime.strptime(invoice_date, '%Y-%m-%d') except ValueError: errors.append("开票日期格式异常") return errors def save_to_database(data, db_config, table_name="invoices"): """将发票数据写入MySQL数据库""" conn = mysql.connector.connect(**db_config) cursor = conn.cursor() sql = f""" INSERT INTO {table_name} (invoice_number, invoice_code, invoice_date, buyer_name, buyer_tax_no, seller_name, seller_tax_no, total_amount, tax_amount, drawer, status, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) """ values = ( data.get('发票号码', ''), data.get('发票代码', ''), data.get('开票日期', ''), data.get('购买方名称', ''), data.get('购买方纳税人识别号', ''), data.get('销售方名称', ''), data.get('销售方纳税人识别号', ''), data.get('价税合计', '0'), data.get('合计税额', '0'), data.get('开票人', ''), 'pending', # 状态:待审核 datetime.now() ) cursor.execute(sql, values) conn.commit() cursor.close() conn.close() def process_invoice(image_path, db_config): """完整处理流程:识别 → 校验 → 入库""" # 1. OCR识别 result = invoice_ocr(image_path) if not result.get('success'): return {"success": False, "error": "OCR识别失败", "detail": result} # 2. 数据校验 invoice_data = result.get('data', {}) errors = validate_invoice_data(invoice_data) if errors: return {"success": False, "error": "数据校验失败", "errors": errors} # 3. 入库 try: save_to_database(invoice_data, db_config) return {"success": True, "invoice_number": invoice_data.get('发票号码')} except Exception as e: return {"success": False, "error": f"数据库写入失败: {str(e)}"} # 使用示例 if __name__ == "__main__": db_config = { 'host': 'localhost', 'user': 'your_user', 'password': 'your_password', 'database': 'finance_db' } result = process_invoice("invoice.jpg", db_config) print(json.dumps(result, indent=2, ensure_ascii=False))六、发票OCR入账自动化流程参考
发票OCR的核心价值在于实现“识别即入账”,标准的自动化流程如下:
Step 1:用户上传发票图片或PDF
员工在报销系统中上传发票文件
系统支持JPEG、PNG、PDF等多种格式
Step 2:调用OCR发票识别API
系统将图片转换为Base64编码
调用石榴智能发票识别API获取结构化数据
Step 3:数据解析与字段提取
自动提取金额、日期、发票号、税号等关键信息
进行数据合理性校验(金额>0、税号格式等)
Step 4:业务系统数据处理
将识别数据自动填入报销单
或直接生成财务凭证记录
触发自动审批流程(小额免审)
Step 5:数据库存储与归档
识别结果存入数据库
原始发票图片归档到OSS
建立发票检索索引
七、发票OCR应用场景与价值
报销单自动处理:员工提交发票图片/PDF,系统自动提取发票信息填入报销系统,员工无需手动填写任何表单。
财务入账自动化:发票识别后自动完成数据入库、生成财务记录,财务人员仅需核对异常数据即可。
票据归档与检索:自动生成发票数据库,支持按金额、日期、税号等多维度检索。
ERP系统对接:识别结果直接写入企业ERP或财务系统中,形成企业级发票自动化处理闭环。
八、常见问题与解决方案
Q1:发票照片模糊/倾斜怎么办?
石榴智能API内置了图像预处理功能,在识别前会自动校正倾斜、去模糊、优化亮度对比度,无需再单独调用图片修复类API,一步到位。
Q2:支持哪些发票类型?
支持增值税专用发票、增值税普通发票、增值税电子普通发票、卷式发票等多种类型。
Q3:商品明细表格(货物清单)能识别吗?
能。识别结果中包含商品明细列表,包括商品名称、规格型号、数量、单价、金额、税率、税额等字段,可直接用于进项税抵扣核算和库存管理系统对接。
Q4:API调用失败的可能原因?
APPCODE无效(检查控制台配置是否正确)
上传图片过大(建议不超过8MB)
图片格式不支持(支持PNG/JPEG/BMP/PDF)
请求超时(正常QPS限流为5,批量调用建议异步处理)
九、总结
发票OCR识别的核心价值在于:从“人工逐张录入”的繁琐模式,升级为“上传即识别、识别即入账”的自动化流程。石榴智能发票识别OCR API支持数十个字段的全结构化输出,覆盖专票、普票、电子票等多种发票类型,同时提供Python、JS、PHP等多语言接入方案,便于快速集成到现有财务系统。从上传图片到数据入库全程耗时仅3秒左右。新用户注册即送500次免费调用,可直接用于测试验证。详细开发文档和在线体验入口:https://market.shiliuai.com/doc/invoice-ocr
相关阅读推荐
《OCR识别接口哪个好?2026主流OCR API对比评测(附免费在线工具)》
《电商订单OCR识别实战:如何自动提取订单信息并实现发货自动化》
《医疗票据OCR识别API实战:从医保结算单到结构化数据提取》
《订单OCR + 自动发货系统完整实现(含架构 + 数据流 + 代码)》
如果这篇文章对你有帮助,欢迎点赞、收藏、评论支持~
#发票OCR #API接入 #Python教程 #PHP开发 #财务自动化 #发票识别 #增值税发票 #石榴智能
