我必须阅读一个包含多列表格的 pdf 文件。使用 iTextSharp 我能够读取文件,但我得到一堆非格式化文本。我无法构造数据以便插入数据库。
有什么建议么?
我必须阅读一个包含多列表格的 pdf 文件。使用 iTextSharp 我能够读取文件,但我得到一堆非格式化文本。我无法构造数据以便插入数据库。
有什么建议么?
除非它的结构化文本没有标记来显示列。像 PdfBox 这样的工具会做出“猜测”来尝试提取表格。
在http://pdf.jpedal.org/java-pdf-blog/bid/12670/PDF-text上有一篇文章解释了为什么文本提取如此困难
我的结论是没有直接的方法可以做到这一点。至少以表格格式读取数据。我尝试了 Mark 提供的建议,但按照我的要求似乎不可行。
如果我理解正确,pdf文本是按位置存储的,所以它没有行或列的概念。这意味着您必须根据您从不同列中读取的“可能性”来使用启发式方法。
您可以通过比较单词之间的空格量来尝试这样做。(我不熟悉 ITextSharp 界面,所以如果我提到它无法做到的事情,请原谅我……我最熟悉 pdfNet。
我刚刚想到的另一个想法是,如果文本有视觉提示,例如分隔列的垂直线。如果是这种情况,您应该能够提出启发式方法来确定文本是在列行的左侧还是右侧。
...
但是,如果可能的话,最好的办法是以对数据库更友好的格式获取数据。从长远来看,这可能会避免心痛。
——杰森