我正在将PDF文件中的信息提取为字符串。当将作为pdf中的结构的文本作为表格进行访问时,提取的文本然后被划分为读者跨越行的方式而不是表格行中的单元格。
阅读并搜索了几个小时后,我想得到一些提示,我应该如何处理这个问题,以便以下面显示的方式获得字符串结构?
当前字符串:
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
答案 0 :(得分:1)
在你的评论中,你说&#34;文件中没有标签&#34;。但是,当我检查文件时,我清楚地看到了结构树:
当标记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å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。
当您点击其中一个第一个标签时,您可以看到这一点:
结构树中第一个<P>
(段落)的内容是第40页的AVSNITT 1.前39页的标签发生了什么变化?这是一个糟糕的PDF文件。它说它被标记了,但乍一看它没有被正确标记。您应该要求生成此文件的人正确标记它。没有适当的标签,您将很难以编程方式找到类似于表格的结构。