【问题标题】:Reading PDF file to get tabular data in structured format,读取 PDF 文件以获取结构化格式的表格数据,
【发布时间】:2009-11-25 13:47:26
【问题描述】:

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

有什么建议吗?

【问题讨论】:

  • 一般来说,从 PDF 文件中读取数据是困难且容易出错的。当您说“我能够读取文件”时,您到底是什么意思?你在使用 PdfReader 类吗?
  • 是的。我正在使用 PdfReader 读取文件。但它完全分散了。由于数据在表格中,我无法正确读取。

标签: c# pdf itextsharp file-read


【解决方案1】:

除非其结构化文本没有标记来显示列。 PdfBox 等工具会通过“猜测”来尝试提取表格。

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

【讨论】:

    【解决方案2】:

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

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

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

    ...

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

    -- 杰森

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-27
        • 1970-01-01
        • 1970-01-01
        • 2019-06-09
        • 1970-01-01
        • 1970-01-01
        • 2017-08-06
        • 2020-12-28
        相关资源
        最近更新 更多