2009-07-07 27 views
6

私の会社は外部企業からExcelを介してデータを受け取ります。これをSQL Serverにエクスポートして、データに関するレポートを実行します。彼らは現在、PDF形式に変わりつつあります.PDFのデータを確実に移植し、SQL Server 2008データベースに挿入する方法はありますか?PDFからデータを抽出する方法は?

これはアプリを書く必要がありますか、これを行う自動化された方法がありますか?

+0

正確な答えはここにありませんが、Fermin、抽出するツールはありますか? – CallMeLaNN

+1

@CallMeLaNN - 私の会社はデータを提供する第三者と契約を結んだので、最終的にこれを行うために何かを書く必要はありませんでした。 – Fermin

答えて

4

すべては、データがPDF内にどのように含まれているかによって異なります。一般に、ここには2つの可能なシナリオがあります:

  1. データはPDF内の単なるテキストオブジェクトです。ツールを使用してPDFからテキストを抽出し、それをデータベースに挿入する必要があります。

  2. データはPDFのフォームフィールドに含まれています。ツールを使用してフォームフィールドからデータを抽出し、データベースに挿入する必要があります。

シナリオ#2が当てはまるのは、これが正確にPDFフォームが設​​計されているためです。シナリオ#1は、あなたが他のオプションを持っていない場合にだけ使用するハックです。 PDFからプレーンテキストを抽出することは、予想通り簡単で正確ではありません。

PDFフォームを受け取っている場合は、PDFフォームの右側のフィールドとデータベースの対応するフィールドを一致させてからデータを吸い上げるだけです。独自のアプリケーションを作成した場合、このプロセスは完全に自動化できます。

これはアプリや を書くことが必要となる これを行うための自動化された方法はありますか?

はい、いずれのオプションもアプリを作成するかアプリを購入する必要があります。独自のアプリケーションを作成する場合は、フォームフィールドからのデータの取得やPDFからのテキストの抽出をサポートするサードパーティのPDFライブラリを見つける必要があります。ItextSharpを使用して

0

私はこのためのアプリケーションを書かなければならないと思います。この質問はextracting data from PDFについて語ります。この後、既存のインポートフォーマットを保存できるように、データをExcel形式にエクスポートできます。

0

PDFからのデータの「スクレイピング」に関する情報を探します。私はAdobeに、単純なテキストでこれを可能にするいくつかのツールがあると思うが、私はそれらを使用していない。

誠に申し訳ございませんが、私はあなたのベンダーの未加工フォーマットでこのデータを取得するためにできることは何でもしようとします。

5

すでに言及したように、は、これを行うアプリを書く必要がありますが、PDFを処理するのではなく、外部の会社から生データを取得できるのが理想的です。

あなたはは、PDFからデータを抽出したいん場合は、私はiTextを使用して、それは非常に強力であることがわかってきた、信頼性の高い そして最も重要な - 無料 。それはJavaと.Netのフレーバーで来る - iTextSharpは.Net版です。それはあなたがプログラムでPDF文書を操作することを可能にし、あなたが書いたアプリケーションにPDFの内容を公開するでしょう。

+2

itext/itextsharpバージョン5.0以降は無料です – Bobrovsky

1

、次の操作を行い

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()); 
    } 
3

免責事項:

ちょうどPDFからテキストデータを抽出するためのいくつかの追加現実のシナリオを共有したいと思った私はByteScout PDF Extractor SDKツールのメーカーと提携しています:

  1. 検索可能なテキストのスキャンされた画像:OCRエンジンで処理する必要があります(フリーTesseract Googleから)
  2. XFA forms:これは主にAdobeツールでサポートされているPDFのサブセットです。しかし、データは、iTextSharpまたは同様のツールのような低レベルのPDF処理ツールを使用してXMLデータとして抽出することができます。間違っていくつかのPDFジェネレータによってコード
  3. テキスト(とOCRエンジンを経由して復元することができます(thisのようなツールを用いて抽出することができます)XMLファイルとして添付フォームデータのコピーを持つだけでPDF文書である
  4. ZUGFeRD PDFファイルいくつかの許容誤差率)。
関連する問題