1. 图像预处理
图像预处理是 OCR 系统的第一道环节,旨在将原始图像标准化以提升后续识别精度。主要操作包括:
- 二值化:采用自适应阈值算法(如 Otsu 算法)将灰度图像转换为黑白二值图,消除光照不均的影响
- 去噪处理:应用高斯滤波或双边滤波消除椒盐噪声,结合形态学运算修复文字笔画断裂
- 倾斜校正:采用霍夫变换检测文本行倾斜角度,通过仿射变换实现自动校正
- 对比度增强:通过直方图均衡化或 CLAHE 算法增强文字与背景的对比度
2. 文本检测
文本检测解决"文字在哪里"的问题,即在图像中定位包含文字的区域。传统方法使用连通域分析(如 MSER 算法),现代深度学习模型包括:
- CTPN(Connectionist Text Proposal Network):基于 CNN+RNN 的文本检测网络,通过垂直锚点机制定位文字
- EAST(Efficient and Accurate Scene Text Detector):端到端无锚点检测框架,支持多角度文本检测
- DBNet(Differentiable Binarization Network):可微分二值化的端到端检测,能处理任意形状文本
3. 字符识别
字符识别将检测到的文字区域转换为具体字符序列。主流架构包括:
- CRNN(CNN+RNN+CTC):CNN 提取图像特征,RNN 建模字符序列,CTC 解决输入输出长度不一致问题
- Transformer 架构:如 TrOCR,通过自注意力机制捕捉字符间依赖关系,支持长文本和复杂字体识别
- 注意力机制:引导模型聚焦关键区域,提升手写体和模糊文本的识别效果
4. 后处理优化
后处理环节对识别结果进行校正和优化:
- 语言模型纠错:结合 N-gram 统计语言模型或 BERT 等预训练模型修正拼写错误
- 格式标准化:统一日期、金额等字段的输出格式
- 版面恢复:保留原文档的段落结构和阅读顺序
- 置信度评估:通过 softmax 输出概率阈值过滤低质量结果