从PDF文件

时间:2016-08-12 11:17:31

标签: c# asp.net pdf itext

我正在将PDF文件中的信息提取为字符串。当将作为pdf中的结构的文本作为表格进行访问时,提取的文本然后被划分为读者跨越行的方式而不是表格行中的单元格。

阅读并搜索了几个小时后,我想得到一些提示,我应该如何处理这个问题,以便以下面显示的方式获得字符串结构?

PDF- table structure

当前字符串:

Difenylmetandiisocyanat 9016-87-9 Acute Tox. 4; H332 >= 10 - < 20 
Skin Irrit. 2; H315 
Eye Irrit. 2; H319 
Resp. Sens. 1; H334 
Skin Sens. 1; H317 
Carc. 2; H351 
STOT SE 3; H335 
STOT RE 2; H373 
4,4'-metylendifenyldiisocyanat 101-68-8 Acute Tox. 4; H332 >= 10 - < 20 
202-966-0 Skin Irrit. 2; H315 
Eye Irrit. 2; H319 
Resp. Sens. 1; H334 
Skin Sens. 1; H317 
Carc. 2; H351 
STOT SE 3; H335 
STOT RE 2; H373 

所需结构:

Difenylmetandiisocyanat 

9016-87-9 

Acute Tox. 4; H332  
Skin Irrit. 2; H315 
Eye Irrit. 2; H319 
Resp. Sens. 1; H334 
Skin Sens. 1; H317 
Carc. 2; H351 
STOT SE 3; H335 
STOT RE 2; H373 

>= 10 - < 20 

4,4'-metylendifenyldiisocyanat 

101-68-8 
202-966-0

Acute Tox. 4; H332 
Skin Irrit. 2; H315 
Eye Irrit. 2; H319 
Resp. Sens. 1; H334 
Skin Sens. 1; H317 
Carc. 2; H351 
STOT SE 3; H335 
STOT RE 2; H373 

>= 10 - < 20 

1 个答案:

答案 0 :(得分:1)

在你的评论中,你说&#34;文件中没有标签&#34;。但是,当我检查文件时,我清楚地看到了结构树:

enter image description here

当标记PDF时,您可以轻松将其转换为XML:

TaggedPdfReaderTool convertor = new TaggedPdfReaderTool();
    convertor.convertToXml(
        new PdfReader("resources/pdfs/sds_w_sv_3.pdf"),
        new FileOutputStream("results/sds_w_sv_3.xml"));

这是生成的XML文件的片段:

<Table>
<TR>
<TH>
<Span></Span>
<P>
Best&#229;ndsdelar
 </P>
</TH>
<TH>
<Span></Span>
<P>
CAS
-
nr.
 </P>
</TH>
<TH>
<Span></Span>
<P>
Kontrollparametrar
 </P>
</TH>
<TH>
<Span></Span>
<P>
Grundval
 </P>
</TH>

此XML是一种类似HTML的结构,允许您将表提取为表。但是,标记PDF的方式一定有问题,因为并非所有PDF中可见的信息都会呈现为XML。

当您点击其中一个第一个标签时,您可以看到这一点:

enter image description here

结构树中第一个<P>(段落)的内容是第40页的AVSNITT 1.前39页的标签发生了什么变化?这是一个糟糕的PDF文件。它说它被标记了,但乍一看它没有被正确标记。您应该要求生成此文件的人正确标记它。没有适当的标签,您将很难以编程方式找到类似于表格的结构。