|
|
||
|---|---|---|
| app | ||
| gradle/wrapper | ||
| .gitignore | ||
| README.md | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| settings.gradle.kts | ||
README.md
OCR 机具编码识别 APP (OCR Equipment Code Scanner)
这是一款专为电力机具管理设计的 Android 应用程序,旨在通过 OCR 技术高效识别和管理设备编码。该应用集成了 CameraX 相机控制、离线/在线 OCR 识别、本地数据库存储以及数据统计分析功能。
✨ 核心功能
- 高级相机控制:
- 点击对焦 (Tap-to-Focus): 支持屏幕点击手动对焦,确保拍摄清晰。
- 双指缩放 (Pinch-to-Zoom): 支持双指捏合手势进行变焦,轻松捕捉远处的编码。
- 自定义裁剪框: 界面提供可视化裁剪框,精准定位识别区域,提升 OCR 准确率。
- 防抖拍摄: 拍摄按钮增加防抖逻辑,防止重复误触。
- OCR 智能识别:
- 集成高效 OCR 接口,快速识别机具上的文本编码。
- 自动格式化处理(自动去除多余连字符、噪点数据)。
- 友好的中文提示: 网络异常或识别失败时,提供清晰的中文报错(如“服务器连接失败,请检查网络”、“请正确拍摄编码设备”)。
- 数据全生命周期管理:
- 本地历史记录: 使用 Room 数据库本地存储所有扫描记录。
- 搜索与筛选: 支持按类别或日期快速检索历史数据。
- 数据统计看板: 可视化展示识别准确率和各类别的分布情况。
- 个性化定制:
- 机具类别管理: 支持用户添加、编辑、删除自定义机具类别(如“卡线器”、“滑车”等)。
- 智能校验: 类别名称限制 7 字以内,并具备唯一性校验,防止重复添加。
🛠 技术栈
- 开发语言: Kotlin
- UI 框架: Jetpack Compose (Material3)
- 依赖注入: Hilt
- 本地数据库: Room
- 网络框架: Retrofit + OkHttp
- 相机库: CameraX
- 图片加载: Coil
- 异步处理: Coroutines + Flow
🚀 快速开始
环境要求
- Android Studio Ladybug 或更新版本。
- JDK 17 或更高版本。
- Android 真机(需支持相机功能,Min SDK 24+)。
构建与运行
- 克隆仓库:
git clone <repository-url> - 打开项目: 使用 Android Studio 打开项目根目录。
- 同步依赖: 等待 Gradle Sync 完成所有依赖下载。
- 真机调试: 连接 Android 手机,点击工具栏上的 Run 按钮(绿色三角形)安装运行。
📖 使用指南
- 扫描识别:
- 将手机对准机具编码,使编码位于屏幕中央的白色取景框内。
- 如有需要,点击屏幕对焦或双指缩放。
- 点击底部的 相机按钮 拍照识别。
- 结果确认:
- 查看识别到的编码和自动匹配的类别。
- 手动修正: 如果识别有误,点击“手动修正”进行编辑。
- 确认提交: 确认无误后,点击“确认提交”保存记录。
- 类别管理:
- 在拍摄页面的类别下拉菜单中,选择“添加自定义类别”。
- 输入类别名称(最多7个字,不可重复),点击添加。
- 可点击下拉列表中类别旁的编辑/删除图标进行管理。
📂 项目结构
ui/: 界面层,包含所有页面 (Camera, Result, History) 和 ViewModels。data/: 数据层,包含 API 服务、Database 实体和 Repository。util/: 工具类,包含图片处理 (ImageProcessor) 和扩展函数。
注意: 本项目依赖后端 OCR 服务接口。请在 OcrAppModule.kt 或 Retrofit 配置中检查 API 地址配置。