Skip to content

darkrio326/AutoLedger

Repository files navigation

AutoLedger Icon

AutoLedger

本地优先个人账本 + 自动化导入 + 酒店水单归档
AutoLedger 是一个本地优先的个人账本。截图、小票、语音、剪贴板、快捷指令、手动导入和酒店水单 PDF 都只是导入入口,识别结果会先进入可复核流程,再由用户确认写入账本。基础记账长期免费;Pro 只解锁邮箱水单、专属收件箱、批量候选、智能去重和月结整理等省时间自动化能力。

简体中文 · 繁體中文 · English · 日本語

Xcode Build Tests 官网 Platform Swift 6 License


License / Commercial Use

AutoLedger is source-available for learning, personal research, security review, and contributions. Commercial use, white-label publishing, SaaS / hosted redistribution, or republishing a modified app to App Store, Google Play, Steam, Microsoft Store, WeChat Mini Programs, or other public marketplaces requires prior written permission.

You may not remove, bypass, or tamper with Pro / IAP / subscription gates and distribute the result. AutoLedger 名称、图标、截图、官网素材、App Store 素材、付费墙 artwork 和 README 图片不随源码授权;详见 LICENSEdocs/brand-assets-notice.md

定位 / Why AutoLedger

AutoLedger 不是又一个需要手工填表的记账 App。它关注的是减少重复输入,把截图、小票、订阅和酒店水单这些零散、混乱的消费材料整理成结构化记录。

识别结果默认进入可复核流程,用户保存前可以检查和编辑。它适合日常支付截图、纸质或电子小票、周期订阅,以及出差 / 旅行后的酒店水单归档。

Features

快速记录

  • 截图 / 拍照小票 OCR,自动提取金额、商户和时间。
  • 剪贴板和 Share Extension 导入,从任意 App 把支付截图或文本带进账本。
  • 语音记账、Siri / 快捷指令和 App Intent 输入。
  • iPhone 操作按钮、控制中心 Widget、Apple Watch 快速记录。

自动整理

  • 规则引擎 + 端侧 LLM 解析,覆盖常见支付截图、小票和账单文本。
  • 分类学习与自定义分类 / 来源,记住用户修正后的偏好。
  • 订阅识别与提醒,预测周期性扣费。
  • 月度报告,展示分类统计、消费趋势和商户排行。
  • 多账本,本地账本、账本管理、当前账本 / 全部账本口径和默认写入账本。
  • JSON 导出 / 导入与 iCloud 同步 / 备份,便于迁移和恢复。

酒店水单工作流

  • 手动酒店水单 PDF 导入,使用 PDFKit 提取文本并进入复核。
  • Pro 本地邮箱 PDF 候选导入,用户主动扫描并选择要导入的水单附件。
  • Pro 专属水单收件箱,接收转发到 AutoLedger 地址的酒店水单候选。
  • 保存前候选复核,不自动把识别结果写入正式账本。
  • 酒店消费档案,记录酒店、品牌 / 集团、入住退房、晚数、费用拆分和关联流水。

Free / Pro 边界

Free 会长期保留可用的日常记账能力。AutoLedger 不会把现有核心功能迁到 Pro 后面,也不会用 Pro 锁住用户的账本历史。

Free 包括手动记账、单张截图 / 拍照导入、语音 / 文本输入、手动酒店水单 PDF 导入、酒店历史查看、基础订阅管理、基础月报、Widget / Share Extension、JSON 导入导出、备份,以及历史记录的查看、编辑和删除。

Pro 的定位是省时间自动化,而不是账本访问权限。当前 Pro 能力包括本地邮箱水单扫描、专属云端水单收件箱、批量候选导入、高级去重、高级搜索、订阅异常提醒、月结导出包、智能整理建议和高级规则自动应用;后续继续推进统一待处理中心、月结检查清单、规则中心、智能视图 / Saved Views、订阅省钱看板、云端辅助整理、智能复核队列、高级分享模板和多设备自动化同步。

本地优先与云端自动化

AutoLedger 是本地优先应用,核心记账不需要账号。云端水单收件箱是可选自动化能力,只处理用户转发到 AutoLedger 专属地址的邮件附件,在需要时短期暂存来源 PDF,并生成可复核候选。

App 仍要求用户在保存前复核候选结果。云端自动化不会静默创建正式账单,也不会自动把交易写入用户账本。

Quick Start

App 内导入 — 打开 AutoLedger → 选择截图 → 识别后确认保存

一键记账(推荐)安装快捷指令 → 绑定操作按钮 → 按一下进入识别 / 确认流程

语音记账 — 在首页按住麦克风说「午饭 28 元」可快速识别;账本页也可点击波形按钮输入一句话,账本字段会实时生成并可确认保存,也可通过 Siri / 快捷指令触发语音记账

分享扩展 — 在微信/支付宝中分享截图 → 选择 AutoLedger

酒店消费导入

AutoLedger 的酒店消费不是只识别一笔金额,而是把酒店水单整理成可复核的住宿消费档案。

支持的导入入口:

  • 手动 PDF 导入:在酒店消费模块选择或拖入酒店水单 PDF,App 使用 PDFKit 提取文本,并进入酒店水单识别与复核流程。
  • 分享 PDF 到 App:从 Files、Mail 或其他 App 分享酒店水单 PDF 到 AutoLedger,可直接进入酒店消费待确认流程。
  • 本地邮箱扫描:Pro 自动化路径中,用户主动在 App 内连接 IMAP 邮箱,授权码只保存在本机 Keychain;App 拉取带 PDF 附件的候选邮件,用户勾选后批量导入。
  • 专属收件箱候选:Pro 自动化路径中,用户可领取 folio+<token>@getautoledger.app 专属地址,手动转发酒店水单邮件或设置自己的邮箱转发规则;Worker 只短期暂存 PDF 候选,App 下载后仍在本机提取文本、识别和复核。

识别目标包括酒店名称、品牌 / 集团、城市 / 国家和地区、入住 / 退房日期、晚数、房型、订单号、币种、房费、税费、服务费、餐饮、其他消费、总额、支付方式、来源文件和识别置信度。确认后会生成 HotelStayRecord,并自动关联一条普通支出流水,默认归入酒店住宿分类。

隐私边界:

  • Worker 不登录用户邮箱,不保存 QQ / IMAP / Gmail / Outlook 授权码。
  • 本地邮箱扫描必须由用户主动触发,结果进入待确认状态,不自动正式入账。
  • 云端专属收件箱只处理用户转发到 AutoLedger 地址的邮件,不扫描用户私人邮箱。
  • PDF 候选在云端只做短期暂存;App 成功下载 / 转换后会优先删除云端 PDF。
  • 用户确认前不会写入正式账本;酒店记录和关联流水仍可在 App 内查看、编辑和删除。

Screenshot Preview

App Store 截图管线说明:tools/appstore-screenshots/README.md

如需刷新本地截图预览,运行 bash tools/appstore-screenshots/scripts/export.sh,然后打开本地生成的 tools/appstore-screenshots/output/preview.html

Localization & Recognition Packs

AutoLedger 的界面本地化和账单识别语言包是两层独立能力:

  • App UI 语言:当前主路径覆盖 zh-Hans 简体中文、zh-Hant 繁体中文、en 英文、ja 日文;v1.7.0 已开始加入 ko 韩语资源草稿。主 App、Watch、Widget、Control Widget、Share Extension 的 key 集合由 scripts/check_localization_coverage.py 校验。
  • App Store 截图语言:截图管线已按 zh-Hans / zh-Hant / en / ja 组织 iPhone、iPad、Mac、Apple Watch、Apple TV 和 visionOS 场景文案;日文截图和商店元数据仍需人工审校后再提交。
  • 账单识别语言包AutoLedgerCore 内置 zh-Hanszh-Hantenja 识别包,承载账单关键词、金额格式、日期格式、分层金额标签、商户标签、非商户排除词、分类关键词和 OCR 语言提示。
  • 日文账单识别:日文包覆盖 合計小計税込店舗注文番号カフェコンビニ 等常见字段;OCR hint 使用 ja-JP + en-US,金额和商户 / 分类解析已经进入离线回归。
  • v1.7.0 韩语范围:已启动韩语 App UI 资源草稿和 AutoLedgerCore ko 识别包,覆盖韩文金额、日期、商户、分类关键词和 ko-KR + en-US OCR hint;韩语 ASC 文案、截图、母语审校和 golden cases 补齐前,不把 ko 标成公开 Ready 语言。
  • i18n 发布矩阵versions/v1.7.0-i18n-release-matrix.md 将每个语言按商店可见(ASC 增加语言)、界面可读(App)、基础识别可用(语言识别包)、真实样本回归、地区支付 / 票据格式专项优化五项门禁管理;后续语言不只做 UI 翻译。
  • 扩展原则:后续语言包以纯数据、版本化、可 fallback 的方式扩展;用户纠错共享必须 opt-in、脱敏、可撤回,并经过审核后才可能进入 reviewed pack。本仓库当前不实现远程语言包热更新或自动上传。

Tech Stack

层级 技术
UI SwiftUI, iOS 17+ deployment target, Xcode 27 / iOS 27 SDK adaptive layout
OCR Apple Vision (VNRecognizeTextRequest)
解析 规则引擎 + LLM (SmartReceiptParser)
LLM Apple Foundation Models / Gemma-2 2B (MediaPipe LLM Inference)
模型分发 Cloudflare R2 CDN + SHA-256 (CryptoKit)
存储 SQLite (本地)
架构 MVVM + 依赖注入
依赖管理 CocoaPods (MediaPipe), SPM (AutoLedgerCore)
快捷指令 AppIntents / ForegroundContinuableIntent
分享 Share Extension
Watch watchOS 10+, WatchConnectivity
Widget WidgetKit (主屏 & 控制中心)
CI Xcode Cloud

Project Structure

AutoLedgerRio/
├── AutoLedger/                    # Xcode 工程
│   ├── AutoLedger/                # 主 App 源码
│   │   ├── App/                   # 入口 & 全局配置
│   │   ├── Features/              # Feedback, Hotel, Inbox, Ledger, Report, Settings, Subscription, iPad
│   │   ├── Domain/                # App 层 Enums、Models、Services、Intents
│   │   ├── Data/                  # DTO、Mapper、Persistence adapter
│   │   ├── Shared/                # 通用组件、常量、扩展
│   │   ├── Screenshots/           # 截图模式 host 与 fixture UI
│   │   ├── Resources/             # 多语言资源与配置
│   │   └── Assets.xcassets/       # 图标与资源
│   ├── AutoLedgerCore/            # 本地 Swift Package (纯 Foundation,跨平台)
│   ├── AutoLedgerWatch Watch App/ # Apple Watch App 源码
│   ├── AutoLedgerWidgets/         # 主屏 Widget Extension
│   ├── AutoLedgerWatchWidgetsExtension/ # watchOS Widget / complication
│   ├── ControlWidgetExtension/    # 控制中心 Widget Extension
│   ├── ShareExtension/            # Share Extension
│   ├── AutoLedgerTV/              # tvOS 只读看板
│   ├── AutoLedgerVision/          # visionOS 展示版
│   ├── Packages/RealityKitContent/# visionOS RealityKit 内容包
│   ├── Pods/                      # CocoaPods 依赖 (gitignored)
│   └── ci_scripts/                # Xcode Cloud CI 脚本
├── AutoLedgerCoreKit/             # Core 相关实验 / 工具包
├── ReceiptDebugTool/              # 小票解析调试工具
├── versions/                      # 版本计划 & 回归基线
├── process/                       # 迭代工作流文档
├── docs/                          # 设计与专项说明文档
├── scripts/                       # 回归测试脚本
├── tests/                         # Golden 回归样例
├── tools/app-icons/               # App Icon 生成与验证工具
├── tools/appstore-screenshots/    # App Store 截图导出管线(zh-Hans / zh-Hant / en / ja)
├── tools/receipt_ocr/             # 小票 OCR 批处理与样本工具
├── tools/worker/                  # Worker / 远端能力实验
└── template/                      # 文档模板

Build

# 环境要求:Xcode 27 beta + CocoaPods
sudo xcode-select -s /Applications/Xcode-beta.app/Contents/Developer
brew install cocoapods

# 安装依赖
cd AutoLedger
pod install

# 构建 (需使用 workspace)
xcodebuild -workspace AutoLedger.xcworkspace \
  -scheme AutoLedger \
  -destination 'generic/platform=iOS' \
  build

# 回归测试
cd ..
bash scripts/run_offline_regression.sh
bash scripts/run_golden_regression.sh

本仓库包含 Config.example.xcconfig,仅作为公开协作时的占位示例。真实发布工程没有切换到该示例配置,因此 main 合并后仍可作为 AutoLedger 的真实开发和 Xcode Cloud 发布主分支。

如果你要在自己的 Apple Developer 账号下构建,请为 iOS App、Apple Watch App、Share Extension、Widget Extension 分别配置 Bundle ID,并配置自己的 App Groups 与 iCloud Containers。

Privacy

  • AutoLedger 以本地优先为设计目标,默认不需要账号。
  • 账单解析尽可能在设备端完成;用户应在保存前确认识别结果。
  • 调试导出、反馈包或截图可能包含个人消费数据,请不要在公开 Issue / PR 中上传真实小票、支付截图、账单截图或个人财务信息。
  • App Store 版本可能包含签名、entitlement、StoreKit、Xcode Cloud 和商店元数据配置,这些配置不一定属于本仓库公开内容。

Roadmap

当前仓库主线状态:

  • v1.6.0v1.6.1 已完成并继续对应 ASC / App Store 1.5.0 大版本口径。
  • App Store 1.4.0 已发布;内部 v1.5.1 是该发布线的最终收口版本,v1.5.0 作为实现基线并入发布。
  • v1.6.2 已完成,收口 SDK 适配阶段二、酒店邮箱导入、Deep link / Widget / App Intents、数据可靠性和日文发布材料审校。
  • v1.6.3 已完成当前范围:酒店 C1 AutoLedger 专属收件箱第一版 App/Core 工程骨架、审核说明和回归 baseline;C2 Worker 登录用户邮箱自动扫描仅保留为个人自用或未来实验路线。
  • v1.6.4 已完成 ASC / App Store 1.5.0 发布收口基线,GOAL-2200 完成 Free / Pro 边界冻结;Pro 页面、恢复购买 / 管理订阅、本地邮箱月度免费额度、批量候选 gate、高级去重 gate、C1 专属收件箱 Worker / D1 / R2 / Queue、云候选 API、App 侧 PDFKit 本地转换入口、审核条款、visionOS / macOS 热修和最终基线 tag 已收口。
  • v1.7.0 正在作为 ASC / App Store 1.6.0 开发:实时 OCR 扫描、韩语 UI 和 ko 识别包、i18n 发布矩阵、可复用 common-api 地点 / 货币 / 汇率 / 天气 / release notes、App Store Server Notifications 代码、ASC metadata-as-code、Pro 高级搜索、订阅异常、月结 ZIP 包、高级规则、智能整理建议、基础分享图、酒店旅程回忆和隐私安全 analytics / dashboard 已进入主线;analytics 只做匿名 App 层聚合,用于发布观测、使用卡点和未来年度总结的综合背景,不上传个人账本内容;后续继续补真实样本、商店资产、运营门禁、云端辅助整理、智能复核队列、高级分享模板和多设备自动化同步。
内部版本 App Store 状态 主要内容
v0.1.0 ✅ 已发布 MVP:截图导入、OCR、规则解析、分类、账本、月报
v1.0.0 ✅ 已发布 一键记账引导、LLM 智能解析、操作按钮集成、图标、TestFlight 外测就绪
v1.1.0 ✅ 已发布 订阅识别 & 扣费提醒、分类学习、自定义分类 / 来源、用户反馈闭环、去重增强、最近删除、手动记账、控制中心 Widget
v1.2.0 1.1.0 ✅ 已发布 Gemma-2 2B 端侧 LLM 集成(CDN + SHA-256)、模型生命周期管理、月报图表增强(Swift Charts)、异常消费检测、云闪付 / 银联适配、订阅管理增强、软删除持久化
v1.3.0 1.2.0 ✅ 已发布 BackupBundle、JSON 导出/导入、覆盖恢复、iCloud 单文件自动备份、重装恢复提示
v1.3.1 1.2.0 ✅ 已发布 语音记账 MVP、首页按住语音入口、Siri/AppIntent 入口、App 内确认页、语音来源与调试记录、语音解析回归
v1.3.2 1.2.0 ✅ 已发布 统一 LedgerTextInterpreter 解析入口,收敛 OCR / 剪切板 / 分享 / 语音 / Siri 多路径
v1.3.3 1.2.0 ✅ 已发布 平台无关 LedgerTextInterpreterCore 提取为 AutoLedgerCore 模块,批量 OCR 测试框架
v1.3.4 1.2.0 ✅ 已发布 规则解析质量提升(合计行优先、商户黑名单、分类映射)、批量报告驱动修复
v1.3.5 1.2.0 ✅ 已发布 Worker API 可行性评估、712 样本批量回归(金额命中率 100%)、商户别名迁移
v1.4.0 1.3.0 ✅ 已发布 Apple Watch 端上线(语音记账、今日支出、最近账单)、辅助功能专项、App Intents 增强、中英繁本地化与截图管线、可选 Support Developer 内购
v1.5.0 1.4.0 ✅ 已并入 1.4.0 发布 iPad 工作台、批量导入 / 批量识别、数据清洗、基础多端数据同步、Watch 今日支出与表盘小组件、iPad / Mac 截图管线、Mac Catalyst 主线能力
v1.5.1 1.4.0 ✅ 已发布 最低系统需求优化、识别链路 Core 化、外部辅助识别试点、编辑保存稳定性、iCloud 同步性能、当前平台截图与 App Preview v001;tvOS / visionOS 与多账本顺延
v1.6.0 1.5.0 ✅ 已完成 订阅管理补强、AI 订阅判断、商户 / 分类 / 订阅倾向学习缓存、tvOS 只读看板、visionOS 展示版、全平台构建 / TestFlight / ASC / schema / 截图收口
v1.6.1 1.5.0 ✅ 已完成 酒店水单识别与酒店消费归档、多账本基础能力、新一轮多语言支持、日文支持、跨平台 App Icon 重绘、iOS 27 可拉伸布局阶段一;商店不区分内部小版本
v1.6.2 1.5.0 默认沿用 ✅ 已完成 SDK 适配阶段二、酒店邮箱导入草稿队列 / 去重 / 候选批量导入、Deep link Router、Widget / App Intents 第一段、CSV / JSON 与备份恢复 smoke、日文发布材料审校、GOAL-1960 release smoke
v1.6.3 1.5.0 默认沿用 ✅ 已完成 酒店水单 C1 专属收件箱第一版 App/Core 骨架:folio+<token>@getautoledger.app 合同、云候选模型、deep link、PDFKit 本地转换入口、审核说明和回归 baseline;真实 Worker/API 由 1.6.4 接续
v1.6.4 1.5.0 默认沿用 ✅ 已完成 Personal Pro 订阅基础和 ASC 1.5.0 收口基线:Free / Pro 边界已冻结;Pro 页面、恢复购买 / 管理订阅、本地邮箱月度免费额度、批量候选 gate、高级去重 gate、C1 Cloudflare Worker、D1/R2/Queue、云候选 API、App 云候选下载与 PDFKit 转换入口、审核条款、visionOS / macOS 热修和最终基线 tag 已收口
v1.7.0 1.6.0 🚧 开发中 实时 OCR 票据扫描与拍照 / 相册 fallback;韩语 UI 与 ko 识别包;i18n 发布矩阵;common-api 五语地点目录、货币目录、按日期汇率、酒店历史天气、release notes 和隐私安全 analytics;App Store Server Notifications;ASC metadata-as-code;Pro 高级搜索、订阅异常提醒、月结 ZIP 包、高级规则、智能整理建议;基础 PNG 分享图和酒店旅程回忆;后续继续推进云端辅助整理、智能复核队列、高级分享模板和多设备自动化同步

License

源码采用 source-available 非商业许可证,详见 LICENSE。代码可供学习、研究和贡献参考,但未经书面许可,不允许商业使用、换皮发布、上架修改版 App、SaaS 化、托管服务或绕过 Pro / IAP / 订阅门禁后分发。

AutoLedger 名称、App 图标、App Store 截图、营销素材与品牌素材不随源码授权,相关权利由作者保留。

About

Fast local-first expense tracking on iPhone, iPad, Apple Watch, and Mac, with read-only views on tvOS and visionOS.

Topics

Resources

License

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors