我刚刚开始探索pytesseract。我面临的问题是这样的。
我有以下的输入图像
现在,当我试着在上面运行OCR时,我得到了以下输出。
谢谢你的注册 现在你可以选择你喜欢的枕头了。
选项AB
在对多个图像样本进行尝试后,我可以安全地得出以下结论。
即在下面的图像上,我得到了以下输出。
我得到了以下输出
谢谢你的报名。现在你可以挑选你喜欢的枕头了。
选项
本节
选项AB
我想不通我到底是哪里出了问题。这是我使用的代码。
from PIL import Image
import pytesseract
import argparse
import cv2
image = cv2.imread('testImage.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.threshold(gray, 240, 255, cv2.THRESH_BINARY)[1]
filename = "intermediate.png"
cv2.imwrite(filename, gray)
im = Image.open(filename)
text = pytesseract.image_to_string(im)
print(text)
我试着修改了一些配置参数 (crunch_del_min_width, 语言模型_最小复合长度。,和其他一些人)也是,但没有任何帮助。
解决方案在这里找到。Pytesseract OCR的多个配置选项
我的代码原本和你的一样(第1行),我也遇到了同样的错误。对我来说,有效的方法是在配置参数中设置psm=10,允许单字符识别。
代码有时会返回None。
line 1 : text = pytesseract.image_to_string(cropped)
在下一行添加了代码。
line 2 : text = text if text else pytesseract.image_to_string(cropped, config='--psm 10')
第一行将尝试提取句子。如果它成功了,第二行会保持相同的值。然而,如果它返回None,它将寻找单个字符(允许输出较小的单词)。
另外,如果你只是想抓小字。
line 1 : text = pytesseract.image_to_string(cropped, config='--psm 10')