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

使用pytesseract提取图片中带框数字失败,求解决方案

解决pytesseract数字识别不准确的问题

针对你遇到的数字识别乱码问题,可以通过图像预处理和配置tesseract识别参数来优化效果,以下是具体方案:

1. 图像预处理

OCR对高对比度的黑白图像识别精度更高,先对原图做灰度化、二值化和降噪处理:

  • 灰度化:将彩色图转为灰度图,减少色彩干扰
  • 二值化:把图像转为黑白两色,突出文字轮廓
  • 降噪:去除图像中的杂点,提升文字清晰度

2. 限定识别字符范围

指定tesseract只识别数字和目标符号([]:-),避免识别无关字符。

3. 调整识别模式(PSM)

使用合适的页面分割模式(PSM),让tesseract更准确地匹配文本结构。

修改后的代码

import pytesseract
import cv2

pytesseract.pytesseract.tesseract_cmd = 'folder/tesseract.exe'
img = cv2.imread("folder/test_image.png")

# 图像预处理流程
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转灰度图
# 二值化(可根据图片实际亮度调整阈值,这里用OTSU自动适配)
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
denoised = cv2.medianBlur(thresh, 3)  # 中值降噪

# 自定义tesseract配置:限定字符集+指定识别模式
custom_config = r'--oem 3 --psm 6 -c tessedit_char_whitelist=[]0123456789:-'
text = pytesseract.image_to_string(denoised, config=custom_config)

print(text.strip())

关键参数说明

  • --oem 3:使用默认的OCR引擎模式
  • --psm 6:假设图像为单一均匀文本块,适配你的目标内容格式
  • tessedit_char_whitelist:严格限定识别的字符集,过滤无关干扰字符

如果效果仍不理想,可以尝试调整二值化阈值,或者更换PSM模式(比如--psm 8针对单个字符区域,--psm 10针对独立单个字符)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 08:36:22