4. 影像预处理

保险理赔影像的来源极其分散:客户手机拍照、柜面扫描仪、医院自助机、交警系统导出、第三方公估上传。同一张发票,可能因为拍摄角度、光照、纸张折痕、传真底灰而呈现完全不同的质量。OCR 引擎再强,也无法在严重倾斜、噪点密集、对比度不足的影像上稳定输出字段。影像预处理不是"美化图片",而是把不可控的原始影像,转换为 OCR 与结构化模型可稳定消费的标准化输入。本节围绕去噪、二值化、倾斜校正、裁剪与增强五个环节,讲清原理、参数与保险场景中的取舍。

一、核心原理:预处理是在为 OCR 降低"决策熵"

OCR 的本质是在像素分布上做字符分类。噪声、阴影、倾斜、多余背景都会增加分类器需要处理的变量。预处理的目标是:保留字符笔画的有效高频信息,同时抑制与文字无关的低频干扰和随机噪点。五个环节各自解决一类问题:

  • 去噪:抑制椒盐噪声、压缩伪影、纸张纹理,避免笔画断裂或伪笔画。
  • 二值化:把灰度图转为黑白图,让文字与背景分离,降低后续处理复杂度。
  • 倾斜校正:把旋转的文本行拉回水平,保证行切分和字符切分正确。
  • 裁剪:去除无关边框、手指、桌面背景,减少 OCR 的无效搜索区域。
  • 增强:提升对比度、锐化笔画、修复断裂,改善低质量影像的可读性。
预处理顺序并非固定。经验顺序是:去噪 → 倾斜校正 → 裁剪 → 增强 → 二值化。若先二值化再校正,倾斜校正的投影法会因黑白突变而失稳;若先裁剪再校正,裁剪框可能因倾斜而切掉文字。

二、方法流程与关键参数

下面给出一条可直接落地的处理流水线,适用于发票、病历、事故认定书等常见理赔单证。

输入:原始影像 raw.jpg
1. 灰度化:cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
2. 去噪:cv2.fastNlMeansDenoising(gray, h=10, templateWindowSize=7, searchWindowSize=21)
3. 倾斜校正:霍夫变换检测直线,计算中位角度,仿射旋转
4. 裁剪:基于轮廓/投影的 ROI 提取,保留文字区域
5. 增强:CLAHE 限制对比度自适应直方图均衡,clipLimit=2.0, tileGridSize=(8,8)
6. 二值化:cv2.adaptiveThreshold(..., cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 31, 10)
输出:preprocessed.png

参数选择需要结合影像来源。手机拍照的发票,噪声以光照不均为主,去噪强度不宜过大,否则细笔画会糊;扫描仪影像噪声低,但可能有压缩块效应,适合轻度中值滤波。二值化窗口 blockSize 建议取 25~45 之间的奇数,过小会把纸张纹理当文字,过大则丢失小字号字段。

保险理赔影像预处理流水线 原始影像 拍照/扫描/传真 去噪 抑制椒盐/纹理 倾斜校正 霍夫/投影法 裁剪 ROI 提取 增强 + 二值化 CLAHE / 自适应阈值 各环节对 OCR 的影响 去噪:减少伪笔画 → 降低误识别率 倾斜校正:保证行切分 → 提升字段定位 裁剪:缩小搜索区 → 提升速度 增强:修复断裂笔画 → 提升小字号可读性 二值化:分离文字背景 → 稳定字符分类 保险场景常见参数建议 手机拍照:去噪 h=8~12,CLAHE clipLimit=2.0,二值化 blockSize=31~41 扫描仪:去噪 h=5~8,倾斜校正阈值 0.5°,二值化 blockSize=25~35

三、保险场景案例:医疗发票与事故认定书

案例一:手机拍摄的医疗发票。客户在光线不足的医院走廊拍照,发票整体偏暗,右侧有阴影,纸张有轻微旋转。处理策略:先做 CLAHE 增强提升暗部细节,再用霍夫变换检测发票边框直线,计算倾斜角约 3.2°,仿射旋转校正;随后用轮廓检测裁剪出发票区域,去除桌面背景;最后自适应二值化。OCR 对"金额""日期""发票号"的识别率从 72% 提升到 94%。

案例二:传真件事故认定书。传真件底灰严重,文字边缘模糊,存在椒盐噪声。处理策略:先中值滤波去椒盐,再用非局部均值去噪平滑底灰;由于传真件本身可能倾斜,用投影法统计水平投影,找到文本行峰值后计算角度;增强阶段使用锐化卷积核强化笔画;二值化采用较大 blockSize 避免底灰被误判为文字。最终字段抽取准确率提升约 18 个百分点。

环节 核心方法 关键参数 保险场景注意点
去噪 中值滤波、非局部均值 h=5~12,窗口 3~7 避免过度平滑导致细笔画断裂
二值化 自适应高斯阈值、Otsu blockSize=25~45,C=8~12 底灰重时用大窗口,避免纹理误判
倾斜校正 霍夫变换、投影法、最小外接矩形 角度阈值 0.5°~1° 多栏单证需分栏校正,避免整体旋转
裁剪 轮廓检测、投影切分、边缘检测 面积阈值、长宽比 保留印章、手写批注区域
增强 CLAHE、锐化、Gamma 校正 clipLimit=2.0,tile=8×8 暗光拍照优先 Gamma,低对比优先 CLAHE

四、误区与复盘:预处理不是越"干净"越好

最常见的误区是"把图处理得越干净越好"。过度去噪会抹掉手写签名的笔锋,过度二值化会把红色印章变成黑块,过度裁剪会切掉骑缝章或边缘批注。保险理赔中,印章、签名、手写备注往往与字段同等重要,预处理必须为这些元素保留可辨识度。

复盘时建议关注三类问题:

  1. 参数一刀切:不同来源影像用同一套参数,导致手机拍照过处理、扫描件欠处理。应按来源分桶,分别配置参数。
  2. 顺序错误:先二值化再倾斜校正,投影法失效;先裁剪再校正,文字被切。应遵循"去噪→校正→裁剪→增强→二值化"的稳健顺序。
  3. 缺少质量评估:预处理后没有质量打分,无法判断是否该走人工复核。建议增加清晰度、倾斜角、对比度三个指标,低于阈值直接转人工。
实战建议:把预处理参数做成可配置的 JSON,按"影像来源 + 单证类型"两个维度管理。每次 OCR 失败样本回流时,先看预处理中间图,再决定调参还是换算法。预处理的目标不是让图好看,而是让 OCR 稳定输出可结构化的字段。

总结来说,去噪、二值化、倾斜校正、裁剪与增强是保险影像进入 OCR 前的"标准化车间"。理解每个环节解决什么问题、参数如何随场景变化、哪些元素必须保留,才能让后续的字段抽取和理赔结构化建立在可靠输入之上。