Pytesseract在检测文本时跳过数字

时间:2020-05-23 04:06:15

标签: python opencv tesseract python-tesseract

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

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。 因此,数字是唯一被跳过的东西。有什么办法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以先裁剪感兴趣的部分(数字区域),然后实施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)