乐于分享
好东西不私藏

用 AI 把每月两小时的报销发票整理,变成两条命令

用 AI 把每月两小时的报销发票整理,变成两条命令

重复性工作,大概是职场人最熟悉的时间杀手。

整理发票这件事,说起来不大:邮箱里堆着电子发票,PDF、OFD、12306 链接、滴滴行程单、京东那个永远打不开的 xml,每张都要肉眼核对发票号、剔除个人抬头的、按类别在 Excel 里手动录入。熟练之后,每月两小时;不熟练的话,一下午也有可能。

如果我告诉你,这件事可以变成「两条命令 + 每月自动执行」呢?

事情是这样的:某个周五下班前,我盯着邮箱里第 23 封「您的电子发票」,突然意识到这类每月必做、做完毫无成就感的机械活,恰好是 AI 最该接手的事情。于是我对 Claude Code 说了一句「帮我把这事儿自动化掉」,花了大约半小时写脚本。跑完三个月数据:363 封邮件 → 44 张发票 → ¥8,861.69 总额。

本文是一份完整教程,零基础可用。流程就是和 AI 对话,它负责建文件、写脚本、跑测试,你只负责用大白话描述需求。文末附可直接复制的 Prompt,丢进 Claude / DeepSeek 即可运行。

这篇教程适合谁

门槛极低。只要你每月有重复性事务要处理,就值得一读。唯一的技术前提是完成 Claude / Codex / Cursor 等工具的安装——相关教程全网很多,新手建议从 Codex 或 Cursor 开始。

教程结构导览

以下内容按你的实际需求跳转阅读:

  • 不了解 AI 工具安装方式:先完成工具安装步骤
  • 第一次听说 Skill:从名词解释开始,按顺序阅读
  • 想快速理解 Skill 本质:直接阅读「Skill 的本质:就是一个文件夹」
  • 担心自己不会写代码:跳转到「你不需要写代码,你是需求提出者」
  • 只想直接抄作业:跳转到「可复制的 Prompt」
  • 关注邮箱安全:优先阅读「安全红线」
  • 想节省 API 费用:阅读「用免费模型也能跑」

核心概念:先把这几个名词弄清楚

  • AI Agent / 大模型助手:可以理解为一名「实习生」——会对话、会写代码、会调用外部工具。Claude Code、Codex 均属此类。
  • Skill:给这个实习生安装的一个小插件,使其掌握某项具体技能。比如装上「发票技能」后,它就学会了从 QQ 邮箱拉取发票。
  • IMAP:邮箱的远程访问协议,可以理解为「程序访问邮箱的入口」。开通后,程序能够像人一样登录并读取邮件。
  • 授权码:邮箱密码的替代品。由邮箱生成的专用码,可随时撤销,比直接提供登录密码安全得多。
  • Token:大模型的计费单位。约 1.5~2 个 Token 对应 1 个中文字符,读取文档和生成回复均按此计费。

以上名词无需刻意记忆,用到时回来查阅即可。


Skill 的本质:就是一个文件夹

听起来高大上,实际上 Skill 就是硬盘里的一个文件夹。

通常包含两类内容:

说明书(一个文本文件):用通俗语言告诉 AI「这个技能做什么、什么时候用、怎么调用」。

执行工具(若干脚本文件):真正完成具体工作的代码——比如连接邮箱、拉取附件、读取 PDF、写入 Excel。

以「拉取发票」这个 Skill 为例,文件夹里大致有这些东西:

文件 作用
说明书 告诉 AI:当用户说「拉一下 4 月发票」时,调用这个 Skill
邮件抓取脚本 登录邮箱、按日期搜索、下载附件
链接处理脚本 单独处理 12306、滴滴等发链接而非附件的邮件
部署备忘 记录部署步骤和踩过的坑

AI 启动时会扫描这些文件夹,把说明书内容加载到上下文中——当你说出「拉一下 4 月发票」,它就知道该调用哪个工具。

因此,「创建一个 Skill」归纳起来只有三步:

  1. 建一个文件夹(文件夹名即 Skill 名)
  2. 写一份说明书,用大白话讲清楚「做什么 / 何时用 / 怎么调用」
  3. 放入执行工具,即真正干活的脚本文件

虽然不同 AI 工具存放 Skill 的目录位置不同,但底层结构完全一致:文件夹 + 说明书 + 工具。理解这一点后,所有操作都能无缝迁移到自己的需求上。


你不需要写代码,你是需求提出者

文件夹里的一切都可以交给 AI 完成。你真正需要做的只有两件事:

提需求:用自然语言描述「我想要什么 / 不想要什么 / 出错了怎么办」,越具体越好。

反馈错误:运行出问题,把现象贴回去(比如「它把日期搞错了」),让 AI 修正。

代码写出来不用全部读懂,看不懂的地方直接问「这段代码在做什么」,AI 会用大白话解释。

需要注意的是:这个 Skill 不是直接照搬就用的。不同公司的报销规则差异很大——

  • 有报销系统的公司,只需要「下载发票 + 归档」
  • 没系统的公司,需要「提取字段 + 生成 Excel 汇总」
  • 自由职业者可能需要按客户分类
  • 有些公司要求「超过 500 元的餐饮单独标注」

所以读这篇教程的正确方式,是把它当作参考案例,关注背后的思路和决策过程,然后结合你公司的实际情况,和 AI 一起「聊」出属于你自己的 Skill。文末的 Prompt 也预留了「自行修改」的标注位置。


关键一步:先聊需求,别让 AI 直接动手

很多人犯的错误是:上来就对 AI 说「帮我做一个报销自动化」。结果 AI 埋头写代码,等你反应过来已经推倒重来了一遍。

正确的做法是先聊清楚这四件事:

想要什么:每月生成一份 Excel,按类别汇总金额,直接提交财务。

数据来源:QQ 邮箱里搜索包含「发票」关键字的邮件。

未来可能的变化:哪天可能换 163 邮箱或 Gmail;哪天报销模板可能调整。

需要注意的细节:个人抬头发票不能报销;同一张发票可能同时存在 PDF 和 OFD 两份格式;12306 / 滴滴 / 京东发送的是链接而非附件,需要单独处理。

其中第三条最为关键——「未来会变什么」直接决定了 AI 如何设计代码结构。经验丰富的 AI 会主动建议「拆成两个 Skill:一个负责拉取发票,一个负责整理 Excel」,这样换邮箱时不会影响整理逻辑。

这一步多花十分钟,后续能节省 80% 的返工时间。

调试阶段:AI 写代码、你反馈现象

问题一:QQ 邮箱搜索条件的隐藏 bug

初次运行结果完全失真——明明 4 月只有 100 多封邮件,搜索却返回了 9740 封,几乎把整个收件箱翻了个遍。

将症状描述给 AI 后,它编写了多组不同的搜索条件让我逐一测试,最终定位到一个官方文档未曾提及的问题:QQ 邮箱的搜索语句在外层添加括号时,”截止日期”过滤条件会失效。修正写法后,搜索立即恢复正常。

这类缺乏文档记录的坑,只能靠 AI 逐条尝试来排查。无需深究细节,只要把现象反馈给 AI,它会自行定位问题所在。

问题二:PDF 与 OFD 格式的互斥处理

中国电子发票有个特殊之处:同一张发票会同时生成两种格式——

  • PDF 版:面向人工阅读
  • OFD 版:国标电子存档(大量软件无法解析)

两个版本发票号完全一致。初版代码用发票号作为唯一标识进行去重,结果所有 PDF 都被 OFD 覆盖,只剩下一堆无法正常查看的文件。

整个排错过程没有手动写一行代码——只需明确表达”我需要什么”,AI 会自行实现。


首次配置:获取邮箱授权码

Skill 创建完成后,首次运行需要完成一项前置操作:从邮箱中取出授权码并填入配置。这一步必须手动完成(AI 无法代你登录 QQ 邮箱),但流程不复杂——AI 会逐步给出指引:

  1. 在电脑端打开浏览器(注意不是手机端,手机端没有这个入口),访问邮箱 → 设置 → 账户 → 安全
  2. 向下滚动,找到并开启 IMAP/SMTP 服务(系统会要求发送短信验证)
  3. 验证通过后,邮箱会生成一串 16 位授权码——这就是连接邮箱的”钥匙”
  4. 将这串授权码复制,回到 Claude Code 命令行界面直接粘贴,或自行保存到配置文件中(后者更安全)

扩展说明
163 邮箱、Gmail、Outlook 的操作流程基本相同——都是在邮箱设置中寻找”IMAP / 应用专用密码 / 第三方登录”选项,生成一串专供程序使用的授权码。切记:不要将主密码交给任何程序。

粘贴授权码后,AI 会自动将这串密钥写入项目根目录下的 .env 敏感配置文件,同时将这个文件加入代码仓库的忽略清单(防止误传至云端)。这些操作 AI 会自动完成,你只需确认忽略清单已正确配置。


实测数据

经过三个月的完整运行验证:

  • 363 封邮件 → 62 封候选 → 44 张唯一发票
  • 报销总额:¥8,861.69

日常使用仅需两句话:

  • “拉一下 4 月发票” → 发票自动到位
  • “整理 4 月发票清单” → Excel 表格生成在桌面待审

安全红线:密钥管理的三条铁律

自动化处理邮箱,本质上是将”邮箱钥匙”交给程序。守住安全只需做到以下三点:

用授权码,不用主密码

QQ、163、Gmail 均支持生成独立的授权码——这是一串可以随时单独撤销的凭证。主密码决不可交给任何程序。

授权码存入专用敏感文件

不要将授权码复制给他人,不要在分享 skill 时附带密钥。正规项目会自动将敏感信息写入 .env 文件并加入 .gitignore 忽略清单。90% 的密钥泄露事件,都源于遗漏了这一步。

授权码≠密码,该走的流程不能省


可直接使用的 Prompt 模板

以下模板可直接复制至 Claude / DeepSeek 或任何支持代码生成的大模型中使用。无需理解任何代码细节——AI 会负责编写、运行和调试。你只需替换下划线部分,运行异常时将现象反馈给 AI。

先讨论需求(不急着写代码,把要实现的目标聊清楚)

我需要每月从邮箱中提取发票、整理成 Excel 报销单,已经手动处理很久了。
希望用半小时搭建一套自动化方案。我们先把需求梳理清楚:

邮箱类型:**__**(QQ / 163 / Gmail / Outlook)
发票主要来源:**__**(示例:滴滴、12306、京东、餐饮店)
期望输出形式:**__**(示例:一份 Excel + 一份 Markdown 清单)
未来可能的变动因素:**__**(示例:更换邮箱、调整报销模板、新增分类)

请帮我完成:
1. 拆分方案建议——如何将可能变动的部分设计为独立模块(例如"今天可能改、明天可能换"的环节彼此解耦)
2. 关键决策点评估——授权码存储方案、任务完成后是否自动触发下一步、链接型邮件如何处理等
3. 潜在风险提示——列出可能遇到的问题

核心功能要求:

- 使用 IMAP 协议连接邮箱,授权码存入敏感配置文件(.env)
- 支持自然语言指令,如"拉一下 4 月发票"
- PDF 与 OFD 两种格式均保留
- 链接型邮件(12306、京东等)尝试自动访问链接抓取 PDF
- 抓取失败的链接,单独列出供手动处理
- 文件按月份分类归档

数据输出要求:
最终输出结构化数据,提取字段如下:

- 发票号
- 开票日期 / 消费日期
- 销售方
- 项目分类(交通 / 餐饮 / 住宿 / 办公用品 / 其他)
- 价税合计

常见场景的自定义修改示例

场景 修改方式
公司只需 PDF 将”两种格式均保留”改为”仅保留 PDF,OFD 直接丢弃”
分类体系更细致 按公司财务标准重新定义分类标签
自由职业、按客户核算 在字段列表中增加”客户名称”字段
有特殊业务规则 直接添加至需求说明,如”超过 500 元的餐饮需单独标记”

AI 生成初版后,运行一次检验效果,将不符合预期的部分反馈给它修改。通常 3-5 轮迭代即可稳定运行。


小结

整个方案的核心逻辑可以概括为三句话:

  1. 先说清楚要什么——尤其要明确”未来可能变什么”,不要让 AI 盲目动手
  2. AI 负责执行,你负责反馈——把现象描述清楚,AI 会自我修正
  3. 安全由你把关——授权码、敏感文件、禁止上传公网,三件事盯紧

投入半小时,月均两小时的手工操作变成两条自然语言指令。省下的时间,去做真正重要的事。

用免费模型也能跑:我换到了 Ling-2.6-flash

44 张发票全部跑完后,我看了眼账单——旗舰模型的 token 消耗确实不小。

这类场景其实没必要上旗舰。我的判断标准很直接:结构化字段抽取 + 固定处理流程 + 无需复杂推理 = 轻量模型完全够用。

于是换成了 Ling-2.6-flash。这是蚂蚁开源的 100B 参数级免费模型,在同量级中处于 SOTA 水平。它专门针对”读文档、调脚本、跑循环”这类 agent 工作流设计,场景契合度很高。

实测结果:

  • 准确率:44 张发票字段全部正确,与旗舰模型持平
  • 速度:从 3 分 20 秒缩短至 1 分 50 秒
  • 成本:¥0

能做到这一点,关键在于发票字段抽取本质上是结构化任务——字段固定、格式有限,对模型的推理发散能力几乎没要求,只需要稳定、快速、按指令老老实实执行。100B 级别的模型足以胜任。

结论:模型选型 = 任务复杂度匹配。 复杂推理交给旗舰,结构化流水线交给轻量模型,并非越贵越好。

建议:首次切换后先用一两张发票小跑验证,确认字段抽取无误再批量处理整月数据,不要直接全量运行。

关注最新 AI 动态,访问我的主页 http://my.arthaskj.top