如何使用opencv和PyteSeract python提取文本?
我正在使用labelImg在图像行上绘制一个矩形。这给了我xml文件。在这个xml的帮助下,如何从图像表中提取文本。为了提取文本,我使用了水平线和垂直线检测,但没有得到很好的结果。现在我正在使用labelImg,它给了我想要提取的文本的点,但我不知道如何应用这个方法。请告诉我如何做 我的xml文件:如何使用opencv和PyteSeract python提取文本?,python,opencv,python-tesseract,image-preprocessing,labelimg,Python,Opencv,Python Tesseract,Image Preprocessing,Labelimg,我正在使用labelImg在图像行上绘制一个矩形。这给了我xml文件。在这个xml的帮助下,如何从图像表中提取文本。为了提取文本,我使用了水平线和垂直线检测,但没有得到很好的结果。现在我正在使用labelImg,它给了我想要提取的文本的点,但我不知道如何应用这个方法。请告诉我如何做 我的xml文件: <annotation> <folder>Test Images</folder> <filename>FreKa.j
<annotation>
<folder>Test Images</folder>
<filename>FreKa.jpg</filename>
<path>/home/sumit/Desktop/office_works/Fusion_Code/BIS_Final/Test Images/FreKa.jpg</path>
<source>
<database>Unknown</database>
</source>
<size>
<width>679</width>
<height>341</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>Contact Type</name>
<pose>Unspecified</pose>
<truncated>1</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>1</xmin>
<ymin>100</ymin>
<xmax>678</xmax>
<ymax>157</ymax>
</bndbox>
</object>
</annotation>
如何借助xml文件从表中提取合同类型?
感谢…获得xmin
您可以将xpath()
与'//annotation/object/bndbox/xmin'
或更短的'//xmin'
它总是给出列表(即使只有一个元素或没有元素),所以它需要[0]
来获取第一个元素,或者来使用所有元素
使用if list of elements:…
只能在列表中包含某些元素时运行代码
您还可以使用len()
检查得到的元素数量
text = '''
<annotation>
<folder>Test Images</folder>
<filename>FreKa.jpg</filename>
<path>/home/sumit/Desktop/office_works/Fusion_Code/BIS_Final/Test Images/FreKa.jpg</path>
<source>
<database>Unknown</database>
</source>
<size>
<width>679</width>
<height>341</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>Contact Type</name>
<pose>Unspecified</pose>
<truncated>1</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>1</xmin>
<ymin>100</ymin>
<xmax>678</xmax>
<ymax>157</ymax>
</bndbox>
</object>
</annotation>
'''
import lxml.etree
tree = lxml.etree.fromstring(text)
print('xmin:', tree.xpath("//annotation/object/bndbox/xmin")[0].text)
print('xmin:', tree.xpath("//bndbox/xmin")[0].text)
print('xmin:', tree.xpath("//object//xmin")[0].text)
print('xmin:', tree.xpath("//xmin")[0].text)
print('xmin:', tree.xpath("//xmin/text()")[0]) # with `text()` instead of `.text`
for item in tree.xpath("//xmin/text()"):
print('xmin:', item) # with `text()` instead of `.text`
objects = tree.xpath("//object")
print('len(objects):', len(objects))
other = tree.xpath("//bndbox/other")
if other:
print('found', len(other), 'elements')
else:
print('there is no "other" elements')
text=''
测试图像
FreKa.jpg
/主页/sumit/桌面/办公室工作/融合代码/最终/测试图像/FreKa.jpg
不为人知
679
341
3.
0
接触式
未指明
1.
0
1.
100
678
157
'''
导入lxml.etree
tree=lxml.etree.fromstring(文本)
print('xmin:',tree.xpath(“//annotation/object/bndbox/xmin”)[0].text)
打印('xmin:',tree.xpath(“//bndbox/xmin”)[0].text)
打印('xmin:',tree.xpath(“//object//xmin”)[0].text)
打印('xmin:',tree.xpath(“//xmin”)[0].text)
打印('xmin:',tree.xpath(“//xmin/text()”)[0])#时使用'text()'而不是'.text'`
对于tree.xpath(“//xmin/text()”)中的项:
打印('xmin:',item)#使用'text()'而不是'.text'`
objects=tree.xpath(“//对象”)
打印('len(对象):',len(对象))
other=tree.xpath(“//bndbox/other”)
如果其他:
打印('found',len(其他),'elements')
其他:
打印('没有“其他”元素')
您希望获取xml中的哪个值?您可以在模块lxml
中使用xpath()
,也可以使用regex-re.findall(“(\d+”),text)
在xml的帮助下提取图像的第三行。您能告诉我如何获取对象名称(如合同、合同描述等)吗使用xml?如果您的意思是
,那么//annotation/object
应该为您提供包含所有
的列表,然后您可以使用len(包含对象的列表)
。或者你也可以使用//注释/对象/名称
-它应该给你所有名称的列表,你可以使用len(名称列表)
Hi@furas,你能告诉我如何计算边界框内的行数吗,这些行数由一些单词(印地语)填充?我不知道我是否理解这个问题:首先,您必须将方框转换为字符串,然后您必须检查是否有一些印地语字符。或者检查是否有与英语字符不同的字符-可能更简单。