【问题标题】:Python PyTesseract Module returning gibberish from an imagePython PyTesseract 模块从图像中返回乱码
【发布时间】:2021-08-20 20:33:01
【问题描述】:

我猜这是因为我拥有的图片在图片顶部包含文字。 pytesseract.image_to_string() 通常可以正确扫描文本,但它也会返回大量乱码:我猜这是因为文本下方的图片使 Pytesseract 认为它们也是文本或其他东西。

当 Pytesseract 返回一个字符串时,我怎样才能使它不包含任何文本,除非它确定文本是正确的。 比如,如果 Pytesseract 有办法返回某种数字,告诉我文本扫描的准确性如何?

我知道我听起来有点笨,但请有人帮忙

【问题讨论】:

标签: python python-tesseract pytesser


【解决方案1】:

您可以使用config参数设置字符白名单以消除乱码,也可以尝试使用不同的psm选项以获得更好的结果。

不幸的是,这并不容易,我认为唯一的方法是应用一些图像预处理,这是我最好的:

  1. 首先我对平滑应用了一些模糊:
 import cv2
 blurred = cv2.blur(img,(5,5))
  1. 然后删除除文本之外的所有内容,将图像转换为灰度并应用阈值处理以仅获得作为文本颜色的白色(我使用逆阈值处理使文本变为黑色,这是 tesseract ocr 的最佳条件):
gray_blurred=cv2.cvtColor(blurred, cv2.COLOR_BGR2GRAY)
ret,th1 = cv2.threshold(gray_blurred,239,255,cv2.THRESH_BINARY_INV)

并应用 ocr 然后删除空白字符:

txt = pytesseract.image_to_string(th1,lang='eng', config='--psm 12')
txt = txt.replace("\n", " ").replace("\x0c", "")
print(txt)
>>>"WINNING'OLYMPIC  GOLD MEDAL  IT'S MADE OUT OF  RECYCLED ELECTRONICS "

相关主题:

Pytesser set character whitelist

Pytesseract OCR multiple config options

你也可以尝试预处理你的图像,让 pytesseract 工作更准确,如果你想识别有意义的单词,你可以在 ocr 之后应用拼写检查:

https://pypi.org/project/pyspellchecker/

【讨论】:

  • 感谢您的回复。
  • 然而,当我说乱码字符时,它通常是一堆乱码字母数字字符。有什么办法可以让它摆脱像“brfxxcmmdwmnlqw”这样的字符
  • 你能展示一个你应用ocr的图像示例吗?
  • 这是一个例子,我从 reddit 下载了一堆 meme 图片,我想从中提取文本。我不知道他们为什么返回文本以及随机乱码ibb.co/b78qW2x
猜你喜欢
  • 1970-01-01
  • 2021-07-12
  • 2020-05-13
  • 2020-01-15
  • 2010-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多