2

我必须阅读一个包含多列表格的 pdf 文件。使用 iTextSharp 我能够读取文件,但我得到一堆非格式化文本。我无法构造数据以便插入数据库。

有什么建议么?

4

3 回答 3

1

除非它的结构化文本没有标记来显示列。像 PdfBox 这样的工具会做出“猜测”来尝试提取表格。

在http://pdf.jpedal.org/java-pdf-blog/bid/12670/PDF-text上有一篇文章解释了为什么文本提取如此困难

于 2009-11-26T08:40:26.343 回答
0

我的结论是没有直接的方法可以做到这一点。至少以表格格式读取数据。我尝试了 Mark 提供的建议,但按照我的要求似乎不可行。

于 2009-12-02T14:35:17.270 回答
0

如果我理解正确,pdf文本是按位置存储的,所以它没有行或列的概念。这意味着您必须根据您从不同列中读取的“可能性”来使用启发式方法。

您可以通过比较单词之间的空格量来尝试这样做。(我不熟悉 ITextSharp 界面,所以如果我提到它无法做到的事情,请原谅我……我最熟悉 pdfNet。

我刚刚想到的另一个想法是,如果文本有视觉提示,例如分隔列的垂直线。如果是这种情况,您应该能够提出启发式方法来确定文本是在列行的左侧还是右侧。

...

但是,如果可能的话,最好的办法是以对数据库更友好的格式获取数据。从长远来看,这可能会避免心痛。

——杰森

于 2009-11-26T03:08:19.273 回答