# my_ocr_demo
**Repository Path**: luodewen/my_ocr_demo
## Basic Information
- **Project Name**: my_ocr_demo
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-10-09
- **Last Updated**: 2025-10-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# OCR 文字识别应用
一个基于 Flutter 开发的移动端OCR文字识别应用,支持拍照和相册选择图片进行文字识别。
## 功能特性
### 📸 拍照识别
- 实时相机预览
- 一键拍照功能
- 自动跳转到OCR识别页面
### 🖼️ 相册识别
- 从相册选择图片
- 支持多种图片格式
### ✂️ 智能裁剪
- 全屏图片显示
- 可缩放、平移图片
- 自由调整裁剪区域
- 实时预览裁剪效果
### 🔍 OCR识别
- 基于 Google ML Kit 的中文文字识别
- 高精度识别结果
- 实时处理反馈
## 技术栈
- **Flutter**: 跨平台移动应用开发框架
- **Google ML Kit**: 文字识别引擎
- **crop_your_image**: 图片裁剪库
- **camera**: 相机功能
- **image_picker**: 图片选择器
- **flutter_easyloading**: 加载提示
## 项目结构
```
lib/
├── main.dart # 应用入口和首页
├── camera_page.dart # 相机拍照页面
├── unified_ocr_page.dart # OCR识别主页面
├── ocr_service.dart # OCR识别服务
└── test_ocr_page.dart # OCR测试页面
```
## 主要页面
### 首页 (main.dart)
- 提供拍照和相册两个入口
- 简洁的UI设计
### 相机页面 (camera_page.dart)
- 实时相机预览
- 圆形拍照按钮
- 拍照后自动跳转到OCR页面
### OCR识别页面 (unified_ocr_page.dart)
- 全屏图片显示
- 可缩放和拖拽图片
- 自由调整裁剪区域
- OCR识别按钮在AppBar中
- 识别结果以对话框形式展示
## 核心功能实现
### 图片尺寸获取
```dart
Future _loadImageSize() async {
final codec = await ui.instantiateImageCodec(widget.imageData);
final frame = await codec.getNextFrame();
_imageSize = Size(frame.image.width.toDouble(), frame.image.height.toDouble());
}
```
### OCR识别服务
```dart
Future recognizeTextFromBytes(Uint8List imageBytes) async {
// 保存为临时文件进行识别
final tempFile = File('${tempDir.path}/temp_image.png');
await tempFile.writeAsBytes(imageBytes);
return await recognizeText(tempFile.path);
}
```
### 智能裁剪
- 使用 `crop_your_image` 库实现
- 支持自由比例裁剪
- 内置手势处理避免冲突
## 安装和运行
1. 确保已安装 Flutter SDK
2. 克隆项目到本地
3. 安装依赖:
```bash
flutter pub get
```
4. 运行应用:
```bash
flutter run
```
## 平台支持
- ✅ Android
- ✅ iOS
- ✅ macOS
- ✅ Windows
- ✅ Linux
- ✅ Web
## 依赖包
```yaml
dependencies:
flutter:
sdk: flutter
camera: ^0.10.5+9
image_picker: ^1.0.7
google_mlkit_text_recognition: ^0.12.0
crop_your_image: ^2.0.0
flutter_easyloading: ^3.0.5
```
## 使用说明
1. **拍照识别**:点击首页的"拍摄"按钮,进入相机页面拍照
2. **相册识别**:点击首页的"相册"按钮,选择图片
3. **调整区域**:在OCR页面中拖拽图片和调整裁剪框
4. **开始识别**:点击AppBar中的OCR按钮进行文字识别
5. **查看结果**:识别结果会在对话框中显示
## 特色功能
- 🎯 **精确裁剪**:支持自由调整裁剪区域,提高识别精度
- 🔄 **实时预览**:裁剪过程中实时预览效果
- 📱 **手势优化**:避免与系统手势冲突
- ⚡ **高效处理**:直接使用Uint8List传递图片数据
- 🎨 **现代UI**:简洁美观的用户界面
## 开发说明
项目采用模块化设计,每个功能都有独立的服务类,便于维护和扩展。OCR识别服务支持多种输入格式,图片裁剪使用专业的第三方库,确保功能的稳定性和用户体验。