如何从PDF中提取数据?

时间:2009-07-07 11:05:00

标签: sql-server-2008 pdf extraction

我的公司通过Excel从外部公司接收数据。我们将其导出到SQL Server以运行数据报告。它们现在正在改为PDF格式,有没有办法可靠地从PDF中移植数据并将其插入我们的SQL Server 2008数据库?

这是否需要编写应用程序,或者是否有自动执行此操作的方式?

6 个答案:

答案 0 :(得分:5)

如前所述 - 必须编写应用程序才能执行此操作,但理想情况下,您可以从外部公司获取原始数据,而不必处理PDF。

但是,如果您想要从PDF中提取数据,我使用iText 并发现它非常强大,可靠,最重要的是 - 免费。它有Java和.Net风格 - iTextSharp是.Net版本。它允许您以编程方式操作PDF文档,它会将PDF的内容暴露给您编写的应用程序。

答案 1 :(得分:4)

这完全取决于他们如何在PDF中包含数据。一般来说,这里有两种可能的情况:

  1. 数据只是PDF中的文本对象。您需要使用工具从PDF中提取文本,然后将其插入数据库。

  2. 数据包含在PDF格式的表单字段中。您需要使用工具从表单字段中提取数据并将其插入数据库。

  3. 希望情景#2适用于您,因为这正是PDF表单的设计目标。场景#1实际上只是一个你只能使用的黑客,如果你没有任何其他选择。从PDF中提取纯文本并不像您期望的那样简单或准确。

    如果您收到PDF表单,那么您需要做的就是将PDF表单中的正确字段与数据库中的相应字段匹配,然后填入数据。如果您编写自己的应用程序,则此过程可以完全自动化。

      

    这需要编写应用程序或   是否有自动化的方式   此?

    是的,这两个选项都需要编写应用程序或购买应用程序。如果您编写自己的应用程序,则需要找到支持从表单字段检索数据或从PDF中提取文本的第三方PDF库。

答案 2 :(得分:3)

免责声明:我与ByteScout PDF Extractor SDK工具

的制造商有联系

只想分享一些从PDF中提取文本数据的其他现实场景:

  1. 没有可搜索文本的扫描图像:应由OCR引擎处理(如Google的免费Tesseract
  2. XFA forms:它是PDF的子集,主要由Adobe工具支持。但是,可以使用低级PDF处理工具(如iTextSharp或类似工具)将数据提取为XML数据。
  3. ZUGFeRD PDF文件只是PDF文档,其中包含作为XML文件附加的表单数据的副本(可以使用this等工具提取)
  4. 某些PDF生成器错误地编码了文本(可以通过OCR引擎恢复,但有一些可接受的错误率)。

答案 3 :(得分:1)

使用ItextSharp,执行以下操作

using System;
using System.Configuration;
using System.Data.SqlClient;
using System.IO;
using System.Text;
using iTextSharp.text.pdf;

   protected void BtnSubmit_Click(object sender, EventArgs e)
        {
            String FilePath = @"GetFilePath";
            StringBuilder sb = new StringBuilder();

            PdfReader reader = new PdfReader(FilePath);           
            PdfStamper myStamp = new PdfStamper(reader, new FileStream(FilePath + "_TMP",    FileMode.Create));
            AcroFields form = myStamp.AcroFields;

            if (form.GetField("GetFieldIdFromPDF") != null)
               sb.Append(form.GetField("GetFieldIdFromPDF").ToString());
   }

答案 4 :(得分:0)

我认为你必须为此编写一个应用程序。这个问题谈到了extracting data from PDF。在此之后,您可以将数据导出为Excel格式,以便保留现有的导入格式。

答案 5 :(得分:0)

查找有关“刮取”PDF中数据的信息。我相信Adobe有一些工具允许你为简单的文本做这个,但我没有使用它们。

老实说,我会尝试尽一切可能从您的供应商那里以原始格式获取这些数据。