
财务、报销、审计场景中发票信息录入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 / 2021Excel的数据 → 获取数据 → 从文件 → 从PDF可以直接解析PDF中的表格。对于版式规整的电子发票能自动识别出发票明细行。如果是图片格式的可能不太好用。操作路径打开Excel点击「数据」选项卡选择「获取数据」→「从文件」→「从PDF」选中发票PDFExcel会列出文档中识别到的表格勾选需要的表点击「转换数据」进入Power Query编辑器清洗后点击「关闭并上载」局限对单张发票的抬头信息发票号码、日期等识别不稳定更适合提取发票里的商品明细表格。2. 复制粘贴 文本分列最朴素但最可靠的方式打开PDF全选复制粘贴到Excel然后用「数据 → 分列」按空格或分隔符拆分。配合CtrlE快速填充对固定格式的发票字段提取效率很高。例如把发票号码12345678粘贴到A列在B列输入第一个结果12345678按CtrlEExcel会自动推断规则并填充剩余行。三、在线工具每月几十到几百张发票手动处理已经不现实但又没必要上系统。这一档的核心是OCR结构化识别。1. 发票处理成excel网站https://bankstatement-wizard.net/支持pdf格式图片格式的发票通过AI技术提取里面表格转为excel 和 csv格式非常好用不会出现乱码问题2. 发票专用OCR接口百度AI、阿里云、腾讯云都提供发票识别API针对增值税发票做过专项训练能直接返回结构化JSON。典型调用流程注册账号开通发票识别服务获取API Key上传发票图片/PDF调用接口接口返回JSON包含发票代码、号码、日期、购销方、金额、税额、明细行等字段用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一行代码就能导出Excelimportpandasaspd dfpd.DataFrame([invoice_data])# invoice_data 为识别结果字典df.to_excel(发票汇总.xlsx,indexFalse)成本参考各家云厂商的发票识别API通常有免费额度超出后每张约0.01-0.05元几百张的成本可以忽略。四、大批量 / 企业级方案自动化流程如果每月发票量上千张或者需要和财务系统对接建议搭建自动化流水线方案ARPA OCR用UiPath、影刀、来也等RPA工具配置一个流程监听指定文件夹如待识别发票新文件进入后自动调用OCR接口识别结果写入共享Excel或数据库异常件识别置信度低自动标记并通知人工复核方案B全电发票直接解析XML全面数字化的电子发票全电发票本身就是结构化数据。开票方交付的XML文件里所有字段都有明确标签根本不需要OCR。importxml.etree.ElementTreeasETimportpandasaspd treeET.parse(全电发票.xml)roottree.getroot()data{发票号码:root.findtext(.//InvoiceNumber),开票日期:root.findtext(.//IssueDate),价税合计:root.findtext(.//TaxIncludedTotalAmount),# ... 其余字段}pd.DataFrame([data]).to_excel(发票汇总.xlsx,indexFalse)这是准确率最高、成本最低的方式——随着全电发票全面推行未来发票转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):mre.search(pattern,text)returnm.group(1).strip()ifmelsereturn{发票号码: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,indexFalse)注意正则匹配依赖发票版式不同省份、不同开票系统的格式可能有差异实际使用时需要根据样本调整。六、避坑提醒扫描件分辨率OCR识别前确保图片清晰度建议300dpi以上模糊的发票识别率会骤降。金额校验提取后务必做一次金额税额价税合计的校验不相等的大概率识别有误。发票真伪OCR只能提取信息不能验真。报销场景需要对接国税总局发票查验平台或第三方验真接口。重复录入用发票号码发票代码做唯一键去重避免同一张发票被录入两次。数据安全发票包含企业税号、金额等敏感信息使用云端OCR服务时注意数据合规要求涉密企业建议部署本地OCR模型。七、选型建议总结月处理量推荐方案预计成本 20张手动复制 Excel快速填充020-200张发票识别API Python脚本几元到几十元200-2000张OCR工具批量处理 / RPA流程几百元 2000张财务系统集成 / 全电发票XML对接按系统定价发票转Excel本质上是一个非结构化数据 → 结构化数据的问题。电子发票普及后这个问题正在从图像识别转向数据解析技术门槛越来越低。如果你只是偶尔处理Excel自带功能就够了如果是重复性工作花半小时写个脚本或配个RPA流程省下的时间远不止这点投入。