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

如何配置Tesseract提取图片中带框的全部数字?

Tesseract识别带框数字的优化技巧
  • 强化图像预处理
    仅放大不足以抵消框线干扰,建议结合以下操作:

    1. 二值化:将图像转为纯黑白,最大化数字与背景、框线的对比度,比如把数字和框线转为黑色,背景设为白色(或根据实际反转)。
    2. 形态学去噪:用开运算(先腐蚀后膨胀)去除图像中的小噪点,同时保留数字的完整性。
    3. 框线弱化:如果框线干扰严重,可通过水平线/垂直线检测定位框线后擦除,或调整阈值让框线与背景融合。
      示例预处理代码(Python+OpenCV):
    import cv2
    # 读取灰度图
    img = cv2.imread("带框数字.png", cv2.IMREAD_GRAYSCALE)
    # 二值化(反转成黑底白字,适配Tesseract默认识别逻辑)
    _, binary_img = cv2.threshold(img, 150, 255, cv2.THRESH_BINARY_INV)
    # 开运算去噪
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (2, 2))
    processed_img = cv2.morphologyEx(binary_img, cv2.MORPH_OPEN, kernel)
    # 保存处理后的图像
    cv2.imwrite("processed_digits.png", processed_img)
    
  • 精准设置Tesseract参数
    针对单框单数字的场景,推荐组合以下参数,无需盲目遍历所有PSM模式:

    tesseract processed_digits.png output --oem 3 --psm 10 -c tessedit_char_whitelist=0123456789 -c textord_min_xheight=30
    

    参数说明:

    • --oem 3:启用混合OCR引擎(传统+LSTM),适配特殊字符样式
    • --psm 10:单字符识别模式,匹配每个框内仅一个数字的场景
    • tessedit_char_whitelist=0123456789:严格限制识别范围为数字,减少干扰
    • textord_min_xheight=30:根据放大后数字的实际高度调整,过滤过小的噪点区域
  • 分割单个字符后识别
    利用OpenCV检测每个数字框的轮廓,将图像裁剪为单个数字的小图,再逐一用PSM 10模式识别:

    1. 通过边缘检测或轮廓查找定位所有数字框
    2. 按轮廓坐标裁剪每个数字区域
    3. 对每个小图单独执行Tesseract识别
      这种方式能彻底避免框线和相邻数字的干扰。
  • 训练自定义字库
    如果以上方法都无效,可针对带框数字训练专属字库:

    1. 准备10-20张带标注的带框数字样本(每个数字至少3-5个样本)
    2. 用Tesseract的tesstrain工具生成自定义.traineddata字库
    3. 识别时指定自定义字库:tesseract img.png output -l custom --psm 10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:57:15