2013-08-19 10 views
7

今後のオークションに掲載されているいくつかのプロパティについて分析したいと思います。残念なことに、オークションを運営する市は、情報を構造化された形式で公開するのではなく、オークションのためにプロパティの700+ page PDFを提供します。PDFを構造化形式に変換する方法のお勧めをお探しの場合

DBに挿入するための構造化された書式に前記PDFを解析する方法や、プロパティのスプレッドシートを作成する方法について、コミュニティが考えているかどうかは疑問です。ここで

は、各ページが何を表すかの画像です: Property Guide

そしてここではいくつかのプロパティを表示するページがあります: Sample List of Properties

私はすべての問題を持っていないので、私は、PythonとRubyで快適ですスクリプトを記述することができますが、それらの列のデータと列は必ずしも結びついている必要はないので、これは疑わしい提案であるようです。

アイデアをいただければ幸いです。

+0

私の考えは、テキストコンバータにPDFファイルを使用して、(Aコンバータはあなたに予測可能な出力形式を与えると仮定して)テキストファイルを解析することであろう。 –

+0

さて、私は試しました。私が試したルビープロジェクト(https://github.com/kitplummer/pdftohtmlr)があり、それはジャンクを吐き出す。 – doremi

+0

テキストはどうですか?それはhtmlのように見えます。 –

答えて

1

Xpdfのコマンドでpdftotextを使用してテキストに変換します。

私は次のようにあなたのファイルを変換:

pdftottext.exe -layout -f 23 -l 510 AuctionBook2013.pdf AuctionBook2013.txt 

をこの変換は正確(-layoutオプションによる)その元のレイアウト内のテキストを残します。オプション-f-lは、抽出するページ範囲の最初と最後のページ番号を示します。

そこから、構文解析は単純でなければなりません。列8の数字はレコードの最初の行を示し、空白行はレコードを終了します。レコード内の要素の正確な配置については、ガイドに従ってください。

1

これを3時間ぐるぐる回して、データから解析可能なXML文書を作成することができました。残念ながら、私は将来のオークションの出版物に使用できる、完全に再利用可能な一連のステップをまとめて失敗しました。

私は、オークション(エクセルなど)のための代替フォーマットを提供できるかどうかを電話してロサンゼルス郡に尋ねましたが、回答はノーでした。それはあなたのための政府です。ここで

は私のアプローチの高レベルのビューです:

  • はクリーンアップとデータ
  • からXMLノードを作成するためにPoppler
  • 使用正規表現fooのを使用してテキストファイルにPDFに変換します
  • Python/ruby​​を使用してGoogleマップリンクノードを追加し、LA郡アセスメントマップ(http://assessormap.co.la.ca.us/mapping/rolldata.asp?ain=APN-GOES_HERE)と
  • へのリンクを使用してくださいルビー

とCSVへ

  • の変換のXMLそれが速かったので、私は私のXMLのビューティ/バリデータとしてhttp://xmlbeautifier.com/を使用し、それは行番号を含む正確なエラー報告を与えました。

    Mac用にPopplerをインストールするために使用Homebrewは:にPopplerがインストールされている

    brew install poppler 
    

    した後、あなたはPDFを変換するpdftotextユーティリティへのアクセス権を持っている必要があります。

    pdftotext -layout -f 24 -l 687 AuctionBook2013.pdf auction_book.txt 
    

    ここではXMLのプレビューがあります(Click here for full XML):

    <?xml version="1.0" encoding="UTF-8"?> 
    <listings> 
        <item id="1"> 
         <nsb>536</nsb> 
         <minbid>3,422</minbid> 
         <apn>2006 003 001</apn> 
         <delinquent_year>03</delinquent_year> 
         <apn_old>2006 003 001</apn_old> 
         <description>LICENSED SURVEYOR'S MAP 
          AS PER BK 25 PG 28 OF L S LOT 1    
          BLK 1 ASSESSED TO J AND S 
          LIMITED LLC C/O DUNA CSARDAS - 
          JULIUS JANCSO LOCATION COUNTY OF 
          LOS ANGELES</description> 
         <address>VACANT LOT</address> 
        </item> 
    

    編集:Rubyを追加してXMLをCSVに変換しました。

    require 'rexml/document' 
    require 'CSV' 
    
    class Auction 
    
        def initialize 
    
        f = File.new('AuctionBook2013.xml', 'r') 
        doc = REXML::Document.new(f) 
    
        CSV.open("auction.csv", "w+b") do |csv| 
         csv << ['id', 'minbid', 'apn', 'delinquent_year', 'apn_old', 'description', 'address'] 
    
         doc.elements.each('/listings/item') do |item| 
         csv << [item.attributes['id'], 
           item.elements['minbid'].text, 
           item.elements['apn'].text, 
           item.elements['delinquent_year'].text, 
           item.elements['apn_old'].text, 
           item.elements['description'].text, 
           item.elements['address'].text] 
         end 
        end 
        end 
    end 
    
    a = Auction.new() 
    

    Link to Final CSV

  • 関連する問題