Python Tesseract OCR无法识别指定图像文本的问题求助
testimg.png:
我尝试识别该图像中的文本,但毫无结果;对其他文本的识别效果也极差,部分单词会被随机字符替换,必须对照词表才能得到正确内容。
这是我要识别文本的图像,我已尝试使用Tesseract进行灰度化、反转等多种预处理操作,但均无效果,始终无法识别出文本。请问该如何解决或训练模型?
当前代码:
pyautogui.screenshot("testimg.png", region=(1050, 30, 455, 50)) #name originalImage = cv2.imread('testimg.png') # Convert the image to grayscale grayImage = cv2.cvtColor(originalImage, cv2.COLOR_BGR2GRAY) # Apply a threshold to get a binary image (_, blackAndWhiteImage) = cv2.threshold(grayImage, 127, 255, cv2.THRESH_BINARY_INV) custom_config = r'--psm 7' text = pytesseract.image_to_string(blackAndWhiteImage, config=custom_config) print('Extracted Text: ', text)
解决文本识别问题的方案
一、优化图像预处理
- 替换固定阈值为自适应阈值:固定阈值127无法适配局部明暗差异,改用自适应阈值能精准调整:
blackAndWhiteImage = cv2.adaptiveThreshold(grayImage, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2) - 添加降噪步骤:若图像存在噪点,先做高斯模糊处理:
blurred = cv2.GaussianBlur(grayImage, (3,3), 0) - 形态学增强文本边缘:用闭运算填补文本缝隙,强化字符轮廓:
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (2,2)) processedImage = cv2.morphologyEx(blackAndWhiteImage, cv2.MORPH_CLOSE, kernel)
二、调整Tesseract识别配置
- 切换PSM模式:--psm 7仅适用于单行文本,若布局复杂,可尝试--psm 6(单块文本假设)或--psm 3(自动布局检测)。
- 限定字符集与语言:针对英文文本,指定语言并限定识别字符范围,减少随机错误:
custom_config = r'--psm 6 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' text = pytesseract.image_to_string(processedImage, lang='eng', config=custom_config)
三、模型微调(上述方法无效时)
- 准备训练样本:收集至少几百张和目标图像风格、字体一致的文本图像,手动标注对应字符,生成Tesseract要求的
.box和.tif格式文件。 - 基于现有模型微调:使用Tesseract的训练套件(如tesstrain),以官方英文模型为基础,针对你的特定文本样式进行微调训练。
- 注意样本覆盖:确保样本包含所有可能出现的字符、字号和排版场景,提升模型适配性。
内容的提问来源于stack exchange,提问作者philM
相关产品推荐
相关产品推荐

