检测文本时跳过数字的Pytesseract

问题描述 投票:0回答:1

我写了一个简单的Python代码来从一个 形象. 这里的大部分文字都是印地语,但我只关心图像中的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)

这里是 产出.所以只有数字被跳过。有什么办法可以解决这个问题吗?

python opencv tesseract python-tesseract
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.