python - 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))”的字符串,它说的是字符串。
我在变量资源管理器中检查了是否在打印“文本”变量之前有正确的文本,并且它有它,所以“背景”中的一切都应该没问题。
现在我在想我可能只是错过了一些我看不到的简单的东西,你能帮我吗?谢谢!:)
解决方案
如评论中所述,您可以解决打印 repr(text) 的问题
print(repr(text))
您会注意到(至少在我的情况下)有很多 \n 和一个 \x0c,这是一种“新页面”转义序列。这些来自 pytesseract 的工作方式。所以解决我发现的问题的更简单方法是通过删除它们
text = text[:-5]
转义序列的数量取决于图像,但您可以创建一个函数来识别和删除它们,例如,从最后开始,您删除找到的每个转义序列。
推荐阅读
- r - 在 R 中执行时间序列 xgboost 时,`mutate()` 输入`index_date` 出现问题
- php - 无法使用 substr 函数在刀片文件中显示原始 html 数据
- mysql - 将外键与父级关联的最佳方法
- c# - 连接到 MSSQL 总是需要 2 秒
- reactjs - React Material 更新 TextInput 值
- django - 如何从 Django Admin 的 response_change 中获取自定义表单字段值?
- mailgun - 如何在测试 mailgun webhook 时取消我的域的垃圾邮件?
- react-native - 有没有办法在 BottomTabNavigator 中隐藏一个项目?
- ajax - Flutter 错误:不支持的操作:Web 上的 Platform._version
- sql-server - hov create ms sql 在多行上触发(如 oracle FOR EACH ROW)