2026 山东大学软件学院项目实训博客(八)OCR功能优化与完善
一、实训时间
2026年6月8日 - 2026年6月12日
二、阶段工作目标
对OCR识别功能进行全面优化,提升识别速度、完善提示词策略、优化前端展示效果、修复遗留Bug,使OCR功能达到生产可用状态。
三、识别速度优化
(一)模型选择与测试
通过curl命令行测试多个豆包模型的响应速度:
curl https://ark.cn-beijing.volces.com/api/v3/chat/completions \ -H "Authorization: Bearer $API_KEY" \ -d "{\"model\": \"doubao-seed-2-0-lite-260215\", \"messages\": [{\"role\": \"user\", \"content\": \"你好\"}]}"
测试结果对比
|
模型 |
响应速度 |
准确度 |
选用 |
|---|---|---|---|
|
doubao-seed-2-0-pro-260215 |
慢 |
⭐⭐⭐⭐⭐ |
❌ |
|
doubao-seed-2-0-lite-260215 |
中 |
⭐⭐⭐⭐ |
❌ |
|
doubao-seed-2-0-mini-260428 |
较快 |
⭐⭐⭐⭐ |
✅ 最终选用 |
最终选择doubao-seed-2-0-mini-260428作为默认模型,在速度和准确度间取得最佳平衡。
(二)图片压缩参数优化
|
优化项 |
优化前 |
优化后 |
效果 |
|---|---|---|---|
|
最大宽度 |
1000px |
400px |
图片尺寸减少60% |
|
JPEG质量 |
0.5 |
0.3 |
文件大小再减40% |
|
压缩阈值 |
50KB |
30KB |
更小图片也压缩 |
|
最终大小 |
100-200KB |
30-60KB |
传输时间减60% |
(三)提示词精简
第一步提示词优化
✏️ 优化前: "你是一个专业的OCR识别助手。请仔细识别图片中的文字内容,自动判断文字排版方向..."
优化后: "直接输出图片中的文字内容,保留原文的断句和换行,不要任何解释。"
第二步提示词优化
✏️ 优化前: 大段系统提示词 + 详细格式说明
优化后: 极简JSON格式要求 + "用大白话翻译(像朋友聊天一样通俗易懂)"
优化效果: 总耗时从30-50秒降至15-35秒,减少约50%。
四、识别质量提升
(一)大白话翻译
提示词从"现代文翻译"改为"用大白话翻译(像朋友聊天一样通俗易懂)"。
效果对比
|
优化前 |
优化后 |
|---|---|
|
怀素籍贯长沙,自幼侍奉佛法 |
怀素是长沙人,小时候就当了和尚 |
(二)标点符号自动添加
在第二步JSON格式中新增originalTextWithPunctuation字段,要求模型为无标点古文添加标点。
效果对比
|
优化前 |
优化后 |
|---|---|
|
天地玄黄宇宙洪荒日月盈昃辰宿列张 |
天地玄黄,宇宙洪荒。日月盈昃,辰宿列张。 |
(三)断句保留
第一步提示词增加"保留原文的断句和换行",前端CSS使用white-space: pre-wrap保留换行符,使识别结果保持原有段落结构。
五、前端体验优化
(一)图片对照展示
在结果对话框中增加左侧图片展示区域(占40%宽度),与右侧原文形成左右对照。图片使用el-image组件,支持点击放大预览(preview-teleported)。
(二)实时状态细化
将处理状态从简单的"处理中"细化为:
-
PROCESSING:显示"识别原文中...",进度0-45%
-
ORIGINAL_READY:显示"翻译生成中...",进度60-90%
-
COMPLETED:显示"已完成",进度100%
每个状态对应不同的loading文案和进度条颜色。
(三)按钮对齐修复
.action-buttons { display: flex; align-items: center; justify-content: center; gap: 6px; white-space: nowrap; }
(四)空值保护
全面添加null安全检查:
-
record.originalFileName || '-':表格显示 -
currentOCR.originalFileName || '未知':对话框 -
const file = uploadForm.value.file:上传前保存引用
六、Bug修复清单
|
问题 |
代码层面原因 |
修复方案 |
|---|---|---|
|
401认证失败 |
@ConfigurationProperties(prefix = "ocr")读取不到ocr.api.key |
改为prefix = "ocr.api" |
|
图片接口403 |
SecurityConfig未放行GET请求 |
添加.antMatchers(HttpMethod.GET, "/api/ocr/image/**").permitAll() |
|
error_message溢出 |
@Column默认VARCHAR(255) |
截断500字符 + 数据库ALTER TABLE改为TEXT |
|
翻译内容挤在一起 |
vocabArr解析异常导致整个try-catch失败 |
各字段独立getStr,单字段失败不影响其他 |
|
按钮不对齐 |
el-button直接放el-table-column中 |
外层div + flex容器 |
|
Cannot read properties of null |
uploadForm.value.file.name在resetUploadForm()后为null |
上传前const file = uploadForm.value.file保存引用 |
七、阶段项目成果
(一)性能优化成果
-
识别速度提升50%:总耗时从30-50秒降至15-25秒
-
模型升级:从Lite版升级到Mini版,速度更快,精度不降
-
图片压缩优化:传输体积减少70%,API响应更快
-
提示词精简:减少冗余指令,提升AI处理效率
(二)体验优化成果
-
大白话翻译:翻译更接地气,用户更容易理解
-
自动加标点:无标点古文自动断句,阅读体验大幅提升
-
图片对照:左右分栏展示,原文与图片对照查看
-
细化状态:多阶段进度展示,用户感知更清晰
(三)Bug修复成果
-
修复认证、权限、字段溢出等6个影响稳定性的Bug
-
全面添加null安全检查,系统鲁棒性大幅提升
-
修复UI布局问题,视觉体验更统一
八、阶段总结与后续规划
(一)阶段总结
在6月8日至6月12日的实训周期内,我对OCR功能进行了全面优化与完善。通过模型选型优化、图片压缩参数调优、提示词精简等手段,将识别速度提升了约50%;通过大白话翻译、自动标点添加、图片对照展示等优化,大幅提升了用户体验;同时修复了认证、权限、字段溢出等6个影响稳定性的Bug。目前OCR功能已达到生产可用状态,能够稳定、高效地完成古籍、碑帖、书法等各类图片文档的识别与结构化输出任务。
(二)下一步工作计划
-
增加用户反馈机制,持续优化提示词策略
-
集成手写体识别模型,扩展应用场景
-
进一步完善历史轨迹和OCR两个模块
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)