如何用pytesseract搜索图片指定字符并仅高亮标注匹配结果
你代码的问题在于只保存了识别到的字符内容,没有同步记录每个字符对应的坐标位置,就算匹配到目标字符也找不到标注位置。不需要拆分两次循环,直接在遍历识别结果的环节同步做匹配和标注就行,修改后的完整代码如下:
import cv2 import pytesseract pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files\\Tesseract-OCR\\tesseract.exe' img = cv2.imread('testing.png') img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) Q = input("Which letter do you want to find? : ") # 检测字符 hImg,wImg,_ = img.shape boxes = pytesseract.image_to_boxes(img) count = 0 for b in boxes.splitlines(): b = b.split(' ') x,y,w,h = int(b[1]),int(b[2]),int(b[3]),int(b[4]) s = b[0] # 匹配到目标字符才标注、计数 if s == Q: count += 1 cv2.rectangle(img,(x,hImg-y),(w,hImg-h),(0,0,255),1) cv2.putText(img,b[0],(x,hImg-y+20),cv2.FONT_HERSHEY_COMPLEX,0.5,(0,0,255),1) print(f"你搜索的字符 {Q} 共出现 {count} 次") cv2.imshow('Result',img) cv2.waitKey(0) # 如果需要保存标注后的图片可以加下面这行 # cv2.imwrite('result.png', cv2.cvtColor(img, cv2.COLOR_RGB2BGR))
如果需要不区分大小写匹配,把判断条件改成if s.upper() == Q.upper()即可。
内容的提问来源于stack exchange,提问作者Shahadat Nayeem
相关产品推荐
相关产品推荐

