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

为何Pytesseract用PSM 12可识别图片文本,PSM 6却不行?

为什么PSM 12比PSM 6更适合你的图片?

先明确Tesseract两种PSM模式的核心定位差异:

  • PSM 6:官方定义为「Assume a single uniform block of text」,它会强制将整个图像视作连续规整的单一文本块处理,不会识别分散的独立文本片段。如果图像文本不符合这个「单一整块」的假设,就会识别失败。
  • PSM 12:官方定义为「Sparse text. Find as much text as possible in no particular order」,专门针对分散、无固定布局的稀疏文本设计,会遍历全图寻找所有独立文本元素,不要求文本有规整排列。

结合你的图片来看:
你的图片中的文本属于分散的稀疏文本(没有形成连续段落或规整块),完全不匹配PSM 6的「单一文本块」假设,所以调用image_to_data时无法检测到内容;而PSM 12正好适配这种场景,因此能完美识别所有文本。

另外你的代码中两种配置仅PSM参数不同(均使用--oem 3默认引擎、取消分页符),排除了其他干扰因素,所以差异完全来自PSM模式的逻辑不同。

你的代码片段:

custom_config_psm12 = r'--oem 3 --psm 12 -c page_separator='''
custom_config_psm6 = r'--oem 3 --psm 6 -c page_separator='''

image_data_table = pytesseract.image_to_data(im,config=custom_config_psm6)  # Doesn't detect anything
image_data_table = pytesseract.image_to_data(im,config=custom_config_psm12) # detects and recognizes text perfectly

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:33:35