如何通过 pytesseract 搜索图像中的特定字母/单词
Posted
技术标签:
【中文标题】如何通过 pytesseract 搜索图像中的特定字母/单词【英文标题】:How can i search specific letters / words in image by pytesseract 【发布时间】:2021-12-21 14:08:27 【问题描述】:我正在使用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)
#Detecting Characters
hImg,wImg,_ = img.shape
boxes = pytesseract.image_to_boxes(img)
for b in boxes.splitlines():
print(b)
b = b.split(' ')
print(b)
x,y,w,h = int(b[1]),int(b[2]),int(b[3]),int(b[4])
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)
cv2.imshow('Result',img)
cv2.waitKey(0)
现在我试图从中找出特定的字母,作为回报,程序将提供一个图像,其中只有搜索到的字母会被彩色覆盖。我在代码中所做的编辑是
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? : ")
#Detecting Characters
hImg,wImg,_ = img.shape
boxes = pytesseract.image_to_boxes(img)
search = []
result = []
count = 0
for b in boxes.splitlines():
# print(b)
b = b.split(' ')
#print(b)
x,y,w,h,= int(b[1]),int(b[2]),int(b[3]),int(b[4],)
s = b[0]
search.append(s)
print(search)
for i in range(len(search)):
if search[i] == Q:
result.append(search[i])
count += 1
# else:
# print("Your desired letter is not found")
print(result)
print("Your desired letter which is", Q , "is found", count , "times")
# 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)
#
# cv2.imshow('Result',img)
# cv2.waitKey(0)
我可以找出字母,但我无法将其注入图片。
我想要的程序是,如果我在程序中搜索H
,那么图片将覆盖程序中的所有H
,仅此而已
谁能帮我解决这个问题?
【问题讨论】:
【参考方案1】:我已经解决了这个问题。如果有人想知道,那么修复就在这个循环中-
for b in boxes.splitlines():
if (b[0]== Q):
b = b.split(' ')
x, y, w, h = int(b[1]), int(b[2]), int(b[3]), int(b[4])
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)
【讨论】:
以上是关于如何通过 pytesseract 搜索图像中的特定字母/单词的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 pytesseract 从图像的特定部分提取文本
ruby 通过ruby-opencv搜索整个图像中的特定图像部分