OpenClaw+千问3.5-9B财务助手:票据识别与智能记账
OpenClaw+千问3.5-9B财务助手:票据识别与智能记账
1. 为什么需要个人财务自动化
每个月末,我的电脑桌面上总会堆满各种电子发票和收据截图。手动整理这些票据、分类统计消费、计算税务抵扣,往往要耗费整个周末的时间。直到我发现OpenClaw与千问3.5-9B的组合可以自动化这个痛苦的过程。
传统财务软件要么功能臃肿,要么需要手动录入每笔消费。而借助AI智能体框架,我实现了从票据识别到智能记账的全流程自动化。这个方案最吸引我的三点在于:
- 隐私保护:所有数据处理都在本地完成,避免了将敏感财务信息上传到第三方服务
- 定制灵活:可以根据个人消费习惯调整分类规则和预警阈值
- 成本可控:相比订阅专业财务SaaS,本地部署只需支付模型调用的Token费用
2. 环境搭建与模型部署
2.1 OpenClaw基础安装
在MacBook Pro上安装OpenClaw的过程出乎意料地简单。我选择了官方推荐的一键安装方案:
curl -fsSL https://openclaw.ai/install.sh | bash
openclaw onboard --install-daemon
安装完成后,通过openclaw gateway start启动服务,浏览器访问http://127.0.0.1:18789即可看到管理界面。这里我遇到了第一个坑——端口冲突。解决方法是在启动时指定其他端口:
openclaw gateway --port 18790
2.2 接入千问3.5-9B模型
由于财务数据敏感,我选择在本地部署千问3.5-9B模型。在OpenClaw配置文件中添加模型端点:
{
"models": {
"providers": {
"qwen-local": {
"baseUrl": "http://localhost:8000/v1",
"apiKey": "none",
"api": "openai-completions",
"models": [
{
"id": "qwen3-9b",
"name": "Qwen 3.5-9B Local",
"contextWindow": 32768
}
]
}
}
}
}
这里需要注意,模型服务必须实现OpenAI兼容的API接口。我使用了vLLM作为推理后端,启动命令如下:
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen1.5-9B-Chat \
--trust-remote-code
3. 财务自动化技能开发
3.1 票据识别模块
我将所有电子发票统一存放在~/Documents/Invoices目录。通过开发一个简单的File Watcher技能,当新文件加入时自动触发处理流程:
# invoice_processor.py
from openclaw.skills import SkillBase
from pathlib import Path
class InvoiceProcessor(SkillBase):
def setup(self):
self.watch_dir = Path.home() / "Documents/Invoices"
self.setup_file_watcher(self.watch_dir)
def handle_file_event(self, file_path):
if file_path.suffix.lower() in ['.jpg', '.png', '.pdf']:
self.process_invoice(file_path)
def process_invoice(self, file_path):
prompt = f"""请从以下发票图片中提取结构化信息:
1. 开票日期
2. 金额(含税/不含税)
3. 商品/服务名称
4. 销售方名称
5. 发票代码和号码
图片路径:{file_path}"""
response = self.llm.chat(prompt)
self.save_to_database(response)
实际使用中发现,直接让模型识别图片内容准确率不高。后来改进方案是先用PaddleOCR提取文字,再让模型结构化处理OCR结果,准确率提升了40%左右。
3.2 智能记账逻辑
消费分类是财务处理中最耗时的环节。我训练了千问模型识别我的消费模式:
def categorize_transaction(description, amount):
prompt = f"""根据以下消费记录进行分类:
消费描述:{description}
金额:{amount}元
可选类别:
1. 餐饮食品
2. 交通出行
3. 住房物业
4. 娱乐休闲
5. 医疗健康
6. 教育培训
7. 服饰美容
8. 数码电子
9. 其他
请返回最匹配的类别编号和简短理由"""
response = self.llm.chat(prompt)
return self.parse_category(response)
为了避免模型"臆造"类别,我在prompt中严格限制了可选范围。对于不确定的记录,系统会标记需要人工复核。
4. 实际工作流与效果验证
4.1 日常使用流程
我的财务自动化流程现在分为四个阶段:
- 票据收集:将所有电子发票拖放到监控文件夹,纸质票据拍照后同样存放
- 自动处理:OpenClaw每小时检查一次新文件,调用模型进行处理
- 人工复核:每周日晚上花10分钟检查自动分类结果
- 报表生成:每月1号自动生成消费分析报告和税务测算表
4.2 效果对比
使用三个月后,我的财务处理时间发生了明显变化:
| 任务类型 | 原耗时 | 现耗时 | 节省比例 |
|---|---|---|---|
| 票据整理 | 2小时 | 5分钟 | 95.8% |
| 消费分类 | 3小时 | 15分钟 | 91.7% |
| 月度报表 | 1小时 | 自动 | 100% |
| 税务计算 | 30分钟 | 自动 | 100% |
最惊喜的是发现了之前手动记账时漏计的几笔餐饮发票,模型通过交叉比对银行流水和发票日期发现了这些遗漏。
5. 遇到的挑战与解决方案
5.1 模型理解偏差问题
初期模型经常把"星巴克咖啡"分类到"娱乐休闲"而非"餐饮食品"。通过提供分类示例和调整prompt后有所改善:
prompt = f"""参考以下示例进行消费分类:
示例1:
描述:海底捞火锅
金额:258
→ 类别1(餐饮食品)
示例2:
描述:滴滴专车
金额:35
→ 类别2(交通出行)
现在请分类:
描述:{description}
金额:{amount}
→ 类别"""
5.2 多票据关联处理
酒店住宿通常包含房费和早餐发票。我开发了关联识别逻辑:
def find_related_invoices(invoice):
# 通过时间、地点等特征查找可能关联的票据
same_day_invoices = self.db.find_invoices(
date=invoice.date,
location=invoice.location
)
return self.llm.detect_relations(invoice, same_day_invoices)
5.3 预算预警机制
根据历史消费数据,我设置了动态预算阈值。当某类别消费超过平均值的20%时,会收到飞书提醒:
def check_budget(category, month):
history = self.db.get_history(category, months=3)
avg = sum(history) / len(history)
current = self.db.get_current(category, month)
if current > avg * 1.2:
self.send_alert(f"{category}预算超支预警:当前{current}元,历史平均{avg:.2f}元")
6. 安全与隐私考量
财务数据安全是我的首要考虑。这套方案实现了:
- 全本地处理:从OCR识别到数据分析都在本机完成
- 加密存储:使用SQLite数据库并启用加密扩展
- 最小权限:OpenClaw仅能访问指定文件夹和数据库
- 审计日志:所有自动操作都记录详细的日志
我特别测试了模型的"遗忘"能力,确认处理后的原始票据图片会被自动移入加密文件夹,模型上下文不会保留敏感信息。
这套OpenClaw+千问3.5-9B的财务助手,已经稳定运行了三个月。它不只是节省了我的时间,更重要的是让财务管理从负担变成了有趣的数字游戏。每当看到自动生成的消费趋势图,都能更清晰地理解自己的资金流向,做出更明智的消费决策。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐

所有评论(0)