Pytesseract 在检测文本时跳过数字

Pytesseract skipping numbers while detecting text

我写了一个简单的 python 代码来从 image 中获取文本。这里的大部分文字是印地语,但我唯一关心的文字是图像中的 12 位数字“5485 5000 8000”。 这是我写的代码:

import cv2
import pytesseract

img = cv2.imread('Aadhar-Card.jpg',0)
text = pytesseract.image_to_data(img,lang='eng', config='--psm 13 --oem 3 -c tessedit_char_whitelist=0123456789')
print(text)
h, w = img.shape
boxes = pytesseract.image_to_boxes(img) 
for b in boxes.splitlines():
    b = b.split(' ')
    img1 = cv2.rectangle(img, (int(b[1]), h - int(b[2])), (int(b[3]), h - int(b[4])), (0, 255, 0), 2)

cv2.imshow('img', img)
cv2.waitKey(0)

这里是 output。 所以数字是唯一被跳过的东西。有什么办法可以解决这个问题吗?

您可以先裁剪感兴趣的部分(数字区域),然后执行OCR。

import cv2
import pytesseract

img = cv2.imread('Aadhar-Card.jpg',0)
crop_img = img[173:173+30, 117:117+150]
strNum = pytesseract.image_to_string(crop_img, config='--psm 13 --oem 3 -c tessedit_char_whitelist=0123456789')
print(strNum)
cv2.imshow("cropped", crop_img)
cv2.waitKey(0)