ITADN

[OCR Phase3] 实现 OCR 专有数据集微调

#2379Openmessere1 创建于 2026-01-06
M
messere1commented
## 任务描述 在 OCR 专有数据集上微调 Qwen2-VL 模型,提升特定场景(如表格、公式、手写体)的识别精度。 **关联主 Issue**: #2348 Phase 3: 模型微调与优化 ## 任务目标 - [ ] 准备 OCR 微调数据集(包括数据标注和格式转换) - [ ] 实现 LoRA/QLoRA 微调脚本 - [ ] 实现全参数微调脚本(可选) - [ ] 实现模型评估和对比流程 - [ ] 提供微调最佳实践文档 ## 技术方案 ### 1. 数据集准备 **数据来源**: - 公开数据集:ICDAR 2015, SROIE, FUNSD, DocVQA - 合成数据集:使用 TextRenderer 生成 - 自定义数据集:业务场景数据(营业执照、身份证、发票等) **数据格式**: ```json { "image": "path/to/image.jpg", "conversations": [ { "role": "user", "content": "<image>\n请识别图像中的所有文字" }, { "role": "assistant", "content": "识别结果:..." } ] } ``` **数据规模**: - 训练集:10,000+ 样本 - 验证集:2,000+ 样本 - 测试集:2,000+ 样本 ### 2. LoRA 微调 - 使用 PEFT 库实现 LoRA - 微调参数:q_proj, v_proj, k_proj, o_proj - LoRA rank: 8-64(根据任务复杂度调整) - LoRA alpha: 16-128 - Learning rate: 1e-4 ~ 5e-4 ### 3. QLoRA 微调(低资源场景) - 4-bit 量化 + LoRA - 适用于显存 < 24GB 场景 - 使用 bitsandbytes 实现 ### 4. 全参数微调(可选) - 仅在大规模数据集(100K+)时使用 - 需要分布式训练支持 - Learning rate: 1e-5 ~ 5e-5 ### 5. 训练配置 - Batch size: 4-8 per GPU - Gradient accumulation: 4-8 steps - Epochs: 3-10 - Warmup ratio: 0.1 - Weight decay: 0.01 - Max length: 2048 tokens ## 测试要求 ### 数据集测试 - [ ] 验证数据集加载正常 - [ ] 检查数据分布和质量 - [ ] 测试数据增强效果 ### 训练测试 - [ ] 测试 LoRA 微调流程 - [ ] 测试 QLoRA 微调流程 - [ ] 测试分布式训练(多卡) - [ ] 测试训练过程中的 checkpoint 保存和恢复 ### 评估测试 - [ ] 在验证集上评估模型性能 - [ ] 计算 CER (Character Error Rate) - [ ] 计算 WER (Word Error Rate) - [ ] 对比微调前后的精度提升 ### 场景测试 - [ ] 表格识别精度测试 - [ ] 公式识别精度测试 - [ ] 手写体识别精度测试 - [ ] 多语言混合文本测试 ## 验收标准 - ✅ LoRA 微调在目标数据集上 CER 降低 20% 以上 - ✅ 表格识别精度提升至 95% 以上 - ✅ 公式识别精度提升至 90% 以上 - ✅ 提供完整的训练和评估脚本 - ✅ 提供微调模型权重和配置文件 - ✅ 提供详细的微调文档和最佳实践 ## 依赖项 - peft >= 0.7.0 (LoRA 实现) - bitsandbytes >= 0.41.0 (QLoRA 量化) - datasets (数据加载) - accelerate (分布式训练) ## 数据集资源 - [ICDAR 2015](https://rrc.cvc.uab.es/?ch=4) - [SROIE](https://rrc.cvc.uab.es/?ch=13) - [FUNSD](https://guillaumejaume.github.io/FUNSD/) - [DocVQA](https://www.docvqa.org/) ## 优先级 **P1** - 重要功能,提升特定场景的识别精度 ## 预计工时 10-15 天(包括数据准备)
0 条评论