返回社区
公开项目
可预览原型图
by 匿名用户

融合语音识别和OCR的智能记账助手

在传统记账基础上集成语音输入和票据拍照识别,用户可通过说话或扫一扫发票快速记账。利用Android语音API和OCR库(如Tesseract或百度OCR)实现,数据可分析消费趋势并生成简报。

预览原型图

版本

v1 · running

需求

43 条

文件

2015 个 · 20 MB

公开时间

2026/6/23 16:09:59

更新时间

2026/6/23 20:52:42

需求树

43 条
FR-AUTH

用户认证与账户管理

functional
pending
待处理

提供用户的注册、登录、密码重置和账户信息管理功能,保障个人记账数据安全隔离。

FR-AUTH-001

用户注册

functional
pending
待处理

注册表单包含手机号(11位校验,提交时查重,已注册则提示"该手机号已注册,请直接登录"并跳转登录页)、登录密码(8-20位字母数字组合)、确认密码(与密码一致校验);提交后展示6位验证码(本地生成,生产环境可替换为短信SDK),60秒倒计时可重发,验证通过后创建账户并自动登录跳转主页。表单含loading态、字段实时校验错误提示、空状态引导文案。

FR-AUTH-002

用户登录

functional
pending
待处理

登录表单包含手机号和密码,支持"记住我"持久化登录态(7天token);登录失败时提示"手机号或密码错误"(不区分具体原因),连续5次失败锁定15分钟。含loading态与网络异常toast提示。

FR-AUTH-003

密码重置

functional
pending
待处理

在登录页提供"忘记密码"入口,输入已注册手机号后发送验证码,验证通过后进入新密码设置页(8-20位字母数字组合,与确认密码一致),重置成功后跳转登录页并toast提示。

FR-AUTH-004

账户信息管理

functional
pending
待处理

在"我的"页面显示用户头像(可选上传)、昵称(可编辑)、手机号(只读);提供修改密码入口(需输入旧密码验证);提供退出登录按钮(二次确认弹窗,清除本地token)。

FR-VOICE

语音记账

functional
pending
待处理

通过Android语音API将用户口述的消费信息转文字并解析为结构化记账条目。

FR-VOICE-001

语音输入触发

functional
pending
待处理

主页底部导航栏设置独立"语音记账"按钮,点击后弹出录音浮层(含波形动画、录音时长显示、取消/完成按钮);首次使用时申请麦克风权限,被拒时引导去系统设置开启。最长录音60秒,超时自动停止。

FR-VOICE-002

语音识别转文字

functional
pending
待处理

调用Android SpeechRecognizer API将录音转为文字,识别过程中显示"识别中…"loading态;识别成功返回文字结果展示在确认区;识别失败时提示"未识别到内容,请重新说一次"并提供重试按钮;支持离线识别降级提示。

FR-VOICE-003

语音内容解析为记账条目

functional
pending
待处理

对识别出的文字进行结构化解析:提取金额(支持"花了50块""消费一百二十元"等口语表达)、消费类别关键词映射(支出:如"吃饭""午餐"→餐饮,"打车"→交通,"房租"→住房;收入:如"工资""发薪"→工资,"奖金""年终"→奖金,"兼职"→兼职,"理财收益"→理财)、日期(默认当天,"昨天""上周五"等相对时间需转换)。解析失败时保留原始文字让用户手动修正。

FR-VOICE-004

语音记账确认与保存

functional
pending
待处理

解析结果展示在确认卡片中,包含金额(可编辑)、类别(图标网格选择器,与手动记账一致,支持支出/收入分组)、日期(可改)、备注(原始语音文字可编辑);用户确认后点击"保存"写入账目数据库并toast"记账成功";点击"取消"丢弃本次识别结果返回主页。

FR-OCR

OCR票据识别记账

functional
pending
待处理

通过拍照或选取图片对发票/小票进行OCR文字识别,提取金额、商户、日期等关键字段自动填入记账表单。

FR-OCR-001

拍照/选取票据图片

functional
pending
待处理

主页提供"扫票据"入口,点击后弹出底部ActionSheet选择"拍照"(调系统Camera)或"从相册选取";首次使用时申请相机权限和存储权限,被拒时引导去设置。拍照后展示预览图,含"重新拍摄"和"使用照片"按钮。

FR-OCR-002

OCR文字识别

functional
pending
待处理

对选定票据图片调用Tesseract OCR(优先本地离线)或百度OCR API(在线)进行文字识别;识别过程显示进度条和"正在识别票据…"文案;识别成功返回原始文字内容;识别失败/超时(15秒)提示"识别失败,请确保照片清晰"并提供重试。

FR-OCR-003

票据信息解析提取

functional
pending
待处理

从OCR原始文字中提取:总金额(匹配"合计""总计""实付"后数字)、商户名称(通常位于票据顶部)、日期(匹配"日期""时间"后内容)、明细列表(按行解析商品名+单价+数量)。对增值税发票额外提取发票代码、发票号码、税额。提取失败字段留空交由用户补充。

FR-OCR-004

识别结果确认与保存

functional
pending
待处理

解析结果展示在确认卡片中:金额、类别(图标网格选择器,与手动记账一致,商户名自动推断为默认选中)、日期、备注(含商户名和原始摘要),所有字段可手动编辑;底部展示原始票据缩略图可点击放大查看。确认后保存到账目数据库,同时保存票据图片关联到该条账目。

FR-OCR-005

票据图片预处理

functional
pending
待处理

在OCR识别前对票据图片做预处理:自动检测图片方向并旋转矫正(基于EXIF或边缘检测)、裁剪至票据区域(可选手动调整裁剪框)、增强对比度和锐化以提升文字清晰度。预处理在原图上叠加半透明裁剪框预览,用户确认后再进入OCR识别流程。

FR-MANUAL

手动记账

functional
pending
待处理

提供传统手动填写记账表单的能力,作为语音和OCR的兜底方案。

FR-MANUAL-001

手动记账表单

functional
pending
待处理

表单包含:金额(必填,小数点后最多2位,输入时实时格式化)、收支类型切换(支出/收入,默认支出)、类别下拉选择、日期选择器(默认当天)、备注文本(选填,最多200字)。所有字段含实时校验提示,保存按钮在必填字段为空时置灰不可点击。

FR-MANUAL-002

分类选择器

functional
pending
待处理

分类以图标+名称网格展示,支持预设分类(餐饮、交通、购物、住房、娱乐、医疗、教育、其他),每个分类有对应emoji图标。支出和收入分别展示不同分类集合(收入:工资、奖金、兼职、理财、其他)。分类可点击选中高亮,支持搜索框快速查找。

FR-MANUAL-003

日期选择与快速记账

functional
pending
待处理

日期选择器默认当天,点击弹出日历组件支持年月快速切换(左右箭头),可选范围近5年;提供"今天""昨天"快捷按钮。底部备注输入框支持换行。保存成功toast提示并返回主页,自动刷新账目列表。

FR-LEDGER

账目管理

functional
pending
待处理

提供账目列表的查看、筛选、搜索、编辑和删除功能,以及收支分类的自定义管理。

FR-LEDGER-001

账目列表展示

functional
pending
待处理

主页以时间倒序列表展示账目,每条显示:分类图标、分类名、备注摘要(截断)、金额(支出红色/收入绿色)、日期。按月分组并显示月度合计(支出总额/收入总额)。列表支持下拉刷新和上拉加载更多(每页20条),空状态显示插图和"还没有账目,去记一笔吧"引导。

FR-LEDGER-002

账目筛选与搜索

functional
pending
待处理

顶部搜索栏支持按备注关键词模糊搜索;筛选面板(点击筛选图标展开)支持按分类(多选)、日期范围(起止日期选择器)、收支类型(全部/支出/收入)、金额区间(最小值/最大值)组合筛选。筛选条件以标签形式展示在列表上方,点击×可逐个清除;有筛选条件时列表仅显示匹配结果。

FR-LEDGER-003

账目编辑

functional
pending
待处理

点击列表中的账目进入编辑页,表单字段与新增一致(金额、收支类型、分类、日期、备注),预填现有数据;如有关联票据图片则展示缩略图可替换。保存时更新数据库并返回列表自动刷新,toast"修改成功"。

FR-LEDGER-004

账目删除

functional
pending
待处理

列表项左滑露出红色删除按钮,点击弹出确认弹窗"确定删除这笔记录?删除后不可恢复",确认后删除数据库记录及关联票据图片,列表移除该项并toast"已删除";提供3秒内"撤销"按钮可恢复记录及关联票据图片(从应用私有目录临时缓存中恢复,3秒后物理清除)。

FR-LEDGER-005

收支分类管理

functional
pending
待处理

在设置页提供"分类管理"入口,列出所有预设分类(支出和收入分组展示),支持:新增自定义分类(输入名称+选emoji图标)、编辑现有分类名称和图标、删除自定义分类(预设分类不可删除,删除后该分类下账目归入"其他")。

FR-ANALYSIS

消费分析与简报

functional
pending
待处理

基于记账数据生成消费趋势图表、分类占比统计和消费简报,帮助用户了解消费习惯。

FR-ANALYSIS-001

月度消费趋势图表

functional
pending
待处理

"分析"Tab展示近6个月收支趋势折线图(X轴月份,Y轴金额,支出红色折线+收入绿色折线),支持点击数据点显示当月具体数值tooltip。图表下方显示月度环比变化百分比(↑/↓箭头+百分比)。无数据月份显示空状态"暂无数据"。

FR-ANALYSIS-002

分类消费占比

functional
pending
待处理

以饼图/环形图展示当月各分类支出占比(每类显示百分比+金额),图例可点击切换某分类显示/隐藏;环形图中心显示当月总支出金额。支持切换查看"本月""上月""本季""本年"。

FR-ANALYSIS-003

消费简报生成

functional
pending
待处理

每月1日自动生成上月消费简报卡片,内容包括:总支出/总收入、最大支出类别及金额、环比变化、日均消费、消费建议。消费建议触发规则:餐饮占比>50%提示"餐饮支出占比较高,建议关注";连续3月总支出环比增长>20%提示"支出持续增长,建议控制";某分类单月环比增长>100%提示该分类异常增长;无异常时显示"本月消费结构健康"。简报以卡片形式展示在分析页顶部,支持分享为图片。用户也可手动选择月份生成历史简报。

FR-DATA

数据管理

functional
pending
待处理

提供数据的本地持久存储、备份导出功能,保障数据安全与可迁移性。

FR-DATA-001

数据本地持久存储

functional
pending
待处理

使用Room数据库本地存储所有账目记录(金额、分类、日期、备注、票据图片路径、创建时间)和用户设置(自定义分类、偏好设置)。数据库版本迁移策略:新增字段时做兼容迁移不丢数据。

FR-DATA-002

数据导出

functional
pending
待处理

设置页提供"导出数据"功能,支持导出为CSV文件(含金额、收支类型、分类、日期、备注字段),可选导出时间范围(全部/近1月/近3月/近1年/自定义)。导出后调系统分享Sheet发送到微信/邮件/文件管理器等。

TR

技术约束与架构

technical
pending
待处理

定义项目核心技术选型与架构约束,包括Android平台、本地数据库、语音识别SDK和OCR方案。

TR-001

Android原生开发(Kotlin/Java)

technical
pending
待处理

采用Android原生开发,最低支持Android 7.0(API 24),目标SDK 34。使用Kotlin为主要开发语言,Gradle构建。UI层采用Material Design 3组件库,导航使用Jetpack Navigation。

TR-002

本地数据库方案

technical
pending
待处理

使用Room持久化库(基于SQLite),定义账目实体(金额、分类、日期、备注、票据图片路径、收支类型、创建时间)和用户设置实体。数据库版本通过Migration策略升级,不丢数据。

TR-003

语音识别方案

technical
pending
待处理

使用Android SpeechRecognizer API(系统内置),在线识别为主;离线识别作为降级方案(需预下载离线语音包)。语音解析使用正则+关键词匹配策略提取金额、分类和日期,不需额外NLP模型。

TR-004

OCR方案

technical
pending
待处理

优先使用Tesseract OCR(tess-two Android移植版)进行本地离线识别;首次使用时引导下载中文简体语言包(chi_sim,约50MB),下载失败或未下载时自动降级为百度OCR API在线识别(需用户在设置页配置API Key)。票据解析使用正则匹配提取金额、商户、日期等关键字段。票据图片本地存储至应用内部目录。

TR-005

性能:语音识别响应时间

technical
pending
待处理

语音识别从录音结束到返回文字结果的P95响应时间 ≤ 3秒(在线模式),超时判定为识别失败并提示用户重试。离线模式P95 ≤ 5秒。

TR-006

性能:OCR识别响应时间

technical
pending
待处理

OCR识别从图片提交到返回文字结果的P95响应时间 ≤ 5秒(本地Tesseract),在线百度OCR ≤ 3秒。超时15秒判定为失败,提示用户检查图片质量后重试。

TR-007

安全:本地数据隐私保护

technical
pending
待处理

用户账目数据仅存储在本地Room数据库,不上传服务器。用户密码使用bcrypt哈希后存储。导出CSV文件时弹出安全提示"数据包含个人财务信息,请妥善保管"。登录态token有效期7天,本地加密存储。

TR-008

性能:启动速度与交互流畅性

technical
pending
待处理

应用冷启动到主页可交互时间 ≤ 2秒;页面切换动画帧率保持60fps不掉帧;账目列表使用RecyclerView + Paging分页(每页20条),滑动无卡顿;票据图片压缩至 ≤ 500KB 后存储。

TR-009

应用导航与页面结构

technical
pending
待处理

应用采用底部导航栏(BottomNavigationView)三Tab结构:「首页」(账目列表+记账入口)、「分析」(趋势图表+简报)、「我的」(账户管理+设置)。首页顶部含搜索/筛选栏,FAB浮动按钮触发记账方式选择(语音/扫票据/手动)。页面路由使用Jetpack Navigation管理,支持返回栈。登录/注册独立于Tab之外,未登录时显示Auth页面。