一张发票要抽的字段其实只有五六个:发票号码、开票日期、销售方名称、金额、税额。手工一张张录三十张要一个多小时,但直接把这三十张照片一次性丢进识别,得到的是一堆没有归属的文字。顺序必须在上传之前锁死。

第一步:重命名定序,这一步不能省

拍照时谁都会随手拍,拍完左上右下混成一堆。用 批量重命名 按拍摄顺序加序号前缀,文件名里同时带上供应商简称,例如 03_某供应商_票面.jpg。序号就是后面清单的行号,没有它,识别结果回来你无法判断哪一段文字来自哪张票。

一条硬约束:单次最多 10 页。三十张要分三批做,批次之间的序号必须连续,否则合并时会插入错序。

第二步:合成为一个文件还是逐张上传

两条路各有代价。把同批十张先用 图片转 PDF 合成一份,再走「扫描件PDF转Word」,好处是页序稳定、一次交出去;要注意 PDF 会按每页 150 DPI 渲染成图后识别,原图分辨率再高也不会额外受益。缺点是多一步转换,且票据上的表格结构会被当正文输出,得自己拆字段。

如果只要票号和金额,逐张走「图片转文字」更干净,一张图算 1 页、印刷体每页 1 点。要连明细行一起出成表才用表格识别入口,每页 2 点。

第三步:从文本里抽出五个字段

识别给的是文字和换行,不是结构化数据。真实的高频错误有三处:

  • 发票号码被拆成两段:号码印在框线内、字距偏大,边界推断容易中途断行。用长度筛,不足位数的回原图核。
  • 税额那行漏识:票底字小,长边不足 1000 像素的图片必掉字。
  • 销售方名称串行:地址电话栏与名称栏挤在一起,名称尾部带上门牌号码。

处理办法是用 TXT处理 做行级清洗:删空行、去行首尾空格、按关键字查找替换并查看命中次数,再把字段拆成独立列。输入输出框只显示前几百行预览,统计与下载仍按完整内容执行。

验收:两个数一定要闭环

  1. 张数闭环:清单行数等于原始照片张数,多一行少一行都是问题。
  2. 合计闭环:金额列求和与你自己手抄的本批总额比对;差值若正好等于某一张的金额,说明那张重复或漏计。

站内表格默认按文本写入,只有无前导零且不超过 15 位有效数字的内容才存成数值。发票号码这类长编号保持文本是保护,转成数值会丢尾数;金额列加不了总是另一回事。

什么时候别这么做

本站不做 OCR 之外的真伪查验,也不生成可搜索的双层 PDF;识别不保留颜色、印章与边框,盖章区覆盖的数字一律人工看。工整字迹可用,连笔、字迹过密或过淡时准确率明显下降,重要内容必须人工核对。抵扣用途、影像件要不要另存纸质、留多久,以主管部门与接收单位公布要求为准。先把归档口径问清再动手,装订思路见 凭证怎么装订归档。