使用pytesseract提取文本遇多余空格,配置后触发文件未找到错误
解决pytesseract提取文本多余空格及临时文件找不到的问题
先修正基础代码语法错误
你原代码里把lang和config参数传给了Image.open(),这是错误的——这两个参数属于pytesseract.image_to_string()方法,正确的基础代码应该是:
from PIL import Image import pytesseract text = pytesseract.image_to_string(Image.open(img), lang='deu', config='--psm 2')
语法错误可能会引发后续不可预期的文件操作问题。
解决多余空格问题
方案1:调整Tesseract通用配置参数
如果tosp_min_sane_kn_sp参数引发错误,大概率是你的Tesseract版本不支持该参数,或者参数名拼写有误。可以改用更通用的空格控制参数:
# 将图像视为单一均匀文本块,同时抑制多余空格 text = pytesseract.image_to_string(Image.open(img), lang='deu', config='--psm 6 -c preserve_interword_spaces=0')
--psm 6更适合提取连续单词类文本;preserve_interword_spaces=0会自动移除不必要的空格。
方案2:提取后手动清理空格
如果配置参数调整无效,直接对提取后的文本做字符串处理:
import re text = pytesseract.image_to_string(Image.open(img), lang='deu', config='--psm 2') # 移除所有空格(适合Aditya这类无空格的连续单词) cleaned_text = ''.join(text.split()) # 或替换多个连续空格为单个空格(适合含正常空格的文本) cleaned_text = re.sub(r'\s+', ' ', text).strip()
解决FileNotFoundError问题
这个错误通常由以下原因导致,对应解决方式:
- 检查Tesseract版本,确保使用的参数在当前版本中存在(可通过
tesseract --version查看版本,对照官方文档确认参数兼容性) - 确认Python进程有读写系统临时目录(
C:\Users\adi\AppData\Local\Temp)的权限 - 放弃使用可能存在版本兼容问题的小众参数,改用上述通用方案
内容的提问来源于stack exchange,提问作者Aditya sharma
相关产品推荐
相关产品推荐

