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

OpenCV阈值处理后如何实现文档全部文字白底黑字适配OCR需求?

阈值处理后统一为白底黑字的实现方案

核心逻辑是二值化后统计像素占比,自动判断是否需要翻转图像:

  • 正常白底黑字的文档中,白色像素占比必然高于黑色像素
  • 若白色像素占比低于50%,说明当前图像为黑底白字状态,调用像素翻转接口即可得到白底黑字效果

实现代码

import cv2
import numpy as np

def thresholding(image):
    # 二值化处理,可替换为OTSU自动阈值避免手动调参
    binary = cv2.threshold(image, 120, 255, cv2.THRESH_BINARY)[1]
    # 计算白色像素占比
    total_pixels = binary.shape[0] * binary.shape[1]
    white_ratio = np.sum(binary == 255) / total_pixels
    # 黑底白字场景下翻转图像
    if white_ratio < 0.5:
        binary = cv2.bitwise_not(binary)
    return binary

优化建议

如果需要适配不同亮度、不同背景的扫描文档,可以将固定阈值替换为OTSU自动阈值,无需手动调整阈值参数,处理鲁棒性更高:

# OTSU自动阈值版本
binary = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]

如果文档存在局部深色背景的黑底白字区块,可以结合轮廓检测、局部阈值处理实现分区域翻转,适配更复杂的文档场景。
处理后的图像完全符合OCR识别的白底黑字输入要求,可直接传入识别接口使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:27:07