news 2026/8/27 1:31:47

发票转Excel:实现发票自动化提取

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
发票转Excel:实现发票自动化提取

财务、报销、审计场景中,发票信息录入Excel是高频但低效的工作。一张增值税发票上至少有十几个字段——发票代码、发票号码、开票日期、购买方/销售方信息、金额、税额、价税合计——纯手工敲,一张少说两分钟,还容易看错行。本文梳理几种主流方案,从最简单的手动技巧到基于OCR和大模型的自动化提取,帮你按业务量选对工具。

一、先搞清楚:你手里的发票是什么格式

不同来源的发票,处理难度天差地别:

发票类型常见格式提取难度推荐方案
电子发票(全电发票)PDF / OFD / XML直接解析XML或PDF文本层
增值税电子普通发票PDF低-中PDF文本提取 + 正则
纸质发票扫描件PDF / 图片OCR识别
手机拍照发票JPG / PNG中-高OCR + 字段校正
增值税专用发票(纸质)扫描件OCR + 结构化模板

关键判断点:如果是电子发票PDF,它内部大概率有可复制的文本层,不需要OCR,直接提取文字再做字段切分即可,准确率接近100%。只有扫描件和照片才需要OCR。

二、零成本方案:Excel自带功能 + 手动技巧

1. Power Query 从PDF取数(Excel 365 / 2021)

Excel的"数据 → 获取数据 → 从文件 → 从PDF"可以直接解析PDF中的表格。对于版式规整的电子发票,能自动识别出发票明细行。如果是图片格式的,可能不太好用。

操作路径:

  1. 打开Excel,点击「数据」选项卡
  2. 选择「获取数据」→「从文件」→「从PDF」
  3. 选中发票PDF,Excel会列出文档中识别到的表格
  4. 勾选需要的表,点击「转换数据」进入Power Query编辑器
  5. 清洗后点击「关闭并上载」

局限:对单张发票的抬头信息(发票号码、日期等)识别不稳定,更适合提取发票里的商品明细表格。

2. 复制粘贴 + 文本分列

最朴素但最可靠的方式:打开PDF,全选复制,粘贴到Excel,然后用「数据 → 分列」按空格或分隔符拆分。配合Ctrl+E快速填充,对固定格式的发票字段提取效率很高。

例如把"发票号码:12345678"粘贴到A列,在B列输入第一个结果12345678,按Ctrl+E,Excel会自动推断规则并填充剩余行。

三、在线工具

每月几十到几百张发票,手动处理已经不现实,但又没必要上系统。这一档的核心是OCR结构化识别。

1. 发票处理成excel网站

  • https://bankstatement-wizard.net/:支持pdf格式,图片格式的发票,通过AI技术,提取里面表格,转为excel 和 csv格式,非常好用,不会出现乱码问题

2. 发票专用OCR接口

百度AI、阿里云、腾讯云都提供"发票识别"API,针对增值税发票做过专项训练,能直接返回结构化JSON。典型调用流程:

  1. 注册账号,开通发票识别服务,获取API Key
  2. 上传发票图片/PDF,调用接口
  3. 接口返回JSON,包含发票代码、号码、日期、购销方、金额、税额、明细行等字段
  4. 用Python脚本把JSON写入Excel

以百度AI发票识别为例,返回的核心字段结构大致如下:

{"invoice_code":"011002000111","invoice_num":"12345678","invoice_date":"2024年03月15日","total_amount":"1000.00","total_tax":"130.00","amount_in_figures":"1130.00","seller_name":"某某科技有限公司","purchaser_name":"某某贸易有限公司","commodity_transaction_name":[{"name":"*信息技术服务*软件开发费","amount":"1000.00","tax_rate":"13%"}]}

拿到JSON后,用pandas一行代码就能导出Excel:

importpandasaspd df=pd.DataFrame([invoice_data])# invoice_data 为识别结果字典df.to_excel("发票汇总.xlsx",index=False)

成本参考:各家云厂商的发票识别API通常有免费额度,超出后每张约0.01-0.05元,几百张的成本可以忽略。

四、大批量 / 企业级方案:自动化流程

如果每月发票量上千张,或者需要和财务系统对接,建议搭建自动化流水线:

方案A:RPA + OCR

用UiPath、影刀、来也等RPA工具,配置一个流程:

  1. 监听指定文件夹(如"待识别发票")
  2. 新文件进入后自动调用OCR接口
  3. 识别结果写入共享Excel或数据库
  4. 异常件(识别置信度低)自动标记并通知人工复核

方案B:全电发票直接解析XML

全面数字化的电子发票(全电发票)本身就是结构化数据。开票方交付的XML文件里,所有字段都有明确标签,根本不需要OCR。

importxml.etree.ElementTreeasETimportpandasaspd tree=ET.parse("全电发票.xml")root=tree.getroot()data={"发票号码":root.findtext(".//InvoiceNumber"),"开票日期":root.findtext(".//IssueDate"),"价税合计":root.findtext(".//TaxIncludedTotalAmount"),# ... 其余字段}pd.DataFrame([data]).to_excel("发票汇总.xlsx",index=False)

这是准确率最高、成本最低的方式——随着全电发票全面推行,未来发票转Excel的核心不再是"识别",而是"数据对接"。

方案C:专业财务软件

用友、金蝶、每刻报销、合思等系统都自带发票识别和录入功能,上传发票后自动生成凭证,Excel只是中间导出格式。如果企业已经在用这类系统,不需要自己造轮子。

五、自己动手:一个极简Python脚本

如果你有一批电子发票PDF,想快速汇总到Excel,下面这个脚本可以作为起点。它用pdfplumber提取文本,用正则匹配关键字段,适合版式统一的电子发票。

importpdfplumberimportreimportpandasaspddefextract_invoice(pdf_path):withpdfplumber.open(pdf_path)aspdf:text="\n".join(page.extract_text()forpageinpdf.pages)deffind(pattern):m=re.search(pattern,text)returnm.group(1).strip()ifmelse""return{"发票号码":find(r"发票号码[::]\s*(\d+)"),"开票日期":find(r"开票日期[::]\s*([\d年月日]+)"),"价税合计":find(r"价税合计[^¥¥]*[¥¥]?\s*([\d.]+)"),"销售方":find(r"名称[::]\s*(\S+公司)"),}# 批量处理文件夹下所有PDFimportglob results=[extract_invoice(f)forfinglob.glob("发票/*.pdf")]pd.DataFrame(results).to_excel("发票汇总.xlsx",index=False)

注意:正则匹配依赖发票版式,不同省份、不同开票系统的格式可能有差异,实际使用时需要根据样本调整。

六、避坑提醒

  1. 扫描件分辨率:OCR识别前确保图片清晰度,建议300dpi以上,模糊的发票识别率会骤降。
  2. 金额校验:提取后务必做一次"金额+税额=价税合计"的校验,不相等的大概率识别有误。
  3. 发票真伪:OCR只能提取信息,不能验真。报销场景需要对接国税总局发票查验平台或第三方验真接口。
  4. 重复录入:用发票号码+发票代码做唯一键去重,避免同一张发票被录入两次。
  5. 数据安全:发票包含企业税号、金额等敏感信息,使用云端OCR服务时注意数据合规要求,涉密企业建议部署本地OCR模型。

七、选型建议总结

月处理量推荐方案预计成本
< 20张手动复制 + Excel快速填充0
20-200张发票识别API + Python脚本几元到几十元
200-2000张OCR工具批量处理 / RPA流程几百元
> 2000张财务系统集成 / 全电发票XML对接按系统定价

发票转Excel本质上是一个"非结构化数据 → 结构化数据"的问题。电子发票普及后,这个问题正在从"图像识别"转向"数据解析",技术门槛越来越低。如果你只是偶尔处理,Excel自带功能就够了;如果是重复性工作,花半小时写个脚本或配个RPA流程,省下的时间远不止这点投入。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 1:30:00

YOLOv7模型选型实战:工业焊接缺陷检测精度与速度的平衡艺术

1. 项目概述与核心价值最近在工业质检圈子里&#xff0c;一个老生常谈但又不断被技术革新所驱动的话题就是“如何更准、更快、更省力地发现产品缺陷”。我手头刚结束的一个项目&#xff0c;就是围绕这个核心痛点展开的&#xff1a;利用YOLOv7的不同系列模型&#xff08;tiny, l…

作者头像 李华
网站建设 2026/8/27 1:28:39

Lenovo Legion Toolkit 实战:15 分钟装好并跑通两套调优配置

Lenovo Legion Toolkit 实战&#xff1a;15 分钟装好并跑通两套调优配置 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit 想切…

作者头像 李华
网站建设 2026/8/27 1:26:37

MATLAB与Lingo协同建模:舰艇编队防空仿真与武器目标分配优化

1. 项目概述与核心价值看到“水面舰艇编队防空和信息化战争评估模型”这个标题&#xff0c;很多参加过数学建模竞赛的朋友可能会心一笑&#xff0c;这确实是典型的高阶赛题风格。它不像一些基础题目那样&#xff0c;给你一个清晰的数据集和明确的目标函数让你去拟合优化。这道题…

作者头像 李华
网站建设 2026/8/27 1:26:32

如何给PUBG罗技鼠标配一套自动压枪:10分钟上手的完整新手教程

如何给PUBG罗技鼠标配一套自动压枪&#xff1a;10分钟上手的完整新手教程 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 这个开源项目 logitech…

作者头像 李华
网站建设 2026/8/27 1:26:27

三步装好MusicFreePlugins:一个搜索框搞定全网音乐源

三步装好MusicFreePlugins&#xff1a;一个搜索框搞定全网音乐源 【免费下载链接】MusicFreePlugins MusicFree播放插件 项目地址: https://gitcode.com/gh_mirrors/mu/MusicFreePlugins 搜一首歌&#xff0c;A软件提示要会员&#xff0c;B软件说已下架&#xff0c;C软件…

作者头像 李华
网站建设 2026/8/27 1:25:04

VinXiangQi 象棋 AI 连线实操指南:手把手从零跑通到自动走棋

VinXiangQi 象棋 AI 连线实操指南&#xff1a;手把手从零跑通到自动走棋 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi VinXiangQi 是一款基于 YOLOv5 的…

作者头像 李华