一款基于 Spring Boot 开发的智能记账应用,集成 AI 识别功能,支持票据自动识别和分类。
AI 记账本是一个全栈记账解决方案,提供后端 API 服务和 Android 移动端应用。通过集成 OpenAI 视觉识别能力,用户可以通过拍照自动识别票据信息,实现快速记账。
- 🔐 用户认证 - 基于 JWT 的安全认证机制
- 📝 账单管理 - 支持收入/支出记录的完整 CRUD 操作
- 🤖 AI 识别 - 集成 OpenAI GPT-4 Vision,自动识别票据内容
- 📊 统计分析 - 按时间、类目统计收支情况
- 📷 图片上传 - 集成阿里云 OSS 对象存储
- 📱 移动端支持 - 配套 Android 客户端应用
- 📚 操作日志 - 完整的用户操作追踪记录
- 🏷️ 类目管理 - 灵活的收支类目分类
- 框架: Spring Boot 2.2.6
- 数据库: MySQL 8.0
- ORM: Spring Data JPA + Hibernate
- 安全: Spring Security Crypto + JWT
- 缓存: Ehcache
- 连接池: HikariCP
- API 文档: Swagger 3.0
- 对象存储: 阿里云 OSS
- AI 服务: OpenAI GPT-4 Vision
- 移动端: Android (Java)
- 网络请求: Retrofit + OkHttp
- UI: Material Design
AI-ledget/
├── src/main/java/com/jizhang/
│ ├── config/ # 配置类(Swagger、Web、跨域等)
│ ├── controller/ # 控制器层
│ │ ├── AuthController.java # 认证接口
│ │ ├── UserController.java # 用户管理
│ │ ├── TransactionController.java # 账单管理
│ │ ├── CategoryController.java # 类目管理
│ │ ├── UploadController.java # 文件上传
│ │ └── HealthController.java # 健康检查
│ ├── service/ # 服务层
│ │ ├── UserService.java # 用户服务
│ │ ├── TransactionService.java # 账单服务
│ │ ├── OcrService.java # OCR 识别服务
│ │ ├── OssService.java # OSS 上传服务
│ │ └── OperationLogService.java # 操作日志服务
│ ├── repository/ # 数据访问层
│ ├── entity/ # 实体类
│ ├── dto/ # 数据传输对象
│ ├── enums/ # 枚举类
│ ├── utils/ # 工具类(JWT、JSON等)
│ └── exception/ # 异常处理
├── src/main/resources/
│ ├── application.yml # 主配置文件
│ ├── application-local.yml # 本地环境配置
│ └── config/ehcache.xml # 缓存配置
├── android/ # Android 客户端
│ ├── app/
│ │ └── src/main/java/com/jizhang/ledger/
│ │ ├── ui/ # UI 界面
│ │ ├── network/ # 网络请求
│ │ ├── model/ # 数据模型
│ │ └── utils/ # 工具类
├── database.sql # 数据库初始化脚本
├── pom.xml # Maven 依赖配置
└── README.md # 项目文档
- JDK 1.8+
- Maven 3.6+
- MySQL 8.0+
- Redis(可选)
- 阿里云 OSS 账号(用于图片存储)
- OpenAI API Key(用于 OCR 识别)
- 克隆项目
git clone <repository-url>
cd AI-ledget- 创建数据库
mysql -u root -p < database.sql- 配置文件
编辑 src/main/resources/application-local.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/jizhang
username: your_username
password: your_password
jwt:
secret: your-jwt-secret-key
oss:
endpoint: your-oss-endpoint
accessKeyId: your-access-key-id
accessKeySecret: your-access-key-secret
bucketName: your-bucket-name
openai:
apiKey: your-openai-api-key- 编译运行
# 编译项目
mvn clean package
# 运行项目
java -jar target/jizhang-api-0.0.1-SNAPSHOT.jar
# 或使用 Maven 直接运行
mvn spring-boot:run- 访问接口
- API 地址:
http://localhost:8084 - Swagger 文档:
http://localhost:8084/swagger-ui/ - 健康检查:
http://localhost:8084/health
POST /auth/register- 用户注册POST /auth/login- 用户登录
GET /user/profile- 获取用户信息PUT /user/profile- 更新用户信息
GET /transactions- 获取账单列表POST /transactions- 创建账单PUT /transactions/{id}- 更新账单DELETE /transactions/{id}- 删除账单GET /transactions/statistics- 获取统计数据
POST /upload/image- 上传图片POST /upload/ocr- OCR 识别票据
GET /categories- 获取所有类目
详细 API 文档请访问 Swagger UI。
Android 客户端位于 android/ 目录,使用 Android Studio 打开即可运行。
- 用户注册/登录
- 添加/编辑/删除账单
- 拍照上传票据
- 账单列表查看
- 统计图表展示
- 个人资料管理
欢迎提交 Issue 和 Pull Request!
本项目采用 MIT 许可证。
如有问题或建议,请通过以下方式联系:
- 提交 Issue
- 发送邮件至项目维护者
注意: 本项目仅供学习交流使用,请勿用于商业用途。使用 OpenAI API 和阿里云 OSS 将产生相应费用,请注意成本控制。