在 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 掉印章的”。

训练数据策略: 我们不需要去收集成千上万张真实的带章执照(涉及隐私)。我们可以 合成数据

  1. 准备 10 万张干净的营业执照背景/文字。
  2. 准备 1000 个不同的电子印章素材(透明背景 PNG)。
  3. 写一个脚本,随机把印章盖在文字上,调节透明度、角度、残缺度。
  4. 这样就有了完美的成对数据:Input (带章) -> Ground Truth (无章)

工程价值: 这种方案能完美还原被遮挡的文字笔画。识别率通常能从传统方案的 70% 提升到 98% 以上

4. 落地策略:级联处理流水线

在 SRM 系统中,我们不需要对每一张图都跑一遍 GAN(太慢,且耗 GPU)。我们需要一个智能的分流策略。

处理流程:

  1. 检测 (Detection):先运行一个轻量级模型(如 YOLO-Nano),检测图中是否存在“印章”目标。
  2. 判断 (Decision)
    • 如果没有印章 -> 直接送入 OCR。
    • 如果有印章,且位置不在关键字段(如在空白处) -> 直接送入 OCR。
    • 如果有印章,且与“注册资本/法人”字段重叠 -> 送入 印章擦除模块
  3. 擦除 (Erasure):运行去印章算法。
  4. 识别 (Recognition):将处理后的“干净图片”送入 OCR 引擎。

5. 总结

在供应链管理中,数据的准确性直接关系到风控和合规。

通过引入 “色彩分离 + GAN 修复” 的组合拳,我们解决的不仅仅是一个图像处理问题,而是 打通了供应商准入自动化的“最后一公里”

这让采购经理不再需要对着屏幕,眯着眼睛去猜那个被红章挡住的数字到底是 6 还是 8。 这就是技术对业务最直接的贡献——把模糊变清晰,把不确定变确定。