

发票验真 + 识别,一套代码全搞定
大家好,我是正在实战各种 AI 项目的程序员晚枫。
🔍 识别 + 验真,缺一不可
只识别不验真的风险:
完整流程:
1
| 发票 → OCR 识别 → 提取信息 → 税务验真 → 结果存储
|
今天:教你一套代码搞定识别 + 验真。
🛠️ 完整代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| import poocr import requests import hashlib
SECRET_ID = os.getenv('TENCENT_SECRET_ID') SECRET_KEY = os.getenv('TENCENT_SECRET_KEY') TAX_API_URL = "https://inv-veri.chinatax.gov.cn/api"
def recognize_invoice(image_path): """识别发票""" result = poocr.ocr2excel.VatInvoiceOCR2Excel( input_path=image_path, output_path='./temp', id=SECRET_ID, key=SECRET_KEY ) return parse_result(result)
def verify_invoice(invoice_data): """验真发票""" params = { 'invoice_code': invoice_data['发票代码'], 'invoice_number': invoice_data['发票号码'], 'invoice_date': invoice_data['开票日期'], 'amount': invoice_data['金额'] } response = requests.post( f"{TAX_API_URL}/verify", json=params, headers={'Authorization': get_auth_token()} ) result = response.json() if result['status'] == 'valid': return True, "验真通过" elif result['status'] == 'invalid': return False, "发票不存在或信息不符" elif result['status'] == 'cancelled': return False, "发票已作废" else: return None, "验真失败"
def process_invoice_with_verify(image_path): """识别 + 验真完整流程""" print(f"📄 处理发票:{image_path}") print("🔍 正在识别...") invoice_data = recognize_invoice(image_path) print(f"✅ 识别完成:{invoice_data['发票号码']}") print("🔐 正在验真...") is_valid, message = verify_invoice(invoice_data) if is_valid: print(f"✅ 验真通过:{message}") save_to_database(invoice_data, status='valid') elif is_valid is False: print(f"❌ 验真失败:{message}") save_to_database(invoice_data, status='invalid') else: print(f"⚠️ 验真异常:{message}") save_to_database(invoice_data, status='pending') return invoice_data, is_valid, message
for invoice_file in os.listdir('./invoices'): process_invoice_with_verify(f'./invoices/{invoice_file}')
|
📊 验真结果处理
| 验真状态 | 含义 | 处理方式 |
|---|
| valid | 真票 | 正常入账 |
| invalid | 假票 | 退回,不报销 |
| cancelled | 已作废 | 退回,换发票 |
| red_flushed | 已红冲 | 退回,不报销 |
| pending | 验真失败 | 人工复核 |
💬 联系我
主营业务:AI 编程培训、企业内训、技术咨询
🎓 推荐课程
识别是基础,验真是保障。
两套结合,才能确保万无一失。
代码已备好,直接用吧。💪
🎓 AI 编程实战课程
想系统学习 AI 编程?程序员晚枫的 AI 编程实战课 帮你从零上手!