











档案里的印章几乎无处不在:公文红头章、合同骑缝章、证明文件公章、签发页印章……印章经常恰好盖在正文文字上。这带来两个问题:
客户不会因为盖章就不要求识别——他们问的就是"这段被章盖住的字到底写了什么"。这篇讲讲我们评估过的三条技术路线,以及为什么最终选了"部分放弃"。
思路:印章是红色,正文是黑色(或深蓝)。RGB 通道上,红章在 R 通道高、G/B 低;黑字三个通道都低。只要按颜色分离,就能把章"去掉"再识别。
import cv2
import numpy as np
def separate_red_seal(img_bgr):
"""分离出红色印章区域"""
b, g, r = cv2.split(img_bgr)
# 红色判定:R 明显高于 G 和 B
red_mask = (r.astype(int) - g.astype(int) > 40) & \
(r.astype(int) - b.astype(int) > 40) & \
(r > 100)
# 黑色文字:三个通道都低
dark_mask = (r < 100) & (g < 100) & (b < 100)
# 去掉红色后的"正文图":把红章区域置为白
img_no_seal = img_bgr.copy()
img_no_seal[red_mask] = (255, 255, 255)
# 只保留深色文字的"文字图"
text_only = np.zeros_like(img_bgr)
text_only[dark_mask] = (255, 255, 255)
return img_no_seal, red_mask, dark_mask
优点:简单、快、不依赖模型,能解决 60%~70% 的"章字分离"问题——只要印章和正文颜色可区分。
问题:
思路:先定位印章区域,然后把"红黑混合区"视为缺失,用 inpaint 根据周围文字笔画重建。
def restore_text_under_seal(img, red_mask):
"""尝试重建被印章遮挡的文字"""
# 1. 膨胀印章区域,把边缘混合像素也包进来
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (7, 7))
seal_area = cv2.dilate(red_mask.astype(np.uint8), kernel)
# 2. 印章区域内"既非纯红也非纯黑"的像素 = 遮挡区
b, g, r = cv2.split(img)
dark = (r < 100) & (g < 100) & (b < 100)
mixed = seal_area.astype(bool) & ~dark
# 3. 用周围内容 inpaint 重建
mask = mixed.astype(np.uint8) * 255
restored = cv2.inpaint(img, mask, 5, cv2.INPAINT_TELEA)
return restored
评估结果:在文字笔画轮廓清晰的印章上有效,但大面积深色印章下方几乎重建不出原文——inpaint 是"猜",猜出来的笔画常常是错的,甚至"补"出本来不存在的字。对档案这种"内容必须真实"的场景,猜出来的文字是绝对不能用的。
最终方案不是"完美重建被遮挡文字",而是分层处理 + 明确告诉客户哪里识别不了:
第一层:能分离的先分离。 颜色通道分离(路线一)解决 60%~70%。
第二层:印章本身也要识别。 印章内容(单位名称、日期、编号)本身就是档案信息的一部分,我们用"印章识别模型"(圆形/椭圆印章的弧形文字展开识别)把章的内容单独提出来——章是信息不是噪声。
第三层:遮挡区标记 + 人工补录。 对真正的"文字被章完全盖住、无法可靠识别"的区域:
[印章遮挡,待人工补录];这样做的理由,也是我们想对所有做档案系统的团队说的:
档案数字化的第一原则是"真实",不是"完整"。 宁可明确标注"此处无法自动识别",也不允许 OCR 或图像处理"猜"出一个可能错误的字混入数据。一个错字进入档案检索库,比十个"待补录"标记危害大得多。
| 方案 | 遮挡区可读率 | 错误补字率 | 处理耗时 |
|---|---|---|---|
| 仅颜色分离 | 61% | 0%(不处理遮挡区) | 60ms |
| 颜色分离 + inpaint 重建 | 78% | 11%(补错字) | 520ms |
| 分层方案(分离+章识别+人工标记) | 76% | 0%(不猜字) | 300ms |
结论:inpaint 把可读率从 61% 提到 78%,但代价是 11% 的错误补字率——这个代价在档案场景不可接受。分层方案的"可读率 76%"(分离 + 章识别补充)+ "零错误补字"的组合,才是生产可用的。
如果你在做档案数字化系统,遇到盖章遮挡:
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。