AI 快捷指令记账
写在前面的话
你是否还在为记账烦恼?本文将教你如何利用飞书多维表格、AI 图像识别和 iOS 快捷指令,打造一套属于自己的自动记账系统。
为什么要使用这样的方式记账?
- 借助于 AI 的图像识别技术,可以自动识别交易信息,无需手动输入,大大提高了记账效率。
- 想记录的内容更加丰富和可控,可以通过提示词,实现任何我想记录的内容。
- 可以借助于飞书的图表功能,设计出任何我想要的分析图表:趋势图、饼图等。可以生成每日、每周、每月的支出报表,还可以按照不同的分类进行统计,帮助你更好地了解自己的消费情况。
- 不记账,永远不知道钱花哪儿了。花一千元很简单,赚一千元就不是那么简单了,但是,省下了一千元,就相当于赚了。
本文适用于动手能力强的人或者有一定计算机背景的人,对于普通用户来讲可能有一定的门槛,不建议普通用户折腾,如果觉得本文内容过于复杂,建议普通用户搜索其他更简单的自动记账方案。
本文只是讲解如何利用多维表格 + AI 图像识别 + iOS 快捷指令实现自动记账,数据都存储于每个人的飞书多维表中,理论上来讲都是归属于自己的,隐私问题应该是有保障的,除非飞书或火山引擎发生数据泄露,否则您的数据理论上是安全的。
此方法调用了AI 大模型完成的图像识别,因此会产生一定的费用,根据我最近的使用情况来看,每次记账的 token 消耗大约在 1800 左右,目前官网定价为输入 0.003元/1000 token,输出 0.009 元/1000 token,一张记账的成本还不到 1 分钱。(网上有免费的方案,考虑成本的可自行搜索)
如果你觉得上面提到的内容你都没问题,接下来就可以开始折腾了,我第一次花了半天时间才跑通整个流程,祝你好运!
记账效果
准备账号
先注册这两个账号,后面会用到。
火山引擎账号
官网地址:https://www.volcengine.com/
该账号主要用于 AI 图像识别服务。飞书账号
官网地址:https://www.feishu.cn/
该账号主要用于存储和管理记账数据。
背景
前段时间deepseek火了,飞书在多维表格中集成了deepseek-r1相关功能,我正好看到了新闻,所以想了解一下情况,多维表格中有一个功能叫”探索字段捷径”,这里提供了一些AI相关的功能:
我点进了”字段捷径中心”,这里提供了不少AI相关的功能。
等等,这里有”AI 图片理解(豆包)”,前面还有”分类”、”信息提取”这些功能,如果我把交易记录截图传上来,再使用信息提取、分类 这些功能,岂不是就可以完成记账信息的存储、分类功能了?再配合上多维表格自带的图表功能,我岂不是可以做出很多我想要的分析报表了?再配合快捷指令截屏,自动记账功能的全流程岂不是通了?
可行性验证
如果我手动上传一张交易记录,AI可以识别里面的内容,再配合提示词输出固定格式的结果,那这个流程的核心逻辑就通了。
新建一个多维表格,设置好需要的字段,如下:
以上是我打算收集的记账信息,先不用管数据怎么获取,先关注”交易信息”字段。
自定义指令
1 | 这是一张我的交易账单详情,请分析账单中的以下信息: |
点击确定时,注意在弹出框中选择”仅保存配置”,因为此时还没有交易截图。
此时,找一个交易记录截图,收到上传到”原图”一栏:
上传完毕之后,会看到”交易信息”一栏中有一个闪电的图标,此时AI正在按要求识别图片中的内容,几秒钟之后,识别结果就出来了:
基本上我想要的内容就都有了,接下来只要把文本中的内容提取到不同的字段中,这个工作流基本就算验证通过了。
提取交易时间
点击”交易时间” -> “修改字段/列” -> “探索字段捷径” -> “信息提取” -> “选择需要提取的字段” -> “提取信息”
运行结果如下:
分析交易分类
点击”交易分类” -> “修改字段/列” -> “探索字段捷径” -> “分类”
添加类别:
这里你可以添加你想要统计的分类
我这里添加的分类类别有:生活娱乐、交通费用、充值缴费、吃饭聚餐等等
“选择一个字段,为其匹配已创建的分类” 这里选择 “交易信息”
展开”自定义分类要求”,按照你添加的分类类别,编写分类要求,我编写的要求如下:
1 | 分类规则: |
保存之后,如果你选择立刻生成,几秒钟之后,你会发现”交易分类”一栏已经被识别出来了”充值缴费”。
其他几个字段,像”付款方式”、”交易方向”、”交易金额”、”交易日期”等,都可以使用同样的方式把字段提取出来,可行性验证基本上算是通过了。
搭建自动记账工作流
通过上面的实验我们发现,将交易截图上传到表中,就可以自动分析交易信息、自动提取每个字段,手机截图比较简单,快捷指令可以帮助我们调用相关的接口,接下来就是找飞书多维表格的新增接口,这个流程基本上就搞定了。
通过查阅飞书开发文档,我发现要通过接口自动新增记录,需要先新增一个应用,然后新建一个多维表格,此多维表格对自建应用授权,然后就可以通过接口新增记录了。
自建应用
登录飞书开放平台,点击”创建企业自建应用”,应用名和应用描述可以随便填写,之后点击左侧的”凭证与基础信息”,注意右侧的App ID和 App Secret,先找个地方记录一下,后面会用到。
注意,此时系统会提示”应用发布后,当前配置访客生效”,点击后面的创建版本,将第一个版本的应用发布即可,发布时需要填写版本号和发布说明,随便写一下就行。
API授权
由于我们需要使用自建应用去操作多维表格,因此需要对API进行授权,需要授权的所有权限如下:
1 | bitable:app |
点击 “权限管理” -> “开通权限” ,逐一开通上述所需权限即可
应用授权
应用发布之后,回到刚刚新建的多维表格,在页面右上角找到”…” -> “…更多” -> “添加文档应用”,选择刚刚新建的应用授权。
记录 app_token 和 table_id
注意此时浏览器的 URL 信息,这里需要把 app_token 和 table_id 的值记录下来,后面调用接口时会用到这两个字段。
一般来讲,浏览器中的 URL 可能是这样的:
其中高亮部分就是 app_token,后面的 “table=tbl90nh……”这部分就是 table_id。
注意:这里只是举个例子,每个人的 app_token 和 table_id 的值是不一样的,要以自己实际的值为准。
接口测试
这个部分主要的作用是验证接口的权限是否正常,因为接下来会在手机调用相关接口,但是手机上不方便调试,一旦接口有问题,排查起来就比较麻烦。
如果你习惯使用Postman等接口调用工具,此时就可以直接验证一下接口是否正常。
我们需要验证三个接口:获取token接口、资源上传接口、新增文档记录接口。
简单来讲,就是获取token,然后把交易截图上传,最后在多维表格中新增一个记录。
获取token接口
接口地址:https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal
文档地址:https://open.feishu.cn/document/server-docs/authentication-management/access-token/tenant_access_token_internal上传素材接口
接口地址:https://open.feishu.cn/open-apis/drive/v1/medias/upload_all
文档地址:https://open.feishu.cn/document/server-docs/docs/drive-v1/media/upload_all新增记录接口
接口地址:https://open.feishu.cn/open-apis/bitable/v1/apps/:app_token/tables/:table_id/records
文档地址:https://open.feishu.cn/document/server-docs/docs/bitable-v1/app-table-record/create
如果以上接口都验证通过了,恭喜你,接下来就可以在手机的快捷指令中编排接口了。
快捷指令记账
核心思路:
当我们每天支付完成时,找到交易详情,自动截图,自动调用多维表格的相关接口,把交易详情上传,由于多维表格中会自动识别上传的交易详情,自动对信息进行分类,所以我们只需要在手机端解决截图和上传的问题就可以了。
找到”快捷指令” 点击右上角的”+” 新建快捷指令
截屏
将截屏存储到最近项目
获取最新的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
注意:
Authorization:Bearer tenant_access_token
其中的tenant_access_token
的值为前一个接口获取到的tenant_access_token的值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
- 显示:✌️记账完成✌️
最后,设置双击触发
在手机的设置 -> 辅助功能 -> 触控 -> 轻点背面 -> 轻点两下(选择刚刚新建的快捷指令)
如果你觉得有用,请我喝一杯☕️?