TaxHacker: 零成本搭建AI财务记账系统

2026年3月21日

难度:★★☆☆☆ | 时长:15分钟 | 收获:掌握自托管 AI 会计应用的部署和核心功能使用

目标读者:个人开发者、自由职业者、小型企业主,以及对财务管理自动化感兴趣的技术爱好者。

核心依赖:Docker、Docker Compose、LLM API(OpenAI/Gemini/Mistral)


1 项目简介

我们先来聊聊 TaxHacker 这个项目。

TaxHacker 是一个开源的自托管 AI 会计应用,专门为自由职业者、小型企业和个人开发者设计。它的核心卖点是:用 AI 自动识别和提取发票、收据上的财务数据,把那些繁琐的手工记账工作变成一键搞定的事情。

你可能会问,市面上那么多财务软件,为什么还要用这个?让我给你几个理由:

  • AI 智能识别:上传一张收据照片,AI 自动提取商品名称、金额、日期、商家等信息,连手写票据都能识别
  • 多货币支持:支持 170+ 法定货币和 14 种加密货币,自动按交易日期的历史汇率转换
  • 100% 自托管:数据存在你自己的服务器上,隐私完全自己掌控,不用担心财务数据泄露
  • 免费开源:MIT 许可证,零授权费用

这个项目用 Next.js 15 + Prisma + PostgreSQL 构建,Docker 部署非常简单,15 分钟就能跑起来。


2 环境准备

在我们开始部署之前,先确认一下你的环境。

2.1 硬件要求

  • 内存:至少 4GB RAM(8GB 推荐)
  • 存储:至少 10GB 可用空间(用于存储上传的发票图片)
  • 系统:Linux/macOS/Windows(需要 Docker 支持)

2.2 软件要求

你需要安装以下软件:

  • Docker Engine 20.10+
  • Docker Compose 2.0+

TIP

Windows 用户推荐使用 WSL2 + Docker Desktop,这是最稳定的组合。

2.3 LLM API 准备

TaxHacker 支持三种 LLM 提供商:

  • OpenAI(推荐 GPT-4o)
  • Google Gemini
  • Mistral

你需要一个 API Key 才能让 AI 识别发票。如果你想省钱,可以考虑 Defapi 平台——它提供主流 LLM 的 API,价格只有官方的半价,支持 OpenAI、Claude、Gemini 等多种模型,而且完全兼容 OpenAI 的 API 协议。


3 项目结构

部署之前,我们先看一下项目的整体结构:

TaxHacker/
├── app/                    # Next.js 应用
│   ├── (app)/             # 主应用路由
│   │   ├── dashboard/    # 仪表盘
│   │   ├── transactions/ # 交易记录
│   │   ├── settings/      # 设置页面
│   │   └── ...
│   └── api/              # API 路由
├── ai/                    # AI 核心逻辑
│   ├── analyze.ts        # 分析收据
│   ├── prompt.ts         # 提示词模板
│   └── providers/        # LLM 提供商
├── prisma/               # 数据库模型
├── docker-compose.yml    # Docker 编排配置
├── Dockerfile            # Docker 镜像定义
└── .env.example          # 环境变量示例

4 Docker 一键部署

现在我们正式开始部署。Docker 方式是最简单的,一条命令就能跑起来。

4.1 下载配置文件

# 创建项目目录
mkdir -p taxhacker && cd taxhacker

# 下载 docker-compose.yml
curl -O https://raw.githubusercontent.com/vas3k/TaxHacker/main/docker-compose.yml

# 下载环境变量模板
curl -O https://raw.githubusercontent.com/vas3k/TaxHacker/main/.env.example

4.2 配置环境变量

# 复制环境变量文件
cp .env.example .env

用你喜欢的编辑器打开 .env,填入以下关键配置:

# 基础配置
PORT=7331
BASE_URL=http://localhost:7331
SELF_HOSTED_MODE=true

# 数据库配置(使用 docker-compose 自带的 PostgreSQL)
DATABASE_URL=postgresql://postgres:postgres@db:5432/taxhacker

# 文件存储路径
UPLOAD_PATH=/app/data/uploads

# 认证密钥(至少 16 位字符)
BETTER_AUTH_SECRET=your-super-secret-key-change-this

# 禁用注册(自托管模式建议开启)
DISABLE_SIGNUP=true

# LLM 配置(以 OpenAI 为例)
OPENAI_MODEL_NAME=gpt-4o
OPENAI_API_KEY=your-openai-api-key-here

# 或者使用 Google Gemini
# GOOGLE_MODEL_NAME=gemini-2.0-flash
# GOOGLE_API_KEY=your-gemini-api-key-here

WARNING

BETTER_AUTH_SECRET 一定要改成复杂的随机字符串,否则安全性无法保证。

4.3 启动服务

# 启动所有服务
docker compose up -d

首次启动会自动创建 PostgreSQL 数据库并运行迁移,大概需要 1-2 分钟。

4.4 验证部署

# 查看容器状态
docker compose ps

# 查看日志
docker compose logs -f app

如果一切正常,访问 http://localhost:7331 应该能看到登录页面。


5 基础配置

服务启动后,我们需要完成一些基础配置。

5.1 首次登录

自托管模式下,TaxHacker 会自动创建管理员账户。默认登录方式是:

  • 邮箱:admin@localhost
  • 密码:admin

WARNING

首次登录后请立即修改默认密码!

5.2 配置 LLM

点击左下角的 SettingsLLM,确认你的 API Key 已正确配置。你可以在这个页面测试 AI 是否正常工作:

Test AI Connection: [点击测试]

如果返回成功,说明 LLM 已经配置好了。

5.3 设置基础货币

SettingsCurrencies 中设置你的基准货币。我建议设置为人民币(CNY)或者你常用的货币。

5.4 创建分类

SettingsCategories 中创建你需要的支出/收入分类,比如:

  • 餐饮
  • 交通
  • 办公用品
  • 软件服务
  • 其他收入

6 核心功能实战

环境配置好之后,我们来看看怎么使用 AI 识别发票。

6.1 上传第一张收据

来到首页的 Unsorted(未分类)区域,点击 Upload 按钮,上传一张收据图片或者 PDF 发票。

支持的文件格式:JPG、PNG、PDF

上传成功后,你会看到文件预览。

6.2 AI 自动识别

点击文件旁边的 Analyze 按钮,AI 会开始分析你的收据。大概几秒钟后,你会看到提取结果:

{
  "date": "2026-03-15",
  "merchant": "星巴克咖啡",
  "amount": 35.00,
  "currency": "CNY",
  "items": [
    { "name": "拿铁", "quantity": 1, "price": 30.00 },
    { "name": "纸巾", "quantity": 1, "price": 5.00 }
  ],
  "category": "餐饮"
}

如果结果有误,你可以手动编辑校正。

6.3 确认并保存

确认数据无误后,点击 Confirm,这笔交易就会进入你的账本。

6.4 多货币自动转换

如果你上传的是外币发票,比如美元或欧元,TaxHacker 会自动:

  1. 识别货币类型
  2. 获取交易日期的历史汇率
  3. 转换为基准货币

你可以在 SettingsCurrencies 中查看支持的货币列表,包括 BTC、ETH 等加密货币。

6.5 自定义字段

如果你有特殊的提取需求,可以在 SettingsFields 中创建自定义字段。比如你想提取发票上的税号:

  1. 点击 Add Field
  2. 字段名称:税号
  3. 填写 AI 提取提示词:请从发票中提取纳税识别号/税号
  4. 保存

下次分析发票时,AI 会自动尝试提取这个字段。


7 数据导出与备份

记账最重要的一点是数据可导出,TaxHacker 在这方面做得很好。

7.1 筛选导出

Transactions 页面,你可以按日期、分类、项目等条件筛选:

  • 日期范围:2026-01-01 至 2026-03-21
  • 分类:餐饮、交通
  • 金额:> 100

筛选后点击 Export CSV,就能导出带所有附件的交易记录。

7.2 完整备份

SettingsBackups 中可以创建完整数据备份,包括:

  • 数据库快照
  • 所有上传的文件
  • 配置信息

备份文件可以下载到本地,确保数据安全。


8 常见问题排查

我们在部署和使用过程中可能会遇到这些问题:

Q1: 容器启动失败,提示数据库连接错误

检查 docker-compose.yml 中的 DATABASE_URL 是否正确。默认配置使用 db 作为主机名(Docker 内部网络),如果你自定义了数据库,需要相应调整。

Q2: AI 分析一直显示"处理中"

首先检查 LLM API Key 是否正确配置。然后查看容器日志:

docker compose logs app | grep -i error

如果看到 rate limit 错误,说明 API 调用次数受限。

Q3: 上传文件提示"文件太大"

默认最大文件限制是 10MB。如果需要上传更大的文件,修改 .env

MAX_FILE_SIZE=20971520  # 20MB

然后重启服务:docker compose restart

Q4: 收据识别不准确

可以在 SettingsLLM 中自定义系统提示词,给 AI 更多上下文。比如你是餐饮行业,可以添加:

你是一位专业的餐饮行业会计,擅长识别各类餐厅、小吃店的收据格式。

Q5: 如何修改登录密码

登录后点击右上角头像 → Profile,可以修改密码和邮箱。

Q6: 忘记管理员密码怎么办

需要通过数据库重置。连接 PostgreSQL 容器:

docker exec -it taxhacker-db-1 psql -U postgres -d taxhacker

然后执行:

UPDATE users SET password_hash = 'new_password_hash' WHERE email = 'admin@localhost';

9 进阶方向

玩转基础功能后,你可以探索这些进阶玩法:

9.1 自定义 AI 提示词

TaxHacker 允许你深度定制 AI 的行为。在 SettingsLLM 中修改系统提示词,让 AI 按照你的行业规范来提取数据。

9.2 多项目管理

SettingsProjects 中创建不同项目,比如"项目A"、"项目B",可以按项目统计收支,非常适合有多条业务线的自由职业者。

9.3 结合 OpenClaw 实现自动化

如果你同时部署了 OpenClaw,可以让它定时调用 TaxHacker API 自动处理未分类的收据,实现真正的无人值守记账。

9.4 定时自动备份

使用 cronjob 定时调用备份 API:

0 2 * * * curl -X POST http://localhost:7331/api/backups

每天凌晨自动创建备份。

Updated 2026年3月21日