在 SRM 系统中,OCR 的核心任务是 “去噪(Denoising)”。 营业执照本身是黑白分明的,红章就是最大的噪声。解决这个问题的思路,不是训练一个能认识印章的 OCR,而是 先把印章拿掉,还 OCR 一个清清白白的输入。
1. 为什么“红章”是 OCR 的杀手?
标准的 OCR 引擎(如 CRNN, SVTR)在处理图像时,通常会先进行 二值化(Binarization),把图片变成非黑即白。 当红色的印章压在黑色的文字上时,二值化算法(如 Otsu)会因为红色和黑色的灰度值相近,把它们都处理成黑色。 于是,笔画粘连了,字形破坏了,OCR 也就“瞎”了。
2. 方案一:传统 CV 的“色彩分离术” (HSV Color Filtering)
这是最经典、最快、算力成本最低的方案。适用于 80% 的常规场景。
核心原理: RGB 颜色空间对“红色”的界定不直观。我们需要把图片转到 HSV (Hue, Saturation, Value) 颜色空间。 在 HSV 空间里,红色的 Hue(色相)范围非常固定(通常在 0-10 和 156-180 之间)。
工程实现 (Python + OpenCV):
局限性: 这种方法是“杀敌一千,自损八百”。它把红色像素变成了白色。如果印章盖得太实,底下的黑字也会断裂(Stroke Disconnection),导致 OCR 识别出残缺的字。
3. 方案二:进阶版的“印章擦除 GAN” (Stamp Removal Network)
针对“印章盖死文字”的极端场景,我们需要用到深度学习中的 GAN (生成对抗网络) 技术。 这里的 GAN 扮演的是一个 “高级修图师” 的角色。
模型架构 (Pix2Pix 或 CycleGAN):
- Generator (生成器):输入一张“带印章的图”,输出一张“无印章的图”。它负责“脑补”被印章遮挡的黑色笔画。
- Discriminator (判别器):负责判断这张图是“真的没印章”还是“P 掉印章的”。
训练数据策略: 我们不需要去收集成千上万张真实的带章执照(涉及隐私)。我们可以 合成数据:
- 准备 10 万张干净的营业执照背景/文字。
- 准备 1000 个不同的电子印章素材(透明背景 PNG)。
- 写一个脚本,随机把印章盖在文字上,调节透明度、角度、残缺度。
- 这样就有了完美的成对数据:
Input (带章)->Ground Truth (无章)。
工程价值: 这种方案能完美还原被遮挡的文字笔画。识别率通常能从传统方案的 70% 提升到 98% 以上。
4. 落地策略:级联处理流水线
在 SRM 系统中,我们不需要对每一张图都跑一遍 GAN(太慢,且耗 GPU)。我们需要一个智能的分流策略。
处理流程:
- 检测 (Detection):先运行一个轻量级模型(如 YOLO-Nano),检测图中是否存在“印章”目标。
- 判断 (Decision):
- 如果没有印章 -> 直接送入 OCR。
- 如果有印章,且位置不在关键字段(如在空白处) -> 直接送入 OCR。
- 如果有印章,且与“注册资本/法人”字段重叠 -> 送入 印章擦除模块。
- 擦除 (Erasure):运行去印章算法。
- 识别 (Recognition):将处理后的“干净图片”送入 OCR 引擎。
5. 总结
在供应链管理中,数据的准确性直接关系到风控和合规。
通过引入 “色彩分离 + GAN 修复” 的组合拳,我们解决的不仅仅是一个图像处理问题,而是 打通了供应商准入自动化的“最后一公里”。
这让采购经理不再需要对着屏幕,眯着眼睛去猜那个被红章挡住的数字到底是 6 还是 8。 这就是技术对业务最直接的贡献——把模糊变清晰,把不确定变确定。