先说结论:收据拍照 → 收据提取器读出商户、日期、合计、税额、明细行 → 把值复制进台账 → 保留一个记账文件。两个工具之间没有自动联通——中间是一步手工粘贴,而这恰恰是好事:粘贴本身就是人工复核点。下面是两张合成收据上完整跑通的流程,每一步的输入输出和最终模板文件全部公开。范围先说清楚:这只是录入辅助,不构成税务或会计核验,也不会自动记账、不涉及任何第三方。
为什么选这条工作流(而不做更花哨的)
我们比较了三条候选链路:收据→表格、问卷反馈→归类、产品事实表→商品描述。选收据链有三个实际理由:它串起两类不同的工具(AI 提取 + 本地清理),中间的复制步骤是真实的复核点;输出里有可用程序机械复核的金额(收据自身的小计/合计关系);它以交付物(台账文件)收尾,而不是一段没有标准答案的文案。后两条候选产出的是文本,没有可验证的真值,无法诚实地做端到端测试。
演示材料(合成、公开、可复用)
两张收据都是为本指南绘制的,票面上就印着演示标记——没有真实商户、真实交易。收据 A 是英文打印店收据(小计 + 8.5% 税),收据 B 是中文文具批发单(只印一个合计、无税行)。所有金额都选了两位小数精确的值,期望值在提取运行之前就登记好了。
- 收据 A —— 打印店,3 行明细,小计 75.35 + 税 6.40 = 81.75 — 下载样例 · 54638 字节
- 收据 B —— 中文文具批发,4 行明细,合计 105.30,无税行 — 下载样例 · 61085 字节
- 两张收据的预登记期望值 — 下载样例 · 1362 字节
- 收据 A 的真实提取 CSV 导出 — 下载样例 · 231 字节
- 收据 B 的真实提取 CSV 导出 — 下载样例 · 254 字节
- 粘贴 + 去重清理后的两行台账——10 列含币种(收据 A:unknown;收据 B:CNY) — 下载样例 · 343 字节
- 台账模板(XLSX):Ledger 含币种列 + 按币种汇总的 Summary;币种空白/未知的行不计入任何币种总额;公式已在 Excel 中验证 — 下载样例 · 7312 字节
- 同表头的纯 CSV 版(UTF-8 BOM,Excel 友好) — 下载样例 · 820 字节
第 1 步 —— 逐张提取字段
- 打开提取器,放一张照片. 进入 收据提取器,拖入照片。支持 JPG/PNG/WebP、最大 10 MB,浏览器内先压到 2000 像素——图片会送去做 AI 字段提取(本工具需要免费账号;每张收据消耗一次全站试用)。
- 可选:填币种提示. 填一个币种提示(例如
CNY、USD)。真实运行里,提示帮收据 B 得到了CNY;收据 A 票面完全没有币种,工具留空并标记不确定,而不是硬套提示——这正是想要的行为。 - 运行提取. 点提取按钮。我们的两次运行各约 15 秒出结果。右侧出现字段:商户、日期、币种、小计、合计、税额、支付方式、单号,以及明细行。
- 看程序核对行. 工具在浏览器里(不是让模型)自己把明细行加总,与票面小计/合计比对。收据 A:「明细行合计 75.35——一致」;收据 B:「105.3——一致」。如果出现警告行,说明某个数字读错了——导出前先改。
- 修正可疑值. 所有值点击即可改。对照照片逐项看——工具自己声明这不是会计核验。
- 下载 CSV. Download CSV 得到 UTF-8 BOM 文件:表头一行、字段一行、然后是明细行。和照片放在一起存档。
真实运行结果与期望值逐项对照
| 字段 | 收据 A:期望 → 实测 | 收据 B:期望 → 实测 |
|---|---|---|
| 商户 | HARBOR PRINT & COPY → 一致 ✓ | 青云文具批发部 → 一致 ✓ |
| 日期 | 2026-10-28 → 一致 ✓(票面时间 14:05 被丢弃) | 2026-11-02 → 一致 ✓(时间被丢弃) |
| 币种 | 票面无 → 留空并标记不确定 ✓ | CNY → 一致 ✓ |
| 小计 | 75.35 → 一致 ✓ | 票面无 → 留空 ✓ |
| 税额 | 6.40 → 6.4 ✓(数值相等) | 票面无 → 留空 ✓ |
| 合计 | 81.75 → 一致 ✓ | 105.30 → 105.3 ✓ |
| 支付 | Card **** 4417 → 一致 ✓ | 现金(已清)→ 现金 ✓(有简化,仍准确) |
| 单号 | HP-2026-10284 → 一致 ✓ | QX-261102-073 → 一致 ✓ |
| 明细行 | 3/3 行,金额全对 ✓ | 4/4 行,金额全对 ✓ |
一个确定性脚本把导出的每个值与预登记真值逐项比对:两张收据全部通过。两个值得注意的诚实细节:日期里的时间被丢弃(也许你想留);收据 B 的支付说明被简化(现金 而不是 现金(已清)),仍然准确但丢了「已结清」的语义——字段要读,不能盲信。
第 2 步 —— 粘贴成工作表并清理
提取器的 CSV 是「收据档案」(字段行 + 明细行),不是台账行。记账要的是一行一张收据。把字段值——包括币种——复制进一张简单表;提取器留空/标不确定的币种就保持这个状态(我们写 unknown,绝不代猜)——我们模拟了真实的粘贴事故:一行被粘贴了两次、多了一个空行——然后交给 CSV 清理器:勾选 trim、删除空行、去重,点 Apply,再导出。
| 粘贴进去 | 清理器输出 |
|---|---|
| 表头 + 3 行数据 + 1 个空行(5 行) | 3 行——表头 + 2 行去重后的数据(日期、商户、分类、币种、支付、小计、税额、合计、单号、备注) |
| 收据 A 那行的重复 | 被 dedupe 删除 |
| 首尾多余空格 | 被 trim 清掉 |
| 导出 | UTF-8 BOM CSV——Excel 打开中文正常 |
一处需要披露的更正:2026-11-11 的真实运行清理的是 9 列工作表(没有币种列);按第 3 步的币种修正后,公开的 ledger-cleaned.csv 现为 10 列——币种值来自提取字段(收据 A:unknown,收据 B:CNY),收据 A 的备注保留"票面未印币种"的提醒。原始 9 列输出在私有运行记录中原样保留。
清理后的文件就是你的主数据;上方可下载的 ledger-cleaned.csv 就是这次的完整输出。
第 3 步 —— 把行放进记账模板
模板是一个普通 XLSX,两个工作部分:Ledger 工作表(日期、商户、分类、币种、支付、小计、税额、合计、单号、备注;预格式化 40 行)和 Summary 工作表——它把币种分开:用 SUMIFS/COUNTIFS 按币种计数求和,把币种为空或 unknown 的行单列一行——不计入任何币种总额,直到你确认币种——只对已确认币种给总额。另一块在单一选定币种内按分类汇总(黄色输入格,默认 CNY),并显示多少行落在该币种之外。把清理后的行粘到表头下面,每行填币种、选分类,汇总自动更新。
填入两行演示数据后,修正版模板给出:CNY 1 笔 / 105.30,其余币种 0 笔,unknown/空白 1 笔 / 81.75 列为未确认——不并入任何币种总额;CNY 口径下办公文具 105.30,另有 1 行在选定币种之外。桌面 Excel 经自动化重算,数值与预登记期望完全一致。公式都是普通函数,不是宏;文件里没有任何代码。
关于本模板第一版的诚实说明:它的 Summary 把收据 A 的 81.75——币种未知、提取器如实留空——与收据 B 的 CNY 105.30 相加,输出了 187.05 的"总计"。算术没错,币种口径错了:在确认收据 A 的币种之前,这两个金额不可比。上方按币种的布局是 2026-11-12 的更正;如果你下载过旧文件,请换新。
unknown 可以,但没有确认币种的行永远不会进入币种总额——先确认,再求和。Summary 汇总的是合计列,那才是记账真正要的数字。依赖某行数据之前的检查清单
- 程序核对行显示一致——或者你已手工修正不一致
- 商户和日期对照过照片(核对线抓不到这两项)
- 合计与票面逐字符一致
- 币种已确认(或有意识地保持
unknown——该行将不进入币种总额) - 分类已从列表中选择,Summary 能统计到该行
- 清理后的表作为主数据保存;原始导出与照片放一起
- 工具标记的不确定字段全部处理或在备注中说明
这条工作流的限制
- 每次提取一张收据;三张收据就是三次任务(三次试用)。
- AI 提取可能读错——算术核对是安全网不是保证(商户读错不会触发任何检查)。
- 工具之间的粘贴是设计如此的手工步骤;没有自动串联,不自动接入记账软件,本指南也不做这种自动化。
- 收据 vs 发票:中文记账语境下,发票是税务系统开具的凭证,收据是普通收款凭条。提取器读的是票面印刷内容,两者都能读;但发票的代码/号码等官方字段可能要手工补录,发票合规查验不在本指南范围内。
- 演示数据全部合成;上传真实收据前先想清楚——提取需要把图片交给服务处理,不愿交给服务的图片就不要上传。
相关:清理步骤的细节——CSV 打开中文乱码排查;如果是表格照片而不是收据——图片表格转 Excel 实测;自动化时 JSON 配置坏了——JSON 报错排查。
来源与核查
- YYSI receipt extractor — the AI field-extraction step used in this walkthrough — 来源核查日期 2026-11-11
- openpyxl — the open-source library used to generate the downloadable XLSX template — 来源核查日期 2026-11-11
来源核查日期 Every step in this walkthrough was actually performed on 2026-11-11: two original synthetic receipt images were run through the live YYSI receipt extractor with a standard test account (2 of its 3 free trials; no other accounts touched), the downloaded CSV exports were checked field-by-field against pre-registered truth values with a deterministic script (outputs/verify-extraction.json in the private run log), the pasted sheet was cleaned in the real csv-cleaner, and the XLSX template's SUMIF/COUNTIF formulas were recalculated in desktop Excel via automation and matched pre-computed values. The receipts are synthetic originals made for this guide — no real business, no real amounts. The receipt extractor is data-entry assistance, not tax or accounting verification. Correction of 2026-11-12 (raw AI outputs and the pre-registered truth untouched): the first template's Summary summed receipt A's 81.75 — whose currency the extractor had honestly left empty/uncertain — together with receipt B's CNY 105.30 into a single 187.05 total; the arithmetic was right but the currency scope was not. The published template and cleaned ledger now carry a Currency column, the Summary sums per currency (SUMIFS/COUNTIFS), rows with blank or unknown currency are listed separately and excluded from every currency total, and the category table is scoped to one confirmed currency. The corrected formulas were recalculated in desktop Excel via COM against a new known-answer case that includes the unknown-currency row (b-excel-com-verify in the 2026-11-12 remediation run directory).
阅读编辑标准(EN),或发送纠错到 [email protected]。