我猜这是因为我拥有的图像在图片顶部包含文本。pytesseract.image_to_string() 通常可以正确扫描文本,但它也会返回大量乱码:我猜这是因为文本下方的图片使 Pytesseract 认为它们也是文本或其他东西。
当 Pytesseract 返回一个字符串时,我怎样才能使它不包含任何文本,除非它确定文本是正确的。就像,如果 Pytesseract 有办法也返回某种数字,告诉我如何准确地扫描文本?
我知道我听起来有点笨但有人请帮忙
我猜这是因为我拥有的图像在图片顶部包含文本。pytesseract.image_to_string() 通常可以正确扫描文本,但它也会返回大量乱码:我猜这是因为文本下方的图片使 Pytesseract 认为它们也是文本或其他东西。
当 Pytesseract 返回一个字符串时,我怎样才能使它不包含任何文本,除非它确定文本是正确的。就像,如果 Pytesseract 有办法也返回某种数字,告诉我如何准确地扫描文本?
我知道我听起来有点笨但有人请帮忙
您可以使用 config 参数设置字符白名单以消除乱码,也可以尝试使用不同的 psm 选项以获得更好的结果。
不幸的是,这并不容易,我认为唯一的方法是应用一些图像预处理,这是我最好的:
import cv2
blurred = cv2.blur(img,(5,5))
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 "
相关话题:
您还可以尝试预处理您的图像,让 pytesseract 工作更准确,如果您想识别有意义的单词,您可以在 ocr 之后应用拼写检查: