首页 > 解决方案 > print() 使用 pytesseract 清除控制台

问题描述

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

    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,Python 3.8 上工作),它只是打印“完成”。

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

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

标签: pythonspyder

解决方案


如评论中所述,您可以解决打印 repr(text) 的问题

    print(repr(text))

您会注意到(至少在我的情况下)有很多 \n 和一个 \x0c,这是一种“新页面”转义序列。这些来自 pytesseract 的工作方式。所以解决我发现的问题的更简单方法是通过删除它们

    text = text[:-5]

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


推荐阅读