TaxHacker:用 AI 让记账报税变得不再痛苦
本文欲回答的核心问题:如何用一个自托管的开源工具,让自由职业者和小企业主彻底摆脱手动记账的噩梦,并用 AI 自动化处理发票、收据和多币种转换?
自由职业者和小企业主每年在记账报税上花费的时间,平均超过 100 小时。翻找发票、手动录入数据、转换币种、分类归档——这些琐碎但必不可少的工作,吞噬了大量本该用于创造价值的时间。更糟糕的是,一旦遇到跨国交易或加密货币支付,传统记账工具要么无能为力,要么需要支付高昂的订阅费用。
TaxHacker 的出现,是为了解决这个真实痛点。这是一个完全开源、可自托管的 AI 驱动记账应用,能够自动识别发票和收据、提取关键信息、转换货币(包括加密货币),并将所有数据整理成结构化数据库。最重要的是,你的财务数据完全掌握在自己手中,不需要依赖任何第三方服务。
为什么需要一个 AI 驱动的记账工具
传统记账软件的三大困境,恰好是 TaxHacker 设计的出发点。
第一个困境是手动录入的低效性。每一张纸质收据、每一份 PDF 发票,都需要人工打开、阅读、提取商家名称、日期、金额、税额等信息,然后逐字录入系统。这个过程不仅耗时,还容易出错——一个小数点的偏差可能导致账目混乱。
第二个困境是多币种管理的复杂性。如果你的业务涉及跨国交易,就必须手动查询历史汇率、计算转换金额,并记录每笔交易的原始币种和换算基准。对于接受加密货币支付的自由职业者,情况更加棘手:主流记账软件根本不支持比特币、以太坊等数字货币的汇率转换。
第三个困境是数据隐私与控制权。大多数云端记账服务要求将财务数据上传到第三方服务器,这意味着你的敏感信息——客户名单、收入明细、支出记录——都存储在别人的数据库中。一旦服务商倒闭、涨价或更改服务条款,你可能面临数据丢失或被迫迁移的风险。
TaxHacker 的核心设计理念很简单:用 AI 替代人工录入,用自托管保障数据主权,用开源代码确保透明可控。它不是为了追求功能大而全,而是专注于解决自由职业者和小企业主最核心的痛点——让记账这件事变得足够简单,简单到可以每天完成,而不是拖到季度末或报税前夜。
AI 如何自动化发票识别与数据提取
TaxHacker 的 AI 引擎能够处理几乎所有类型的财务文档:超市收据、餐厅账单、服务发票、银行对账单,甚至手写收据。无论文档语言是中文、英文还是其他语种,无论货币是美元、欧元还是比特币,系统都能准确识别并提取关键信息。
从上传到结构化数据的完整流程
当你上传一张收据照片或 PDF 发票时,TaxHacker 的处理流程如下:
-
文档预处理:系统使用 Ghostscript 和 GraphicsMagick 对 PDF 进行转换和优化,确保图像质量足以被 OCR 引擎准确识别。 -
AI 数据提取:调用你配置的 LLM 模型(OpenAI、Google Gemini 或 Mistral),对文档内容进行语义理解,提取日期、金额、商家名称、商品清单、税额等字段。 -
自动分类:根据文档内容和商家信息,系统自动将交易归类到预设或自定义的类别中(例如”办公用品””差旅费用””软件订阅”)。 -
项目拆分:如果一张发票包含多个项目(比如一次采购清单中有办公用品、营销物料和员工福利),系统可以将其拆分为独立的交易记录,每条记录对应一个具体项目。 -
结构化存储:所有提取的数据保存到 PostgreSQL 数据库中,形成可过滤、可搜索、可导出的结构化记录。
这个流程的关键在于 AI 提示词的可定制性。TaxHacker 允许你修改系统级别的提示词模板,也可以为特定字段、类别或项目编写专属的提取规则。
实际应用场景:跨境自由职业者的记账难题
假设你是一名跨境电商卖家,每月需要处理来自不同国家的采购发票、物流费用、平台佣金账单。这些文档可能包含英文、中文、日文,涉及美元、人民币、日元等多种货币。
使用传统方法,你需要:
-
打开每张发票,手动识别并录入商家名称、日期、金额 -
查询历史汇率,计算每笔交易折合成人民币的金额 -
将不同类型的费用分类记录到不同的 Excel 表格中 -
定期汇总数据,生成报税所需的财务报表
使用 TaxHacker,你只需要:
-
批量上传所有发票和收据 -
系统自动识别语言、提取数据、转换货币、分类归档 -
在月底使用高级过滤功能,筛选出特定类别或项目的交易 -
一键导出 CSV 文件,附带所有原始文档,直接交给会计师或用于报税
时间成本从每月 10 小时降低到不到 1 小时,准确性却大幅提升。
为什么 AI 提示词可定制如此重要
不同行业的财务文档格式和术语差异巨大。建筑行业的报价单可能包含”材料费””人工费””机械费”等细分项目;软件公司的发票可能需要区分”一次性授权””年度订阅””技术支持费用”。如果 AI 提示词是固定的,系统很难准确提取这些行业特定的信息。
TaxHacker 的解决方案是 完全开放的提示词系统。你可以在设置中修改以下内容:
-
系统级提示词:定义 AI 如何理解和处理所有文档的通用规则 -
字段级提示词:为某个自定义字段编写专属的提取逻辑(例如”从发票中提取项目编号”) -
类别级提示词:指导 AI 如何判断交易应该归类到哪个类别 -
项目级提示词:为不同项目定义不同的提取优先级和命名规范
举个例子,如果你经营一家设计工作室,需要从客户邮件中提取项目名称和紧急程度,可以创建一个自定义字段”项目紧急度”,并编写提示词:
从文档中提取客户要求的交付时间。如果文档中包含"urgent""ASAP""尽快"等词汇,标记为"高";如果明确了具体日期且距今不足7天,标记为"中";其他情况标记为"低"。
这种灵活性让 TaxHacker 不仅仅是一个记账工具,而是一个可以适配任何业务逻辑的数据提取平台。
多币种与加密货币的自动化处理
全球化业务最头疼的问题之一,就是货币转换。TaxHacker 内置了覆盖 170 多种法定货币和 14 种主流加密货币的汇率数据库,并且使用 历史汇率 进行转换——这意味着系统会根据交易实际发生的日期,查询当天的汇率,而不是使用今天的汇率倒推。
为什么历史汇率如此重要
假设你在 2024 年 3 月 1 日用比特币支付了一笔 0.5 BTC 的服务器托管费。当时比特币价格约为 6 万美元,这笔交易折合 3 万美元。但如果你在 2024 年 12 月整理账目时,比特币价格已经涨到 10 万美元。如果使用当前汇率计算,这笔费用会被错误地记录为 5 万美元,导致你的成本虚增、利润虚减。
TaxHacker 的历史汇率功能避免了这个问题。系统会自动识别交易日期,查询 2024 年 3 月 1 日的 BTC/USD 汇率,并以此为基准计算转换金额。这不仅确保了财务数据的准确性,也符合大多数国家税务部门对外币交易的核算要求。
支持的加密货币清单
当前版本支持以下 14 种加密货币的汇率转换:
-
比特币 (BTC) -
以太坊 (ETH) -
莱特币 (LTC) -
波卡 (DOT) -
瑞波币 (XRP) -
卡尔达诺 (ADA) -
索拉纳 (SOL) -
狗狗币 (DOGE) -
币安币 (BNB) -
泰达币 (USDT) -
美元稳定币 (USDC) -
波场 (TRX) -
Polygon (MATIC) -
Avalanche (AVAX)
如果你的业务涉及其他加密货币,可以通过修改数据库配置或提交功能请求来扩展支持。
实际应用:远程团队的跨国薪资管理
某初创公司在美国、中国、印度雇佣了 10 名远程员工,每月需要支付美元、人民币、卢比三种货币的薪资,以及用 USDT 支付的自由职业者费用。传统记账流程需要:
-
手动记录每笔支付的原始币种和金额 -
查询支付日期的汇率 -
计算每笔支付折合成公司基准货币(假设是美元)的金额 -
汇总后生成月度财务报表
使用 TaxHacker,整个流程简化为:
-
上传银行转账记录和 USDT 交易截图 -
系统自动识别币种、提取金额、查询历史汇率、完成转换 -
在”薪资”类别下筛选本月所有交易,一键导出报表
每月节省至少 3 小时的手动计算时间,并且避免了汇率查询错误导致的账目偏差。
完全可定制的字段、类别与项目
标准化记账软件的最大问题,是它们假设所有企业的财务结构都是相同的。但实际上,不同行业、不同规模、不同国家的企业,对财务数据的分类需求完全不同。
TaxHacker 的设计哲学是 零假设、全定制。系统预设了一些常用的类别(如”办公费用””差旅费””软件订阅”),但你可以随时删除、修改或新增任何类别。
自定义字段:像操作 Excel 一样灵活
自定义字段功能让你可以在交易记录中添加任意数量的额外列。这些字段可以通过 AI 自动提取,也可以手动填写。
应用场景 1:律师事务所的客户代码管理
律师事务所需要将每笔费用关联到具体客户案件,以便后续向客户收费。可以创建一个”客户案件编号”字段,并编写 AI 提示词:
从发票或邮件中提取客户案件编号。案件编号通常以"CASE-"或"C-"开头,后跟6位数字。如果文档中没有明确标注,查找客户名称并尝试匹配已知案件列表。
系统会自动从上传的文档中提取案件编号,并填入该字段。月底时,可以按客户案件编号筛选所有费用,生成客户账单。
应用场景 2:电商卖家的 SKU 追踪
电商卖家需要跟踪每笔采购对应的产品 SKU,以便计算每个产品的实际成本。可以创建”产品 SKU”字段,从供应商发票中提取:
从发票中提取产品 SKU。SKU 通常是8-12位的字母数字组合,可能以"SKU:"或"货号:"标注。如果一张发票包含多个 SKU,将它们拆分为独立的交易记录。
这样,每个 SKU 的采购成本都被单独记录,可以直接用于利润核算。
项目管理:多业务线的财务隔离
如果你同时运营多个业务(比如一个软件产品、一个咨询服务、一个内容订阅),需要分别核算每个业务的收支情况。TaxHacker 的项目功能允许你为每笔交易指定所属项目,并在筛选和导出时按项目分组。
实际案例:独立开发者的产品矩阵管理
某独立开发者同时维护三个 SaaS 产品:A、B、C。每个产品都有独立的服务器费用、广告投放、客服成本。使用 TaxHacker,可以:
-
创建三个项目:”产品 A””产品 B””产品 C” -
为每个项目定义自定义的成本类别(比如产品 A 需要追踪”API 调用费用”,产品 B 需要追踪”视频存储费用”) -
上传所有费用发票,系统根据发票内容自动分配到对应项目 -
月底分别导出三个项目的财务报表,评估每个产品的盈利能力
这种财务隔离不仅有助于决策(比如决定是否关闭某个亏损产品),也能在融资或出售某个产品时,快速提供准确的财务数据。
自托管与数据隐私:为什么这很重要
在云服务时代,将数据托管到第三方平台似乎是理所当然的选择。但对于财务数据而言,这种便利性伴随着不可忽视的风险。
云端记账服务的三大隐患
隐患一:数据泄露风险。财务数据是企业和个人最敏感的信息之一。一旦服务商遭遇黑客攻击、内部人员泄密或被政府要求提交数据,你的客户名单、收入明细、供应商信息都可能暴露。
隐患二:服务中断或倒闭。云服务公司可能因为经营不善而倒闭,或者被大公司收购后更改服务条款、大幅涨价。如果你的所有财务数据都存储在这些平台上,迁移成本可能极高——尤其是当平台不提供完整的数据导出功能时。
隐患三:合规性问题。某些国家或地区要求财务数据必须存储在本地服务器上,不得传输到境外。如果你使用的云服务在其他国家,可能违反当地法规,面临罚款或其他法律后果。
TaxHacker 的自托管方案
TaxHacker 提供了完整的 Docker 容器化部署方案,可以在几分钟内部署到你自己的服务器、NAS 设备或家庭电脑上。
最简单的部署方式:
curl -O https://raw.githubusercontent.com/vas3k/TaxHacker/main/docker-compose.yml
docker compose up
这条命令会自动下载并启动 TaxHacker 应用容器和 PostgreSQL 数据库容器,完成数据库迁移,并在 http://localhost:7331 上运行应用。
生产环境的自定义配置:
如果你需要连接到现有的 PostgreSQL 数据库,或者修改默认端口,可以编辑 docker-compose.yml 文件:
services:
app:
image: ghcr.io/vas3k/taxhacker:latest
ports:
- "8080:7331" # 修改外部端口
environment:
- SELF_HOSTED_MODE=true
- UPLOAD_PATH=/app/data/uploads
- DATABASE_URL=postgresql://myuser:mypassword@mydb.example.com:5432/taxhacker
volumes:
- ./data:/app/data
restart: unless-stopped
关键配置项说明:
| 配置项 | 说明 | 示例 |
|---|---|---|
UPLOAD_PATH |
文件上传和存储的本地目录 | ./data/uploads |
DATABASE_URL |
PostgreSQL 连接字符串 | postgresql://user@localhost:5432/taxhacker |
PORT |
应用运行端口(默认 7331) | 8080 |
BASE_URL |
应用的基础 URL | http://localhost:7331 |
SELF_HOSTED_MODE |
启用自托管模式(自动登录、自定义 API 密钥等) | true |
DISABLE_SIGNUP |
禁用新用户注册 | false |
BETTER_AUTH_SECRET |
认证密钥(至少 16 字符) | your-secure-random-key |
LLM 服务商配置:
你可以在应用内设置,也可以通过环境变量配置:
-
OpenAI: OPENAI_MODEL_NAME和OPENAI_API_KEY -
Google Gemini: GOOGLE_MODEL_NAME和GOOGLE_API_KEY -
Mistral: MISTRAL_MODEL_NAME和MISTRAL_API_KEY
数据所有权与可移植性
TaxHacker 的所有数据都存储在你自己的 PostgreSQL 数据库中。你可以随时备份、迁移或删除这些数据,不受任何平台限制。
系统还支持完整的数据导出功能。你可以:
-
导出筛选后的交易记录为 CSV 文件 -
导出时附带所有原始文档(PDF、图片等) -
下载完整的数据归档文件,用于迁移到其他系统
这种设计确保了 零供应商锁定。即使 TaxHacker 项目停止维护,你的数据依然完全可用,可以随时迁移到其他工具或自行开发新的前端界面。
实用摘要与操作清单
核心功能速览
-
AI 驱动的发票识别:上传收据或发票,自动提取日期、金额、商家、税额等信息 -
多币种自动转换:支持 170+ 法定货币和 14 种加密货币,使用历史汇率精确计算 -
完全可定制:自定义字段、类别、项目,以及所有 AI 提示词 -
高级过滤与导出:按日期、类别、项目、金额等任意条件筛选,导出 CSV 及原始文档 -
自托管部署:Docker 容器化部署,数据完全掌握在自己手中 -
开源透明:MIT 许可证,代码公开可审计
五分钟快速上手
-
部署应用
curl -O https://raw.githubusercontent.com/vas3k/TaxHacker/main/docker-compose.yml docker compose up -
配置 LLM 服务
-
访问 http://localhost:7331 -
进入设置页面,填入 OpenAI、Gemini 或 Mistral 的 API 密钥
-
-
上传第一张发票
-
点击”上传文档” -
选择一张收据照片或 PDF 发票 -
等待 AI 自动提取数据
-
-
查看和编辑交易记录
-
在交易列表中查看提取结果 -
如有需要,手动修正或补充信息
-
-
导出财务报表
-
使用高级过滤筛选特定时间段或类别的交易 -
点击”导出 CSV”,下载包含所有原始文档的压缩包
-
本地开发环境搭建
如果你想参与开发或深度定制 TaxHacker:
# 克隆仓库
git clone https://github.com/vas3k/TaxHacker.git
cd TaxHacker
# 安装依赖
npm install
# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,设置 DATABASE_URL 等配置
# 初始化数据库
npx prisma generate && npx prisma migrate dev
# 启动开发服务器
npm run dev
访问 http://localhost:7331 即可看到本地运行的实例。
生产环境构建:
npm run build # 构建应用
npm run start # 启动生产服务器
反思与独特见解
在开发和使用 TaxHacker 的过程中,我有几点深刻的体会。
第一,AI 的价值不在于炫技,而在于解决真实痛点。市面上有太多”AI 驱动”的产品,把 AI 当作噱头而非工具。但记账这件事,其痛点再清晰不过:手动录入太慢、容易出错、无法处理复杂格式。AI 恰好能解决这些问题——它不需要理解你的业务逻辑,只需要准确地从图像或 PDF 中提取结构化数据。这是 AI 的最佳应用场景:重复性高、规则明确、但人工操作效率低下的任务。
第二,数据主权比功能丰富更重要。很多人选择云服务是因为它们功能强大、界面精美。但当你意识到自己的财务数据存储在别人的服务器上,并且随时可能因为服务商的决策而失去访问权限时,那些华丽的功能就变得不那么重要了。TaxHacker 的自托管设计,虽然牺牲了一部分便利性(比如需要自己部署和维护),但换来的是对数据的完全控制。这是一种更长期、更可持续的解决方案。
第三,定制化能力决定了工具的生命周期。一个只能按固定模板工作的工具,注定只能服务于特定场景或特定时期。但如果工具提供了足够的定制能力——无论是字段、类别还是 AI 提示词——它就能随着你的业务成长而进化。这也是为什么 TaxHacker 没有限制你可以创建的字段数量,也没有锁定 AI 提示词。工具应该适应人,而不是人适应工具。
第四,开源不仅仅是代码公开,更是信任的基石。财务数据的敏感性决定了用户必须能够审计工具的行为。如果代码是封闭的,你永远无法确定应用是否在后台上传数据、是否存在安全漏洞。开源则让一切透明化——任何人都可以检查代码、提出改进建议、甚至 fork 出自己的版本。这种透明性,是传统商业软件无法提供的。
常见问题解答
1. TaxHacker 是否支持多用户协作?
当前版本主要为个人用户和小团队设计。虽然可以在自托管实例上创建多个账户,但协作功能(如权限管理、审批流程等)尚未完全开发。如果你的团队有这方面需求,可以在 GitHub 提交功能请求。
2. 如果 AI 提取的数据有错误,该如何处理?
系统会将提取的数据显示在编辑界面中,你可以随时手动修正。对于经常出错的字段,建议调整该字段的 AI 提示词,提供更明确的提取规则或示例。
3. 是否支持本地 LLM 模型(如 Ollama、LM Studio)?
官方文档提到”本地 LLM 支持即将推出”,但当前版本尚未实现。你可以关注项目的 GitHub 仓库,了解最新进展。
4. 数据库可以使用 MySQL 或 SQLite 吗?
TaxHacker 目前只支持 PostgreSQL 17+。由于使用了一些 PostgreSQL 特有的功能,暂时无法迁移到其他数据库系统。
5. 如何备份和恢复数据?
直接备份 PostgreSQL 数据库和 UPLOAD_PATH 目录即可。恢复时,将数据库和文件目录还原,重新启动应用即可。你也可以使用应用内的导出功能,定期导出 CSV 和原始文档作为冗余备份。
6. TaxHacker 是否符合各国的税务合规要求?
TaxHacker 是一个数据提取和整理工具,不提供税务建议或报税服务。具体的税务合规问题,需要咨询当地的会计师或税务顾问。应用的导出功能可以生成符合大多数会计软件要求的 CSV 格式,方便与专业工具集成。
7. 项目的更新频率如何?是否有长期维护计划?
项目目前处于早期开发阶段,更新较为频繁。官方文档建议”标星项目以获取新功能和 Bug 修复通知”。由于是开源项目,即使原作者停止维护,社区也可以继续开发。
8. 如果我不懂 Docker,是否有其他部署方式?
当前主要推荐 Docker 部署。如果你熟悉 Node.js 和 PostgreSQL,也可以直接克隆代码仓库,手动运行 npm install 和 npm run build,然后配置数据库连接。具体步骤参见”本地开发”章节。
TaxHacker 不是为了取代专业的财务软件或会计师,而是为了让那些被记账拖累的自由职业者和小企业主,重新夺回时间的掌控权。它用 AI 消除了最繁琐的数据录入工作,用自托管保障了数据的主权,用开源代码提供了可审计的透明性。如果你正在为每月的记账工作感到疲惫,或许可以给 TaxHacker 一个机会——毕竟,你的时间值得被用在更有价值的事情上。
