10

我想对即将举行的拍卖中列出的一些房产进行一些分析。不幸的是,进行拍卖的城市并没有以结构化的格式发布信息,而是提供了一份700 多页的 PDF 格式的拍卖房产。

我想知道社区是否对如何将所述 PDF 解析为结构化格式以插入数据库或创建属性电子表格有任何想法。

这是每个页面所代表的图像: 物业指南

这是一个列出一些属性的页面: 属性示例列表

我对 python 和 ruby​​ 很满意,所以编写解决方案的脚本没有任何问题,但是因为“列”和这些列中的数据没有必要捆绑在一起,所以这似乎是一个可疑的提议.

任何想法将不胜感激。

4

2 回答 2

2

在处理了 3 个小时之后,我能够从数据中创建一个可解析的 XML 文档。不幸的是,我没有成功地整理出一套完全可重复使用的步骤,这些步骤可以用于未来的拍卖出版物。

顺便说一句,我确实尝试打电话询问洛杉矶县他们是否可以提供可供拍卖的房产的替代格式(excel等),答案是否定的。那是你的政府。

这是我的方法的高级视图:

我使用http://xmlbeautifier.com/作为我的 XML 美化器/验证器,因为它速度很快,并且可以提供准确的错误报告,包括行号。

使用Homebrew为 Mac 安装 Poppler:

brew install poppler

安装 Poppler 后,您应该可以访问 pdftotext 实用程序来转换 PDF:

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

这是 XML 的预览(单击此处查看完整的 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()

链接到最终 CSV

于 2013-08-21T18:59:29.137 回答
1

使用命令将Xpdf转换为文本pdftotext

我使用以下内容转换了您的文件:

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

此转换使文本完全保持其原始布局(由于-layout选项)。选项-f-l指示要提取的页面范围的第一页和最后一页的页码。

从那里开始,解析应该很简单——第 8 列中的数字表示记录的第一行,空白行结束记录。按照指南在记录中准确定位元素。

于 2013-08-19T21:20:28.827 回答