Python print()使用pytesseract清除控制台

Python print()使用pytesseract清除控制台,python,spyder,Python,Spyder,我根据网页上的教程编写了一个程序来识别图像中的文本,代码非常简单,如下所示 import cv2, pytesseract pytesseract.pytesseract.tesseract_cmd = r'C:\\Program Files\\Tesseract-OCR\\tesseract.exe' img = cv2.imread('test_image.jpeg') text = pytesseract.image_to_string(img)

我根据网页上的教程编写了一个程序来识别图像中的文本,代码非常简单,如下所示

    import cv2, pytesseract
    pytesseract.pytesseract.tesseract_cmd = r'C:\\Program Files\\Tesseract-OCR\\tesseract.exe'

    img = cv2.imread('test_image.jpeg')
    text = pytesseract.image_to_string(img)

    print(text)
    print('done')
其中“test_image.jpeg”是一个图像(带有一些文本),放在保存程序的同一文件夹中

我已经安装了cv2和pytesseract,安装成功,因为它们在已安装的模块列表中

但当我运行程序时,它会清除控制台(在Spyder、Python3.8上工作),并只打印“完成”

我做了一些检查,问题是行“print(text)”,当它运行它时,它会清除控制台。
我尝试使用另一个输出函数sys.stdout.write(text),它也做同样的事情。
我尝试卸载numpy和cv2并重新安装。
我检查了文本是否是带有“print(type(text))”的字符串,结果显示为string。
我在变量管理器中检查了是否在打印“text”变量之前,变量中有正确的文本,并且它有,所以“background”中的所有内容都应该是正常的


现在我想我可能只是错过了一些我看不见的简单的东西,你能帮我吗?谢谢!:)

如评论中所述,您可以解决打印报告(文本)的问题

您可以注意到(至少在我的例子中)有很多\n和一个\x0c,这是一种“新页面”转义序列。这些都来自于pytesseract的工作方式。 因此,解决我发现的问题的更简单方法是通过

    text = text[:-5]

转义序列的数量取决于图像,但您可以创建一个函数来识别和删除它们,例如,从末尾开始,删除找到的每个转义序列。

如果看到其中的内容,
text
可能以一系列换行符或其他一些控制字符结尾。^try
print(repr(text))
,应显示是否存在任何控制字符。如果我没记错的话,tesseract可能会像tevemadar说的那样打印大量的新行。我试过了,是的,有四行\n和一行\x0c,我删除了它们,没关系,谢谢:)。我有一个朋友昨天尝试了相同的代码(在VisualStudio代码中),对他来说效果很好。你知道为什么吗?
    text = text[:-5]