写在前面的话

你是否还在为记账烦恼?本文将教你如何利用飞书多维表格、AI 图像识别和 iOS 快捷指令,打造一套属于自己的自动记账系统。

为什么要使用这样的方式记账?

  1. 借助于 AI 的图像识别技术,可以自动识别交易信息,无需手动输入,大大提高了记账效率。
  2. 想记录的内容更加丰富和可控,可以通过提示词,实现任何我想记录的内容。
  3. 可以借助于飞书的图表功能,设计出任何我想要的分析图表:趋势图、饼图等。可以生成每日、每周、每月的支出报表,还可以按照不同的分类进行统计,帮助你更好地了解自己的消费情况。
  4. 不记账,永远不知道钱花哪儿了。花一千元很简单,赚一千元就不是那么简单了,但是,省下了一千元,就相当于赚了。

本文适用于动手能力强的人或者有一定计算机背景的人,对于普通用户来讲可能有一定的门槛,不建议普通用户折腾,如果觉得本文内容过于复杂,建议普通用户搜索其他更简单的自动记账方案。

本文只是讲解如何利用多维表格 + AI 图像识别 + iOS 快捷指令实现自动记账,数据都存储于每个人的飞书多维表中,理论上来讲都是归属于自己的,隐私问题应该是有保障的,除非飞书或火山引擎发生数据泄露,否则您的数据理论上是安全的。

此方法调用了AI 大模型完成的图像识别,因此会产生一定的费用,根据我最近的使用情况来看,每次记账的 token 消耗大约在 1800 左右,目前官网定价为输入 0.003元/1000 token,输出 0.009 元/1000 token,一张记账的成本还不到 1 分钱。(网上有免费的方案,考虑成本的可自行搜索)

如果你觉得上面提到的内容你都没问题,接下来就可以开始折腾了,我第一次花了半天时间才跑通整个流程,祝你好运!

记账效果

准备账号

先注册这两个账号,后面会用到。

背景

前段时间deepseek火了,飞书在多维表格中集成了deepseek-r1相关功能,我正好看到了新闻,所以想了解一下情况,多维表格中有一个功能叫”探索字段捷径”,这里提供了一些AI相关的功能:

我点进了”字段捷径中心”,这里提供了不少AI相关的功能。

等等,这里有”AI 图片理解(豆包)”,前面还有”分类”、”信息提取”这些功能,如果我把交易记录截图传上来,再使用信息提取、分类 这些功能,岂不是就可以完成记账信息的存储、分类功能了?再配合上多维表格自带的图表功能,我岂不是可以做出很多我想要的分析报表了?再配合快捷指令截屏,自动记账功能的全流程岂不是通了?

可行性验证

如果我手动上传一张交易记录,AI可以识别里面的内容,再配合提示词输出固定格式的结果,那这个流程的核心逻辑就通了。

新建一个多维表格,设置好需要的字段,如下:
image.png

以上是我打算收集的记账信息,先不用管数据怎么获取,先关注”交易信息”字段。
image.png

image.png

image.png

image.png

自定义指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
这是一张我的交易账单详情,请分析账单中的以下信息:
- 收款方
- 交易金额
- 币种
- 交易时间
- 支付方式/支付渠道/付款方式/转账方式
- 交易方向:[收入|支出]
输出如下格式:
收款方:[收款方],交易金额:[交易金额],币种:[币种],交易时间:[交易时间],交易方向:[交易方向],付款方式:[支付方式/支付渠道/付款方式/转账方式]
如果图中缺失某部分信息,则缺失部分的分析结果为: 无
注意:
* 收款方一般是店铺名称或者是人名,这就意味着不要将收款账户当做收款方
* 分析金额字段时,如果金额前面有负号,分析结果中也一定要保留负号,这一点非常重要。
* 金额字段的输出结果是一个数字,不要带上货币符号(比如 ¥、$等)
* 分析币种信息时,如果图片中有明确的货币信息(比如 ¥、$等),你可以直接输出货币符号,如果没有,你可以默认输出:币种:[¥]
* 分析时间字段时,输出结果要统一使用 yyyy-MM-dd HH:mm:ss 的格式
* 分析交易方向字段时需要遵循以下规则:
1. 分析交易金额,如果金额为负数,则交易方向为:支出
2. 对图片内文字进行分析
- 如果存在"支付成功"、"转账成功"、"转账汇款"等转出信息时,则交易方向为:支出
- 如果存在"汇入汇款"、"收入"等转入信息时,并且交易金额为正数时,则交易方向为:收入
* 分析付款方式字段时,仅分析支付方式即可,无需包含具体的账号信息。

image.png

点击确定时,注意在弹出框中选择”仅保存配置”,因为此时还没有交易截图。

此时,找一个交易记录截图,收到上传到”原图”一栏:
DC9F4B43-7D32-4BB8-84BD-041B116397C8_4_5005_c.jpeg

上传完毕之后,会看到”交易信息”一栏中有一个闪电的图标,此时AI正在按要求识别图片中的内容,几秒钟之后,识别结果就出来了:
image.png

基本上我想要的内容就都有了,接下来只要把文本中的内容提取到不同的字段中,这个工作流基本就算验证通过了。

提取交易时间

点击”交易时间” -> “修改字段/列” -> “探索字段捷径” -> “信息提取” -> “选择需要提取的字段” -> “提取信息”

image.png

运行结果如下:
image.png

分析交易分类

点击”交易分类” -> “修改字段/列” -> “探索字段捷径” -> “分类”

添加类别:

这里你可以添加你想要统计的分类

我这里添加的分类类别有:生活娱乐、交通费用、充值缴费、吃饭聚餐等等

“选择一个字段,为其匹配已创建的分类” 这里选择 “交易信息”

展开”自定义分类要求”,按照你添加的分类类别,编写分类要求,我编写的要求如下:

1
2
3
4
5
6
7
8
9
10
分类规则:
- 和吃饭、食物、饭店相关的内容,可以分类为 吃饭聚餐
- 和交通出行、交通公司、客运站相关的内容,可以分类为 交通费用
- 和广场、酒店、游乐场、超市、物业、群接龙相关的内容,可以分类为 生活娱乐
- 和电费、水费、话费相关的内容,可以分类为 充值缴费
- 和基金、股票、债券、保险 相关的内容,可以分类为 投资理财
- 如果收款人是"支付渠道-人名"的形式(比如:支付宝-张三 或 支付宝-商户_张三),没有明确的行业信息,可以分类为 生活娱乐。
- 和收入、报销相关的,可以分类为 收入
其他:
如果不在上述规则内,则分类为 待确认

image.png

保存之后,如果你选择立刻生成,几秒钟之后,你会发现”交易分类”一栏已经被识别出来了”充值缴费”。

其他几个字段,像”付款方式”、”交易方向”、”交易金额”、”交易日期”等,都可以使用同样的方式把字段提取出来,可行性验证基本上算是通过了。

搭建自动记账工作流

通过上面的实验我们发现,将交易截图上传到表中,就可以自动分析交易信息、自动提取每个字段,手机截图比较简单,快捷指令可以帮助我们调用相关的接口,接下来就是找飞书多维表格的新增接口,这个流程基本上就搞定了。

通过查阅飞书开发文档,我发现要通过接口自动新增记录,需要先新增一个应用,然后新建一个多维表格,此多维表格对自建应用授权,然后就可以通过接口新增记录了。

自建应用

登录飞书开放平台,点击”创建企业自建应用”,应用名和应用描述可以随便填写,之后点击左侧的”凭证与基础信息”,注意右侧的App ID和 App Secret,先找个地方记录一下,后面会用到。

注意,此时系统会提示”应用发布后,当前配置访客生效”,点击后面的创建版本,将第一个版本的应用发布即可,发布时需要填写版本号和发布说明,随便写一下就行。
image.png

API授权

由于我们需要使用自建应用去操作多维表格,因此需要对API进行授权,需要授权的所有权限如下:

1
2
3
4
5
6
7
bitable:app
docs:doc
docs:document.media:upload
drive:drive
sheets:spreadsheet
base:record:create
contact:user.employee_id:readonly

点击 “权限管理” -> “开通权限” ,逐一开通上述所需权限即可
image.png

应用授权

应用发布之后,回到刚刚新建的多维表格,在页面右上角找到”…” -> “…更多” -> “添加文档应用”,选择刚刚新建的应用授权。

记录 app_token 和 table_id
注意此时浏览器的 URL 信息,这里需要把 app_token 和 table_id 的值记录下来,后面调用接口时会用到这两个字段。

一般来讲,浏览器中的 URL 可能是这样的:
image.png

其中高亮部分就是 app_token,后面的 “table=tbl90nh……”这部分就是 table_id。
注意:这里只是举个例子,每个人的 app_token 和 table_id 的值是不一样的,要以自己实际的值为准。

接口测试

这个部分主要的作用是验证接口的权限是否正常,因为接下来会在手机调用相关接口,但是手机上不方便调试,一旦接口有问题,排查起来就比较麻烦。

如果你习惯使用Postman等接口调用工具,此时就可以直接验证一下接口是否正常。

我们需要验证三个接口:获取token接口、资源上传接口、新增文档记录接口。
简单来讲,就是获取token,然后把交易截图上传,最后在多维表格中新增一个记录。

如果以上接口都验证通过了,恭喜你,接下来就可以在手机的快捷指令中编排接口了。

快捷指令记账

核心思路:
当我们每天支付完成时,找到交易详情,自动截图,自动调用多维表格的相关接口,把交易详情上传,由于多维表格中会自动识别上传的交易详情,自动对信息进行分类,所以我们只需要在手机端解决截图和上传的问题就可以了。

找到”快捷指令” 点击右上角的”+” 新建快捷指令

  • 截屏

  • 将截屏存储到最近项目

  • 获取最新的1张照片

  • 从已存照片媒体获取文件大小

  • 计算:文件大小 × 1024

  • 计算:计算结果÷ 1024

  • 将变量fileSize设置为 计算结果

  • 获取https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal内容

    • 方法:POST
    • 头部:Content-Type:”application/json; charset=utf-8”
    • 请求体:JSON
      • app_id: 见自建应用中的app_id
      • app_secret: 见自建应用中的app_secret

    注意:此处请求头信息固定填写 Content-Type:”application/json; charset=utf-8”

  • 文本:URL的内容

  • 在文本中获取tenant_access_token的值

  • 将字典值添加的tenant_access_token

  • 随机数

  • 获取https://open.feishu.cn/open-apis/drive/v1/medias/upload_all内容

    • 方法:POST
    • 头部:
      • Authorization:Bearer tenant_access_token
      • Content-Type:”multipart/form-data; boundary=—7MA4YWxkTrZu0gW”
    • 请求体:表单
      • file_name:随机数.文件扩展名
      • parent_type:bitable_image
      • size:fileSize
      • file

    注意:

    1. Authorization:Bearer tenant_access_token 其中的tenant_access_token 的值为前一个接口获取到的tenant_access_token的值
    2. Content-Type的值固定填写multipart/form-data; boundary=---7MA4YWxkTrZu0gW
  • 文本:URL的内容

  • 在文本中获取data.file_token的值

  • 将字典值添加到fileToken

  • 获取https://open.feishu.cn/open-apis/bitable/v1/apps/:app_token/tables/:table_id/records内容

    • 方法:POST
    • 头部:
      • Authorization:Bearer tenant_access_token
      • Content-Type:”application/json; charset=utf-8”
    • 请求体:JSON
      • fileIds:注意,这里是要构建一个多层级的JSON数据
注意:
    1. Authorization的值和前一个接口的值一样
    2. `Content-Type`的值固定填写`application/json; charset=utf-8`
    3. 请求体,这里的赋值稍微有一点绕,不过也没关系,一步步做就可以:
        1. 请求体类型选择 JSON
        2. 键:fields ,项:添加新字段 -> 词典
            1. 键: 原图,项:添加新字段 -> 文本
            2. 键:file_token,项:file_token
  • 显示:✌️记账完成✌️

最后,设置双击触发
在手机的设置 -> 辅助功能 -> 触控 -> 轻点背面 -> 轻点两下(选择刚刚新建的快捷指令)

如果你觉得有用,请我喝一杯☕️?
IMG_6505.JPG