成像原理与预处理
本节目标
用可验证的方式理解分辨率、对比度、倾斜和噪声,并避免“一套滤镜处理所有文档”。
像素为何决定字符是否可辨
数字图像是像素网格。字符笔画若只占少量像素,压缩、失焦或缩放会让“8”和“3”的局部差异消失。DPI(dots per inch)描述采集密度,但已有图片中的 DPI 元数据不等于真实清晰度;把 72 DPI 标签改成 300 DPI 不会凭空增加细节。
常见问题与处理假设:
| 问题 | 可观察现象 | 候选处理 | 风险 |
|---|---|---|---|
| 倾斜 | 文本基线不水平 | deskew 旋转校正 | 过度旋转造成插值模糊 |
| 透视 | 页面呈梯形 | 四点透视校正 | 边界估错会裁掉正文 |
| 不均匀照明 | 一侧灰、一侧白 | 局部阈值或背景估计 | 淡色笔画被删除 |
| 椒盐噪声 | 零散黑白点 | 中值滤波、连通域过滤 | 标点被当噪声删掉 |
| 墨迹粘连 | 字符笔画过粗 | 轻度腐蚀 | 细笔画断裂 |
二值化把像素分成前景和背景。全局阈值适合照明均匀的页面;局部阈值按小区域估计,适合阴影,却可能制造纹理噪声。Tesseract 官方质量指南明确把旋转、二值化、噪声、边框等列为影响因素,但这不是要求全部启用。
可回滚实验
每个预处理步骤都应记录 name + parameters + input_hash + output_hash。对同一验证集比较:
原图 -> OCR -> 基线指标
原图 -> 去倾斜 -> OCR -> 新指标
原图 -> 去倾斜 + 局部阈值 -> OCR -> 新指标只在目标文档切片上稳定提升后才上线。肉眼“更干净”不等于 OCR 更准;某些引擎内部已经预处理,外部再次二值化可能损失信息。
排查顺序
- 先把检测框画回原图,确认是“没找到”还是“认错了”。
- 检查方向、裁剪、透明通道和颜色反转。
- 用少量代表样本逐项消融,不一次改五个参数。
- 分文档类型报告效果,例如手机拍照、扫描件、低清传真。
练习与自测
- 为“手机斜拍的票据”设计三组互斥对照实验。
- 解释为什么放大 4 倍可能使文件更大但信息不增加。
- 判断:是否应删除所有小连通域?答案是否定的,因为标点、上标和小字号可能同样很小。
下一步与参考
下一步学习 文字检测、识别与数据标注。参考 Tesseract 官方质量改进指南(5.x 文档主线)(获取日期:2026-07-22)。指南提到的具体阈值和模式需按所用版本实测。