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

Pytesseract无法识别指定PNG图片文本 提取ishSilver及(SLV)问题咨询

解决思路
  • 补充图像预处理流程
    你当前仅做了图片裁剪操作,目标区域的文字对比度偏低、字号偏小,直接识别准确率差,建议补充以下处理步骤:
    1. 将裁剪后的图像转为灰度图,再通过阈值二值化操作把文字和背景完全分离
    2. 对裁剪后的区域做2-3倍的放大,提升Tesseract对小字号的识别适配性
    3. 可添加简单的中值滤波操作消除图片噪点,避免干扰识别结果
  • 优化Tesseract识别参数
    1. 增加--psm参数指定识别模式,你裁剪后的区域为单行文本,指定psm=7(将图像视为单行文本处理)可以大幅提升准确率
    2. 增加字符白名单限制,你仅需要识别英文字母、括号,通过-c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz()限定识别范围,排除无关字符干扰
  • 验证裁剪范围准确性
    先把裁剪后的im1保存到本地,确认裁剪区域是否完整包含ishSilver (SLV)的全部内容,避免内容被截断导致识别失败
修改后参考代码
from PIL import Image
import pytesseract

pytesseract.pytesseract.tesseract_cmd = r'C:\Tesseract-OCR\tesseract.exe'
im = Image.open('Images/' + '1680.png')
width, height = im.size

# 可微调裁剪范围,避免内容截断
left = width * 0.87
top = 0
right = width
bottom = height 
im1 = im.crop((left, top, right, bottom))

# 图像预处理:放大、转灰度、二值化
im1 = im1.resize((im1.size[0]*3, im1.size[1]*3), Image.Resampling.LANCZOS) # 3倍放大
im1 = im1.convert('L') # 转灰度图
threshold = 127 # 可根据实际图片亮度调整阈值
im1 = im1.point(lambda p: 255 if p > threshold else 0) # 二值化

# 优化识别参数,指定单行模式+字符白名单
custom_config = r'--oem 3 --psm 7 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz()'
text = pytesseract.image_to_string(im1, lang="eng", config=custom_config).strip()
print(text)
print("\n")

ticker = text[text.find("(")+1:text.find(")")]
print(ticker)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 07:45:04