You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于OpenCV的OCR图像清洗:如何识别文档红黑文本

优化建议

1. 针对红色固定文本:从颜色通道入手提取

直接转灰度会完全丢失红色的色彩特征,这是你当前识别红色文本困难的核心原因。建议用HSV色彩空间分离红色区域:

  • HSV对颜色的区分度远高于RGB,红色在HSV中分为两段区间(0-10和170-180),可以精准生成红色掩码
  • 配合形态学操作(膨胀+腐蚀)消除噪点,强化红色文本的轮廓

示例代码:

import cv2
import numpy as np

img = cv2.imread("your_document.jpg")
# 转换为HSV色彩空间
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 定义红色的HSV范围(可根据实际文档微调饱和度/亮度阈值)
lower_red_1 = np.array([0, 120, 60])
upper_red_1 = np.array([10, 255, 255])
lower_red_2 = np.array([170, 120, 60])
upper_red_2 = np.array([180, 255, 255])

# 生成红色区域掩码
mask_red_part1 = cv2.inRange(hsv_img, lower_red_1, upper_red_1)
mask_red_part2 = cv2.inRange(hsv_img, lower_red_2, upper_red_2)
red_mask = cv2.bitwise_or(mask_red_part1, mask_red_part2)

# 形态学操作优化掩码:先膨胀补全文本间隙,再腐蚀去除噪点
kernel = np.ones((2, 2), np.uint8)
red_mask = cv2.dilate(red_mask, kernel, iterations=1)
red_mask = cv2.erode(red_mask, kernel, iterations=1)

# 提取红色文本区域
red_text_area = cv2.bitwise_and(img, img, mask=red_mask)

2. 针对黑色变量文本:优化灰度阈值流程

黑色文本在灰度图中区分度较高,但直接阈值容易受噪点干扰,建议增加预处理步骤:

  • 先做高斯模糊减少文档中的斑点噪点
  • 再用自适应阈值或OTSU自动阈值,替代手动调整level参数

示例代码:

# 处理黑色变量文本
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 高斯模糊去噪
blurred_gray = cv2.GaussianBlur(gray_img, (3, 3), 0)
# OTSU自动阈值(无需手动调level)
_, black_text_thresh = cv2.threshold(blurred_gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)

3. 合并双文本区域,定位目标字段

将红色固定文本和黑色变量文本的二值图合并,再通过轮廓检测或模板匹配定位目标区域:

  1. 把红色文本区域转灰度后生成二值图,和黑色文本二值图合并
  2. 用红色固定文本(如「N°」「Texte」)作为模板,通过模板匹配找到其坐标
  3. 根据固定文本的位置,截取旁边的变量文本区域,后续用OCR(如Tesseract)提取内容

合并代码示例:

# 红色文本转灰度并生成二值图
red_gray = cv2.cvtColor(red_text_area, cv2.COLOR_BGR2GRAY)
_, red_text_thresh = cv2.threshold(red_gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
# 合并红色和黑色文本的二值图
combined_text_thresh = cv2.bitwise_or(red_text_thresh, black_text_thresh)

4. 额外优化点

  • 如果文档存在倾斜,先用霍夫直线变换矫正图像,避免文本错位
  • 对裁剪后的变量文本区域,再做一次小幅度的形态学膨胀,强化字符轮廓,提升OCR准确率

内容的提问来源于stack exchange,提问作者Medestrac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 21:17:26