Computer vision 如何获取tesseract读取的线坐标?
有没有办法用tesseract逐行读取图像并获得直线的坐标?通常,我可以读取每个单词tesseract返回字典,我可以获得所有位置,但没有线坐标选项?我使用psm 6逐行阅读,但即使我使用它,我也会收到word的坐标Computer vision 如何获取tesseract读取的线坐标?,computer-vision,tesseract,python-tesseract,Computer Vision,Tesseract,Python Tesseract,有没有办法用tesseract逐行读取图像并获得直线的坐标?通常,我可以读取每个单词tesseract返回字典,我可以获得所有位置,但没有线坐标选项?我使用psm 6逐行阅读,但即使我使用它,我也会收到word的坐标 d = pytesseract.image_to_data(img, lang="eng", output_type=Output.DICT) 您可以将属于每一行的单词组合在一起,并从最左侧和最右侧的单词边界框中找到“行”边界框。 下面是将每一行的单词组合在一起的python实现
d = pytesseract.image_to_data(img, lang="eng", output_type=Output.DICT)
您可以将属于每一行的单词组合在一起,并从最左侧和最右侧的单词边界框中找到“行”边界框。 下面是将每一行的单词组合在一起的python实现
text = pytesseract.image_to_data(img, lang="eng", output_type=Output.DICT)
data = {}
for i in range(len(text['line_num'])):
txt = text['text'][i]
block_num = text['block_num'][i]
line_num = text['line_num'][i]
top, left = text['top'][i], text['left'][i]
width, height = text['width'][i], text['height'][i]
if not (txt == '' or txt.isspace()):
tup = (txt, left, top, width, height)
if block_num in data:
if line_num in data[block_num]:
data[block_num][line_num].append(tup)
else:
data[block_num][line_num] = [tup]
else:
data[block_num] = {}
data[block_num][line_num] = [tup]
linedata = {}
idx = 0
for _, b in data.items():
for _, l in b.items():
linedata[idx] = l
idx += 1
line_idx = 1
for _, line in linedata.items():
xmin, ymin = line[0][1], line[0][2]
xmax, ymax = (line[-1][1] + line[-1][3]), (line[-1][2] + line[-1][4])
print("Line {} : {}, {}, {}, {}".format(line_idx, xmin, ymin, xmax, ymax))
line_idx += 1
您可以将属于每一行的单词组合在一起,并从最左侧和最右侧的单词边界框中找到“行”边界框。 下面是将每一行的单词组合在一起的python实现
text = pytesseract.image_to_data(img, lang="eng", output_type=Output.DICT)
data = {}
for i in range(len(text['line_num'])):
txt = text['text'][i]
block_num = text['block_num'][i]
line_num = text['line_num'][i]
top, left = text['top'][i], text['left'][i]
width, height = text['width'][i], text['height'][i]
if not (txt == '' or txt.isspace()):
tup = (txt, left, top, width, height)
if block_num in data:
if line_num in data[block_num]:
data[block_num][line_num].append(tup)
else:
data[block_num][line_num] = [tup]
else:
data[block_num] = {}
data[block_num][line_num] = [tup]
linedata = {}
idx = 0
for _, b in data.items():
for _, l in b.items():
linedata[idx] = l
idx += 1
line_idx = 1
for _, line in linedata.items():
xmin, ymin = line[0][1], line[0][2]
xmax, ymax = (line[-1][1] + line[-1][3]), (line[-1][2] + line[-1][4])
print("Line {} : {}, {}, {}, {}".format(line_idx, xmin, ymin, xmax, ymax))
line_idx += 1
谢谢你的回答,我们有线和坐标。现在我需要达到特定的索引值,是由tesseract在字典中给出的,哪一行有特定的索引这些行是按照从上到下的顺序排序的,因此你可以在特定的索引中找到这些行。我的意思是,当我从tesseract作为字典得到结果时,每个单词都有一个索引<代码>[我想在代码创建的行中找到索引。它可以在任何行中。感谢你的回答flamelite,我们有行和坐标。现在我需要达到特定的索引值是由tesseract在字典中给出的,哪一行有特定的索引。这些行按从上到下的顺序排序,因此你可以找到l具体索引处的ines实际上我的意思是,当我从tesseract as dictionary得到结果时,每个单词都有一个索引;
['','','','“GDA”、“Sanayi”、“ve”、“Ticaret”、“A.Ş”、“A”、“O”、“A”、“Kazım”、“Karabekir”、“Cd.No:4”、“J”、“B.mükellefler”、“V.D.470002607”、“Belge”、“No:”、“、”、“、”、“、”、”、“、”、“、”、”、“、”、”、”、”、“
在该dic中,例如4个索引,如“GDA”我想在代码创建的行中找到索引。它可以在任何行中。