确定,
如何对元素树文本进行排序?目标是pdf到包含行和列的数据框架。听起来很容易。我知道市场上有转换器。
我使用pdfminer3k将麻烦的pdf转换为xml,因为xml具有pdf上每个字符的起始和结束网格坐标。我最初的想法是将所有坐标与标题起点和终点坐标进行比较,以便识别正确的文本框边界。由于带有文本选项的pdfminer3k有时会解析每一行,有时会以不同的顺序解析每个列,而不会看到任何模式。我已经尝试配置字间距,边距,行间距和段落间距的选项无济于事。 xml示例:
<?xml version="1.0" encoding="utf-8" ?>
<pages>
<page id="1" bbox="0.000,0.000,792.000,612.000" rotate="0">
<textbox id="0" bbox="321.290,593.640,473.325,604.680">
<textline bbox="321.290,593.640,473.325,604.680">
<text font="ABCDEE+Tahoma-Bold" bbox="321.290,594.214,328.534,604.478"
size="10.264">B</text>
<text font="ABCDEE+Tahoma-Bold" bbox="328.492,594.214,335.250,604.478"
size="10.264">u</text>
<text font="ABCDEE+Tahoma-Bold" bbox="335.208,594.214,341.850,604.478"
size="10.264">d</text>
<text font="ABCDEE+Tahoma-Bold" bbox="341.808,594.214,348.450,604.478"
size="10.264">g</text>
<text font="ABCDEE+Tahoma-Bold" bbox="348.408,594.214,354.681,604.478"
size="10.264">e</text>
<text font="ABCDEE+Tahoma-Bold" bbox="354.649,594.214,359.042,604.478"
size="10.264">t</text>
<text font="ABCDEE+Tahoma-Bold" bbox="359.074,594.214,362.168,604.478"
size="10.264"> </text>
目标是在嵌套字典中使用相应的atrribute重新创建单词Budget,并为整个文件执行此操作,转换为数据框并制作一些图表。
Pdfminer xml生成器创建层次结构页面 - &gt; page-&gt; textbox-&gt; textline-&gt;文本作为元素类型。
当我使用生成器迭代页面并深入到文本行元素时,我使用理解来获取文本行内容,但是,它们将被返回未分类。
def iter_docs(page):
page_attr = page.attrib
for tl in page.iter('textline'):
tl_dict = page_attr.copy()
tl_dict.update(tl.attrib)
unsorted_list = {tlc.text for tlc in tl if type(tlc) is Element}
#print(unsorted_list)
#sorted_list = sorted(unsorted_list.items(),
#operator.itemgetter(str))
#tl_dict['text'] = sorted_list
tl_dict['text'] = {''.join(l) for l in tl.itertext()}
yield tl_dict
def iter_pages(etree):
for page in etree.iter('page'):
for row in iter_docs(page):
yield row
这是从main ....
调用的etree = ET.parse(fname)
holder = iter_pages(etree.getroot())
doc_df = pd.DataFrame(list(holder))
#all_text_lines = etree.findall('//text')
#print (all_text_lines)
#text_df = pd.DataFrame(iter_p(all_text_lines))
print (doc_df)
从数据框中给出......
文本
0 {e,b,P,E,d,i,y,c,\ n,u,g,B,o,j,...
应阅读预算执行