当前位置: 首页 > news >正文

开发电子发票查重防重复报销编程检测系统,批量录入发票数据,算法自动比对重复票据标记栏截。

「电子发票查重防重复报销检测系统」

的设计与实现方案,适合用于

✅ 智能会计课程 / Python 财务实战 / 企业内控数字化案例。

一、实际应用场景描述

在企业日常报销中,电子发票(PDF / OFD / 图片)广泛存在,常见问题包括:

- 同一张电子发票

- 多次打印

- 多次提交报销

- 不同员工

- 报销同一张发票

- 历史已报销发票

- 被再次上传

👉 目标:

构建一个 电子发票查重检测系统,

支持批量录入 + 自动比对 + 重复票据标记拦截。

二、引入痛点(Why build this)

痛点 影响

电子发票易复制 重复报销高发

人工肉眼比对 效率低、易漏判

无历史发票库 无法跨期查重

缺乏拦截机制 事后才发现违规

审计风险大 内控薄弱

✅ 本项目解决的问题:

“让系统自动识别‘这张发票是否已经报销过’”

三、核心逻辑讲解(技术架构)

1️⃣ 总体流程

批量发票数据录入

提取唯一标识(发票代码 + 号码)

与历史发票库比对

判断是否重复

标记 + 拦截建议

2️⃣ 核心查重算法

(1)唯一键设计(关键)

invoice_key = 发票代码 + 发票号码 + 开票日期

(2)查重策略

- 精确匹配(100% 相同)

- 可扩展为:

- 相似度匹配(OCR + NLP)

- 图像指纹(感知哈希)

(3)查重判定

if invoice_key in history_set:

status = "REPEAT"

四、代码模块化实现(Python)

📁 项目结构

invoice_dedup/

├── main.py # 程序入口

├── config.py # 系统配置

├── loader.py # 发票数据加载

├── deduper.py # 查重核心算法

├── reporter.py # 查重报告

├── data/

│ ├── new_invoices.csv # 待查重发票

│ └── history_invoices.csv# 历史已报销发票

└── README.md

1️⃣ config.py(系统配置)

# config.py

INVOICE_KEY_FIELDS = [

"invoice_code",

"invoice_number",

"invoice_date"

]

2️⃣ loader.py(数据加载)

# loader.py

import pandas as pd

def load_invoices(path):

try:

df = pd.read_csv(path)

return df

except Exception as e:

raise RuntimeError(f"发票数据加载失败: {e}")

3️⃣ deduper.py(查重核心)

# deduper.py

from config import INVOICE_KEY_FIELDS

def build_invoice_key(df):

"""

构建发票唯一标识

"""

df["invoice_key"] = df[INVOICE_KEY_FIELDS].astype(str).agg("_".join, axis=1)

return df

def detect_duplicate(new_df, history_df):

"""

查重主逻辑

"""

history_keys = set(history_df["invoice_key"])

new_df["is_duplicate"] = new_df["invoice_key"].isin(history_keys)

return new_df

4️⃣ reporter.py(查重报告)

# reporter.py

def generate_report(df):

duplicate_df = df[df["is_duplicate"] == True]

duplicate_df["action"] = "拦截报销,已标记重复"

return duplicate_df

5️⃣ main.py(主流程)

# main.py

from loader import load_invoices

from deduper import build_invoice_key, detect_duplicate

from reporter import generate_report

def main():

new_invoices = load_invoices("data/new_invoices.csv")

history_invoices = load_invoices("data/history_invoices.csv")

new_invoices = build_invoice_key(new_invoices)

history_invoices = build_invoice_key(history_invoices)

result = detect_duplicate(new_invoices, history_invoices)

report = generate_report(result)

print(report[["invoice_key", "is_duplicate", "action"]])

if __name__ == "__main__":

main()

五、README.md(使用说明)

# 电子发票查重防重复报销检测系统

## 功能

- 批量录入电子发票数据

- 自动比对历史发票库

- 标记重复票据

- 输出拦截建议

## 使用方法

1. 准备 CSV 文件

csv

invoice_code,invoice_number,invoice_date

2. 运行程序

bash

python main.py

3. 查看查重结果

六、核心知识点卡片(速记版)

模块 核心技术

唯一标识设计 复合主键

查重算法 集合(Set)匹配

数据预处理 Pandas

内控逻辑 拦截策略

工程化 模块化 + 配置驱动

七、总结(技术 + 业务双视角)

✅ 从技术角度

这是一个典型的:

数据去重 + 财务内控规则 + 批处理系统

项目,非常适合展示“Python 在企业风控中的实战价值”。

✅ 从业务角度

解决了企业长期存在的:

“电子发票重复报销难发现、难拦截”

的问题,为财务合规提供自动化防线。

如果你愿意,可以继续:

- ✅ 升级为 OCR 发票识别(PaddleOCR)

- ✅ 增加 数据库版(SQLite / MySQL)

- ✅ 输出 课程答辩 PPT + 演讲脚本

利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!

http://www.cnnetsun.cn/news/2013413.html

相关文章:

  • Linux开机卡住1分多钟?别慌,手把手教你排查并修复systemd的Timed out waiting for device错误
  • Windows10系统信息备份指南:手把手教你用批处理创建专属的‘电脑健康档案’
  • ARM裸机中断处理与GIC控制器实战指南
  • Flutter——从入门到精通:NavigationRail实战指南与高级定制
  • 声学回声消除技术:原理、算法与DSP实现
  • Z-Image开源模型部署案例:科研团队用Z-Image测试台发表CVPR权重分析论文
  • 基于LoRa网关和云组态平台的智能灌溉管理系统
  • 用PyQUBO搞定带约束的优化问题:一个Python库的保姆级实战教程
  • JSONEditor-React 深度实战:从数据调试到企业级配置管理
  • 是德科技Keysight E5071C 网络分析仪
  • R3LIVE代码架构深度剖析:从数据流到状态估计的完整流程
  • Docker镜像签名验证27步黄金路径(含OCI Artifact签名扩展):Red Hat SRE团队2024年最新生产环境审计报告节选
  • WebPlotDigitizer完整指南:5分钟将静态图表转换为可分析数据
  • WebPlotDigitizer终极指南:5步从图像中提取精确数据,科研效率提升300%
  • SRC漏洞挖掘——5.文件包含漏洞实战详解
  • 89%AIGC率直降6%?10款降AI工具实测指南
  • FATFS文件操作避坑指南:如何优雅地给CSV日志文件‘续写’数据?
  • 如何快速掌握视频场景检测:TransNet V2的完整使用指南
  • 分人群定制:如何用AI建站工具精准匹配你的建站方案
  • 别再只会用qDebug了!Qt日志输出qInfo/qWarning/qCritical的实战场景与避坑指南
  • 如何使用NextUI与React Hook Form构建高性能表单:完整指南
  • 如何快速突破城通网盘限速?ctfileGet完整教程让你下载速度提升10倍!
  • 手把手教你用ROS录制Velodyne和IMU的bag包,为lidar_imu_calib准备完美数据
  • Cesium加载ArcGIS WMTS服务踩坑实录:从XML解析到tileMatrixLabels的完整避坑指南
  • 别再傻傻算全模型了!Fluent 2D Space设置详解:轴对称与旋转流场模拟的正确打开方式
  • ppt幻灯片母版与版式使用技巧
  • ESP32超声波停车辅助系统开发指南
  • 【GraalVM静态镜像内存优化终极指南】:20年JVM专家亲授5大内存泄漏陷阱与3步零GC启动法
  • 揭秘.NET 11原生AI推理引擎:如何绕过ML.NET抽象层直击TensorRT/ONNX Runtime调度内核?
  • YOLOv8cls(分类/检测)算法结合Django + Vue3 前后端分离架构 TasselScan_Yolo8cls 玉米雄蕊检测系统开发 基于Django+Vue与YOLOv8的玉米雄蕊智能